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]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&]uh1j hjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM ubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhM ubh)}(hhh]h desc_sig_name)}(h device_nodeh]h device_node}(hj2hhhNhNubah}(h]h ]nah"]h$]h&]uh1j0hj-ubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetj4modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jO ASTIdentifier)}jJof_find_all_nodessbc.of_find_all_nodesasbuh1hhjhhhjhM ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhM ubhdesc_sig_punctuation)}(h*h]h*}(hjmhhhNhNubah}(h]h ]pah"]h$]h&]uh1jkhjhhhjhM ubh desc_name)}(hof_find_all_nodesh]j1)}(hjZh]hof_find_all_nodes}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j|hjhhhjhM ubhdesc_parameterlist)}(h(struct device_node *prev)h]hdesc_parameter)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jXc.of_find_all_nodesasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhjhM ubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhjhM hhhhubh desc_content)}(hhh]h paragraph)}(hGet next node in global listh]hGet next node in global list}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj+hhubah}(h]h ]h"]h$]h&]uh1j)hhhhhjhM ubeh}(h]h ](jHfunctioneh"]h$]h&]domainjHobjtypejHdesctypejHnoindex noindexentrynocontentsentryuh1hhhhhhNhNubh 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](j/)}(h**Parameters**h]hstrong)}(hjZh]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjXubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjTubhdefinition_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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjyubh definition)}(hhh]j/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjtubah}(h]h ]h"]h$]h&]uh1jrhjTubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjTubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(of_machine_compatible_match (C function)c.of_machine_compatible_matchhNtauh1hhhhhhNhNubh)}(hhh](h)}(h=bool of_machine_compatible_match (const char *const *compats)h]j)}(hubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(h3Test root of device tree against a compatible arrayh]h3Test root of device tree against a compatible array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjs)}(hhh]jx)}(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)}(hjh]hconst char *const *compats}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj3hMhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj3hMhjubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjYh]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjWubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#of_device_is_available (C function)c.of_device_is_availablehNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubj})}(hof_device_is_availableh]j1)}(hof_device_is_availableh]hof_device_is_available}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h"(const struct device_node *device)h]j)}(h const struct device_node *deviceh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_device_is_availableasbuh1hhjubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjAhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdeviceh]hdevice}(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(h&check if a device is available for useh]h&check if a device is available for use}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjuhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjs)}(hhh]jx)}(hD``const struct device_node *device`` Node to check for availability 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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(hNode to check for availabilityh]hNode to check for availability}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjs)}(hhh]jx)}(hOTrue if the status property is absent or set to "okay" or "ok", false otherwiseh](j~)}(h?True if the status property is absent or set to "okay" or "ok",h]hGTrue if the status property is absent or set to “okay” or “ok”,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj ubj)}(hhh]j/)}(hfalse otherwiseh]hfalse otherwise}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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&]uh1jwhjhMhj ubah}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_device_is_big_endian (C function)c.of_device_is_big_endianhNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM%ubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj`hhhjqhM%ubj})}(hof_device_is_big_endianh]j1)}(hof_device_is_big_endianh]hof_device_is_big_endian}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj`hhhjqhM%ubj)}(h"(const struct device_node *device)h]j)}(h const struct device_node *deviceh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_device_is_big_endianasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj`hhhjqhM%ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj\hhhjqhM%ubah}(h]jWah ](j!j"eh"]h$]h&]j&j')j(huh1hhjqhM%hjYhhubj*)}(hhh]j/)}(h"check if a device has BE registersh]h"check if a device has BE registers}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;hhubah}(h]h ]h"]h$]h&]uh1j)hjYhhhjqhM%ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjVjNjVjOjPjQuh1hhhhhhNhNubjS)}(hXx**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. Callers would nominally use ioread32be/iowrite32be if of_device_is_big_endian() == true, or readl/writel otherwise.h](j/)}(h**Parameters**h]j])}(hj`h]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj^ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjZubjs)}(hhh]jx)}(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&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjyubj)}(hhh]j/)}(hNode to check for endiannessh]hNode to check for endianness}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjvubah}(h]h ]h"]h$]h&]uh1jrhjZubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjZubjs)}(hhh]jx)}(hXTrue 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. Callers would nominally use ioread32be/iowrite32be if of_device_is_big_endian() == true, or readl/writel otherwise.h](j~)}(h@True if the device has a "big-endian" property, or if the kernelh]hDTrue if the device has a “big-endian” property, or if the kernel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM"hjubj)}(hhh](j/)}(h]was compiled for BE *and* the device has a "native-endian" property. Returns false otherwise.h](hwas 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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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&]uh1j.hjhM"hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM"hjubah}(h]h ]h"]h$]h&]uh1jrhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_get_parent (C function)c.of_get_parenthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjHhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM7ubj)}(h h]h }(hjZhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjHhhhjYhM7ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmmodnameN classnameNjNjQ)}jT]jW)}jJ of_get_parentsbc.of_get_parentasbuh1hhjHhhhjYhM7ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjHhhhjYhM7ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjHhhhjYhM7ubj})}(h of_get_parenth]j1)}(hjh]h of_get_parent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjHhhhjYhM7ubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj modnameN classnameNjNjQ)}jT]jc.of_get_parentasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj+ hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hj8 hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjHhhhjYhM7ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjDhhhjYhM7ubah}(h]j?ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjYhM7hjAhhubj*)}(hhh]j/)}(hGet a node's parent if anyh]hGet a node’s parent if any}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM1hj_ hhubah}(h]h ]h"]h$]h&]uh1j)hjAhhhjYhM7ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjz jNjz jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM5hj~ ubjs)}(hhh]jx)}(h6``const struct device_node *node`` Node to get parent 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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM2hj ubj)}(hhh]j/)}(hNode to get parenth]hNode to get parent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hM2hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj hM2hj ubah}(h]h ]h"]h$]h&]uh1jrhj~ ubj/)}(h **Return**h]j])}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM4hj~ ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM4hj~ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_get_next_parent (C function)c.of_get_next_parenthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj# hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMQubj)}(h h]h }(hj1 hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhj0 hMQubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjB hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj? ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjD modnameN classnameNjNjQ)}jT]jW)}jJof_get_next_parentsbc.of_get_next_parentasbuh1hhj hhhj0 hMQubj)}(h h]h }(hjc hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhj0 hMQubjl)}(hjoh]h*}(hjq hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj hhhj0 hMQubj})}(hof_get_next_parenth]j1)}(hj` h]hof_get_next_parent}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj hhhj0 hMQubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j )}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj modnameN classnameNjNjQ)}jT]j^ c.of_get_next_parentasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hnodeh]hnode}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj0 hMQubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj0 hMQubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj0 hMQhj hhubj*)}(hhh]j/)}(hIterate to a node's parenth]hIterate to a node’s parent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMGhj hhubah}(h]h ]h"]h$]h&]uh1j)hj hhhj0 hMQubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj6 jNj6 jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj@ h]h Parameters}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj> ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMKhj: ubjs)}(hhh]jx)}(h3``struct device_node *node`` Node to get parent of h](j~)}(h``struct device_node *node``h]j)}(hj_ h]hstruct device_node *node}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj] ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMHhjY ubj)}(hhh]j/)}(hNode to get parent ofh]hNode to get parent of}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjt hMHhju ubah}(h]h ]h"]h$]h&]uh1jhjY ubeh}(h]h ]h"]h$]h&]uh1jwhjt hMHhjV ubah}(h]h ]h"]h$]h&]uh1jrhj: ubj/)}(h**Description**h]j])}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMJhj: ubj/)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMJhj: ubj/)}(h **Return**h]j])}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMNhj: ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMNhj: ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_get_next_child (C function)c.of_get_next_childhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM{ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhj hM{ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj% hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj" ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj' modnameN classnameNjNjQ)}jT]jW)}jJof_get_next_childsbc.of_get_next_childasbuh1hhj hhhj hM{ubj)}(h h]h }(hjF hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhj hM{ubjl)}(hjoh]h*}(hjT hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj hhhj hM{ubj})}(hof_get_next_childh]j1)}(hjC h]hof_get_next_child}(hje hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hja ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj hhhj hM{ubj)}(h:(const struct device_node *node, struct device_node *prev)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj| ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj| ubj )}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj| ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj| ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj modnameN classnameNjNjQ)}jT]jA c.of_get_next_childasbuh1hhj| ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj| ubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj| ubj1)}(hnodeh]hnode}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj| ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjx ubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj) hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj& ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj+ modnameN classnameNjNjQ)}jT]jA c.of_get_next_childasbuh1hhj ubj)}(h h]h }(hjG hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjU hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hprevh]hprev}(hjb hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjx ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hM{ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj hM{ubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj hM{hj hhubj*)}(hhh]j/)}(hIterate a node childsh]hIterate a node childs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMshj hhubah}(h]h ]h"]h$]h&]uh1j)hj hhhj hM{ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj jNj jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMwhj ubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMthj ubj)}(hhh]j/)}(h parent nodeh]h parent node}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hMthj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj hMthj ubjx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMuhjubj)}(hhh]j/)}(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&]uh1j.hjhMuhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMuhj ubeh}(h]h ]h"]h$]h&]uh1jrhj ubj/)}(h **Return**h]j])}(hjAh]hReturn}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj?ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMwhj ubj/)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMwhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*of_get_next_child_with_prefix (C function)c.of_get_next_child_with_prefixhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_get_next_child_with_prefixsbc.of_get_next_child_with_prefixasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMubj})}(hof_get_next_child_with_prefixh]j1)}(hjh]hof_get_next_child_with_prefix}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(hN(const struct device_node *node, struct device_node *prev, const char *prefix)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj;modnameN classnameNjNjQ)}jT]jc.of_get_next_child_with_prefixasbuh1hhjubj)}(h h]h }(hjWhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjehhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_get_next_child_with_prefixasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *prefixh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj$hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj2hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hprefixh]hprefix}(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj~hhhjhMubah}(h]jyah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhj{hhubj*)}(hhh]j/)}(h$Find the next child node with prefixh]h$Find the next child node with prefix}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjfhhubah}(h]h ]h"]h$]h&]uh1j)hj{hhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(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&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(h=``const char *prefix`` prefix that the node name should have h](j~)}(h``const char *prefix``h]j)}(hjh]hconst char *prefix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(h%prefix that the node name should haveh]h%prefix that the node name should have}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj1hMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjUubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(h **Return**h]j])}(hj~h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj|ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(of_get_next_available_child (C function)c.of_get_next_available_childhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_get_next_available_childsbc.of_get_next_available_childasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMubj})}(hof_get_next_available_childh]j1)}(hjh]hof_get_next_available_child}(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h:(const struct device_node *node, struct device_node *prev)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9ubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubj )}(hjh]hstruct}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9ubj)}(h h]h }(hjehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjvhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjxmodnameN classnameNjNjQ)}jT]jc.of_get_next_available_childasbuh1hhj9ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj9ubj1)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5ubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_get_next_available_childasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(h"Find the next available child nodeh]h"Find the next available child node}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjFhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjajNjajOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjkh]h Parameters}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjiubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjeubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(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&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjeubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjeubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_get_next_reserved_child (C function)c.of_get_next_reserved_childhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj?hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj?hhhjPhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjbhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjdmodnameN classnameNjNjQ)}jT]jW)}jJof_get_next_reserved_childsbc.of_get_next_reserved_childasbuh1hhj?hhhjPhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj?hhhjPhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj?hhhjPhMubj})}(hof_get_next_reserved_childh]j1)}(hjh]hof_get_next_reserved_child}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj?hhhjPhMubj)}(h:(const struct device_node *node, struct device_node *prev)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j~c.of_get_next_reserved_childasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj"hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjDubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjDubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjhmodnameN classnameNjNjQ)}jT]j~c.of_get_next_reserved_childasbuh1hhjDubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjDubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjDubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj?hhhjPhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj;hhhjPhMubah}(h]j6ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjPhMhj8hhubj*)}(hhh]j/)}(h!Find the next reserved child nodeh]h!Find the next reserved child node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hj8hhhjPhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(h parent nodeh]h parent node}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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)}(hjCh]hstruct device_node *prev}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj=ubj)}(hhh]j/)}(h7previous child of the parent node, or NULL to get firsth]h7previous child of the parent node, or NULL to get first}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjXhMhjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jwhjXhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hj~h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj|ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_get_next_cpu_node (C function)c.of_get_next_cpu_nodehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_get_next_cpu_nodesbc.of_get_next_cpu_nodeasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMubj})}(hof_get_next_cpu_nodeh]j1)}(hjh]hof_get_next_cpu_node}(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h(struct device_node *prev)h]j)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9ubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj]modnameN classnameNjNjQ)}jT]jc.of_get_next_cpu_nodeasbuh1hhj9ubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj9ubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj5ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(hIterate on cpu nodesh]hIterate on cpu nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubjs)}(hhh]jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(h6previous child of the /cpus node, or NULL to get firsth]h6previous child of the /cpus node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hj:h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj8ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(h **Return**h]j])}(hjah]hReturn}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj_ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj/)}(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.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_get_compatible_child (C function)c.of_get_compatible_childhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_get_compatible_childsbc.of_get_compatible_childasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMubj})}(hof_get_compatible_childh]j1)}(hjh]hof_get_compatible_child}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h:(const struct device_node *parent, const char *compatible)h](j)}(h const struct device_node *parenth](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjHhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj[modnameN classnameNjNjQ)}jT]jc.of_get_compatible_childasbuh1hhjubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *compatibleh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(h compatibleh]h compatible}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(hFind compatible child nodeh]hFind compatible child node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj1jNj1jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj9ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj5ubjs)}(hhh](jx)}(h1``const struct device_node *parent`` parent node h](j~)}(h$``const struct device_node *parent``h]j)}(hjZh]h const struct device_node *parent}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjTubj)}(hhh]j/)}(h parent nodeh]h parent node}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjohM hjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jwhjohM hjQubjx)}(h-``const char *compatible`` compatible string h](j~)}(h``const char *compatible``h]j)}(hjh]hconst char *compatible}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjubj)}(hhh]j/)}(hcompatible stringh]hcompatible string}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjQubeh}(h]h ]h"]h$]h&]uh1jrhj5ubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj5ubj/)}(hQLookup child node whose compatible property contains the given compatible string.h]hQLookup child node whose compatible property contains the given compatible string.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj5ubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj5ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_get_child_by_name (C function)c.of_get_child_by_namehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj6hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM/ubj)}(h h]h }(hjHhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6hhhjGhM/ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj[modnameN classnameNjNjQ)}jT]jW)}jJof_get_child_by_namesbc.of_get_child_by_nameasbuh1hhj6hhhjGhM/ubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6hhhjGhM/ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj6hhhjGhM/ubj})}(hof_get_child_by_nameh]j1)}(hjwh]hof_get_child_by_name}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj6hhhjGhM/ubj)}(h2(const struct device_node *node, const char *name)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]juc.of_get_child_by_nameasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *nameh](j )}(hjHh]hconst}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj;ubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj;ubj)}(hcharh]hchar}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj;ubjl)}(hjoh]h*}(hjvhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj;ubj1)}(hnameh]hname}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj6hhhjGhM/ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj2hhhjGhM/ubah}(h]j-ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjGhM/hj/hhubj*)}(hhh]j/)}(h.Find the child node by name for a given parenth]h.Find the child node by name for a given parent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM%hjhhubah}(h]h ]h"]h$]h&]uh1j)hj/hhhjGhM/ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM)hjubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM&hjubj)}(hhh]j/)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM&hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM&hjubjx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM'hj!ubj)}(hhh]j/)}(hchild name to look for.h]hchild name to look for.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj<hM'hj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jwhj<hM'hjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjbh]h Description}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj`ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM)hjubj/)}(h:This function looks for child node for given matching nameh]h:This function looks for child node for given matching name}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM)hjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM+hjubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM+hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h+of_get_available_child_by_name (C function) c.of_get_available_child_by_namehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMGubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMGubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_get_available_child_by_namesb c.of_get_available_child_by_nameasbuh1hhjhhhjhMGubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMGubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMGubj})}(hof_get_available_child_by_nameh]j1)}(hj h]hof_get_available_child_by_name}(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMGubj)}(h2(const struct device_node *node, const char *name)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjDubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjDubj )}(hjh]hstruct}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjDubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjDubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j  c.of_get_available_child_by_nameasbuh1hhjDubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjDubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjDubj1)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubj)}(hconst char *nameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnameh]hname}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMGubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMGubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMGhjhhubj*)}(hhh]j/)}(h8Find the available child node by name for a given parenth]h8Find the available child node by name for a given parent}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM<hj>hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMGubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjYjNjYjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjch]h Parameters}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjaubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM@hj]ubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM=hj|ubj)}(hhh]j/)}(h parent nodeh]h parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM=hjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jwhjhM=hjyubjx)}(h-``const char *name`` child name to look for. h](j~)}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM>hjubj)}(hhh]j/)}(hchild name to look for.h]hchild name to look for.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM>hjyubeh}(h]h ]h"]h$]h&]uh1jrhj]ubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM@hj]ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM@hj]ubj/)}(h **Return**h]j])}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMChj]ubj/)}(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.}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMChj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&of_find_node_opts_by_path (C function)c.of_find_node_opts_by_pathhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjb hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj^ hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjp hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj^ hhhjo hMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj modnameN classnameNjNjQ)}jT]jW)}jJof_find_node_opts_by_pathsbc.of_find_node_opts_by_pathasbuh1hhj^ hhhjo hMubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj^ hhhjo hMubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj^ hhhjo hMubj})}(hof_find_node_opts_by_pathh]j1)}(hj h]hof_find_node_opts_by_path}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj^ hhhjo hMubj)}(h%(const char *path, const char **opts)h](j)}(hconst char *pathh](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubj)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hj!hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hpathh]hpath}(hj !hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hconst char **optsh](j )}(hjHh]hconst}(hj9!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5!ubj)}(h h]h }(hjF!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj5!ubj)}(hcharh]hchar}(hjT!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5!ubj)}(h h]h }(hjb!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj5!ubjl)}(hjoh]h*}(hjp!hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj5!ubjl)}(hjoh]h*}(hj}!hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj5!ubj1)}(hoptsh]hopts}(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj^ hhhjo hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjZ hhhjo hMubah}(h]jU ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjo hMhjW hhubj*)}(hhh]j/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM{hj!hhubah}(h]h ]h"]h$]h&]uh1j)hjW hhhjo hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj!jNj!jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj!ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj!ubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj!ubj)}(hhh]j/)}(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&]uh1j.hW/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&]uh1jwhj "hMhj!ubjx)}(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)}(hj/"h]hconst char **opts}(hj1"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-"ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)"ubj)}(hhh]j/)}(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.}(hjH"hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjE"ubah}(h]h ]h"]h$]h&]uh1jhj)"ubeh}(h]h ]h"]h$]h&]uh1jwhjD"hMhj!ubeh}(h]h ]h"]h$]h&]uh1jrhj!ubj/)}(h**Description**h]j])}(hjk"h]h Description}(hjm"hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hji"ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj!ubjs)}(hhh]jx)}(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&]uh1j}hW/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]j/)}(hj"h]h/foo/bar Full path}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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]j/)}(hj"h]hfoo Valid alias}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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]j/)}(h%foo/bar Valid alias + relative pathh]h%foo/bar Valid alias + relative path}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj"hMhj"ubah}(h]h ]h"]h$]h&]uh1j"hj"ubeh}(h]h ]h"]h$]h&]bulletjouh1j"hj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jwhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jrhj!ubj/)}(h **Return**h]j])}(hj#h]hReturn}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj#ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj!ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_find_node_by_name (C function)c.of_find_node_by_namehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjI#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjE#hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjW#hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjE#hhhjV#hMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjh#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hje#ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjj#modnameN classnameNjNjQ)}jT]jW)}jJof_find_node_by_namesbc.of_find_node_by_nameasbuh1hhjE#hhhjV#hMubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjE#hhhjV#hMubjl)}(hjoh]h*}(hj#hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjE#hhhjV#hMubj})}(hof_find_node_by_nameh]j1)}(hj#h]hof_find_node_by_name}(hj#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj#ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjE#hhhjV#hMubj)}(h,(struct device_node *from, const char *name)h](j)}(hstruct device_node *fromh](j )}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj#ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj#ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj#modnameN classnameNjNjQ)}jT]j#c.of_find_node_by_nameasbuh1hhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj#ubjl)}(hjoh]h*}(hj $hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj#ubj1)}(hfromh]hfrom}(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubj)}(hconst char *nameh](j )}(hjHh]hconst}(hj3$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/$ubj)}(h h]h }(hj@$hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/$ubj)}(hcharh]hchar}(hjN$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/$ubj)}(h h]h }(hj\$hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/$ubjl)}(hjoh]h*}(hjj$hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj/$ubj1)}(hnameh]hname}(hjw$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubeh}(h]h ]h"]h$]h&]hhuh1jhjE#hhhjV#hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjA#hhhjV#hMubah}(h]j<#ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjV#hMhj>#hhubj*)}(hhh]j/)}(h"Find a node by its "name" propertyh]h&Find a node by its “name” property}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj$hhubah}(h]h ]h"]h$]h&]uh1j)hj>#hhhjV#hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj$jNj$jOjPjQuh1hhhhhhNhNubjS)}(hX**Parameters** ``struct device_node *from`` The node to start searching from or NULL; the node you pass will not be searched, only the next one will. Typically, you pass what the previous call returned. of_node_put() will be called on **from**. ``const char *name`` The name string to match against **Return** A node pointer with refcount incremented, use of_node_put() on it when done.h](j/)}(h**Parameters**h]j])}(hj$h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj$ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj$ubjs)}(hhh](jx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj$ubj)}(hhh]j/)}(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$hhhNhNubj])}(h**from**h]hfrom}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj$ubh.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hW/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&]uh1jwhj$hMhj$ubjx)}(h6``const char *name`` The name string to match against h](j~)}(h``const char *name``h]j)}(hj.%h]hconst char *name}(hj0%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,%ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj(%ubj)}(hhh]j/)}(h The name string to match againsth]h The name string to match against}(hjG%hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjC%hMhjD%ubah}(h]h ]h"]h$]h&]uh1jhj(%ubeh}(h]h ]h"]h$]h&]uh1jwhjC%hMhj$ubeh}(h]h ]h"]h$]h&]uh1jrhj$ubj/)}(h **Return**h]j])}(hji%h]hReturn}(hjk%hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjg%ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj$ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_find_node_by_type (C function)c.of_find_node_by_typehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj%hhhj%hMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj%modnameN classnameNjNjQ)}jT]jW)}jJof_find_node_by_typesbc.of_find_node_by_typeasbuh1hhj%hhhj%hMubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj%hhhj%hMubjl)}(hjoh]h*}(hj%hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj%hhhj%hMubj})}(hof_find_node_by_typeh]j1)}(hj%h]hof_find_node_by_type}(hj &hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj &ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj%hhhj%hMubj)}(h,(struct device_node *from, const char *type)h](j)}(hstruct device_node *fromh](j )}(hjh]hstruct}(hj(&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$&ubj)}(h h]h }(hj5&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$&ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjF&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjC&ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjH&modnameN classnameNjNjQ)}jT]j%c.of_find_node_by_typeasbuh1hhj$&ubj)}(h h]h }(hjd&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$&ubjl)}(hjoh]h*}(hjr&hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj$&ubj1)}(hfromh]hfrom}(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj &ubj)}(hconst char *typeh](j )}(hjHh]hconst}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj&ubj)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj&ubjl)}(hjoh]h*}(hj&hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj&ubj1)}(htypeh]htype}(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj &ubeh}(h]h ]h"]h$]h&]hhuh1jhj%hhhj%hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj%hhhj%hMubah}(h]j%ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj%hMhj%hhubj*)}(hhh]j/)}(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&]uh1j.hW/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 ](jHfunctioneh"]h$]h&]jLjHjMj'jNj'jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj('h]h Parameters}(hj*'hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj&'ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj"'ubjs)}(hhh](jx)}(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)}(hjG'h]hstruct device_node *from}(hjI'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE'ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjA'ubj)}(hhh]j/)}(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.}(hj`'hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj]'ubah}(h]h ]h"]h$]h&]uh1jhjA'ubeh}(h]h ]h"]h$]h&]uh1jwhj\'hMhj>'ubjx)}(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&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj{'ubj)}(hhh]j/)}(h The type string to match againsth]h The type string to match against}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj'hMhj'ubah}(h]h ]h"]h$]h&]uh1jhj{'ubeh}(h]h ]h"]h$]h&]uh1jwhj'hMhj>'ubeh}(h]h ]h"]h$]h&]uh1jrhj"'ubj/)}(h **Return**h]j])}(hj'h]hReturn}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj'ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj"'ubj/)}(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&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj"'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_find_compatible_node (C function)c.of_find_compatible_nodehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj'hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj'hhhj(hMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj (hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj"(modnameN classnameNjNjQ)}jT]jW)}jJof_find_compatible_nodesbc.of_find_compatible_nodeasbuh1hhj'hhhj(hMubj)}(h h]h }(hjA(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj'hhhj(hMubjl)}(hjoh]h*}(hjO(hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj'hhhj(hMubj})}(hof_find_compatible_nodeh]j1)}(hj>(h]hof_find_compatible_node}(hj`(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\(ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj'hhhj(hMubj)}(hD(struct device_node *from, const char *type, const char *compatible)h](j)}(hstruct device_node *fromh](j )}(hjh]hstruct}(hj{(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjw(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjw(ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj(modnameN classnameNjNjQ)}jT]j<(c.of_find_compatible_nodeasbuh1hhjw(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjw(ubjl)}(hjoh]h*}(hj(hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjw(ubj1)}(hfromh]hfrom}(hj(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjw(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs(ubj)}(hconst char *typeh](j )}(hjHh]hconst}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj(ubj)}(hcharh]hchar}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj(ubjl)}(hjoh]h*}(hj")hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj(ubj1)}(htypeh]htype}(hj/)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs(ubj)}(hconst char *compatibleh](j )}(hjHh]hconst}(hjH)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjD)ubj)}(h h]h }(hjU)hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjD)ubj)}(hcharh]hchar}(hjc)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD)ubj)}(h h]h }(hjq)hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjD)ubjl)}(hjoh]h*}(hj)hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjD)ubj1)}(h compatibleh]h compatible}(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjD)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjs(ubeh}(h]h ]h"]h$]h&]hhuh1jhj'hhhj(hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj'hhhj(hMubah}(h]j'ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj(hMhj'hhubj*)}(hhh]j/)}(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}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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 ](jHfunctioneh"]h$]h&]jLjHjMj)jNj)jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj)h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj)ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)ubjs)}(hhh](jx)}(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)h]hstruct device_node *from}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)ubj)}(hhh]j/)}(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*hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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&]uh1jwhj *hMhj)ubjx)}(hN``const char *type`` The type string to match "device_type" or NULL to ignore h](j~)}(h``const char *type``h]j)}(hj1*h]hconst char *type}(hj3*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/*ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj+*ubj)}(hhh]j/)}(h8The type string to match "device_type" or NULL to ignoreh]h-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:-hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMMubj)}(h h]h }(hjL-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:-hhhjK-hMMubj )}(hjh]hstruct}(hjZ-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:-hhhjK-hMMubj)}(h h]h }(hjg-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:-hhhjK-hMMubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hjx-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hju-ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjz-modnameN classnameNjNjQ)}jT]jW)}jJ of_match_nodesbc.of_match_nodeasbuh1hhj:-hhhjK-hMMubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:-hhhjK-hMMubjl)}(hjoh]h*}(hj-hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj:-hhhjK-hMMubj})}(h of_match_nodeh]j1)}(hj-h]h of_match_node}(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj:-hhhjK-hMMubj)}(hD(const struct of_device_id *matches, const struct device_node *node)h](j)}(h"const struct of_device_id *matchesh](j )}(hjHh]hconst}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-ubj )}(hjh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-ubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hj .hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj .ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj.modnameN classnameNjNjQ)}jT]j-c.of_match_nodeasbuh1hhj-ubj)}(h h]h }(hj*.hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-ubjl)}(hjoh]h*}(hj8.hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj-ubj1)}(hmatchesh]hmatches}(hjE.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubj)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hj^.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjZ.ubj)}(h h]h }(hjk.hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjZ.ubj )}(hjh]hstruct}(hjy.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjZ.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjZ.ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj.modnameN classnameNjNjQ)}jT]j-c.of_match_nodeasbuh1hhjZ.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjZ.ubjl)}(hjoh]h*}(hj.hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjZ.ubj1)}(hnodeh]hnode}(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZ.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubeh}(h]h ]h"]h$]h&]hhuh1jhj:-hhhjK-hMMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj6-hhhjK-hMMubah}(h]j1-ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjK-hMMhj3-hhubj*)}(hhh]j/)}(h7Tell if a device_node has a matching of_match structureh]h7Tell if a device_node has a matching of_match structure}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMGhj.hhubah}(h]h ]h"]h$]h&]uh1j)hj3-hhhjK-hMMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj/jNj/jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj/ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMKhj/ubjs)}(hhh](jx)}(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)}(hj;/h]h"const struct of_device_id *matches}(hj=/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9/ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMHhj5/ubj)}(hhh]j/)}(h0array of of device match structures to search inh]h0array of of device match structures to search in}(hjT/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjP/hMHhjQ/ubah}(h]h ]h"]h$]h&]uh1jhj5/ubeh}(h]h ]h"]h$]h&]uh1jwhjP/hMHhj2/ubjx)}(hL``const struct device_node *node`` the of device structure to match against h](j~)}(h"``const struct device_node *node``h]j)}(hjt/h]hconst struct device_node *node}(hjv/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr/ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMIhjn/ubj)}(hhh]j/)}(h(the of device structure to match againsth]h(the of device structure to match against}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj/hMIhj/ubah}(h]h ]h"]h$]h&]uh1jhjn/ubeh}(h]h ]h"]h$]h&]uh1jwhj/hMIhj2/ubeh}(h]h ]h"]h$]h&]uh1jrhj/ubj/)}(h**Description**h]j])}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj/ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMKhj/ubj/)}(h3Low level utility function used by device matching.h]h3Low level utility function used by device matching.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMKhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,of_find_matching_node_and_match (C function)!c.of_find_matching_node_and_matchhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMgubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/hhhj0hMgubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj0modnameN classnameNjNjQ)}jT]jW)}jJof_find_matching_node_and_matchsb!c.of_find_matching_node_and_matchasbuh1hhj/hhhj0hMgubj)}(h h]h }(hj40hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/hhhj0hMgubjl)}(hjoh]h*}(hjB0hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj/hhhj0hMgubj})}(hof_find_matching_node_and_matchh]j1)}(hj10h]hof_find_matching_node_and_match}(hjS0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjO0ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj/hhhj0hMgubj)}(ha(struct device_node *from, const struct of_device_id *matches, const struct of_device_id **match)h](j)}(hstruct device_node *fromh](j )}(hjh]hstruct}(hjn0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjj0ubj)}(h h]h }(hj{0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjj0ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj0modnameN classnameNjNjQ)}jT]j/0!c.of_find_matching_node_and_matchasbuh1hhjj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjj0ubjl)}(hjoh]h*}(hj0hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjj0ubj1)}(hfromh]hfrom}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjf0ubj)}(h"const struct of_device_id *matchesh](j )}(hjHh]hconst}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0ubj )}(hjh]hstruct}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj0ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0ubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj1modnameN classnameNjNjQ)}jT]j/0!c.of_find_matching_node_and_matchasbuh1hhj0ubj)}(h h]h }(hj51hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0ubjl)}(hjoh]h*}(hjC1hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj0ubj1)}(hmatchesh]hmatches}(hjP1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjf0ubj)}(h!const struct of_device_id **matchh](j )}(hjHh]hconst}(hji1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hje1ubj)}(h h]h }(hjv1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhje1ubj )}(hjh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hje1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhje1ubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj1modnameN classnameNjNjQ)}jT]j/0!c.of_find_matching_node_and_matchasbuh1hhje1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhje1ubjl)}(hjoh]h*}(hj1hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhje1ubjl)}(hjoh]h*}(hj1hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhje1ubj1)}(hmatchh]hmatch}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hje1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjf0ubeh}(h]h ]h"]h$]h&]hhuh1jhj/hhhj0hMgubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj/hhhj0hMgubah}(h]j/ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj0hMghj/hhubj*)}(hhh]j/)}(h1Find a node based on an of_device_id match table.h]h1Find a node based on an of_device_id match table.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM[hj2hhubah}(h]h ]h"]h$]h&]uh1j)hj/hhhj0hMgubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj*2jNj*2jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj42h]h Parameters}(hj62hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj22ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM_hj.2ubjs)}(hhh](jx)}(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)}(hjS2h]hstruct device_node *from}(hjU2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ2ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM`hjM2ubj)}(hhh]j/)}(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}(hjl2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM]hji2ubah}(h]h ]h"]h$]h&]uh1jhjM2ubeh}(h]h ]h"]h$]h&]uh1jwhjh2hM`hjJ2ubjx)}(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)}(hj2h]h"const struct of_device_id *matches}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMahj2ubj)}(hhh]j/)}(h0array of of device match structures to search inh]h0array of of device match structures to search in}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj2hMahj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jwhj2hMahjJ2ubjx)}(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)}(hj2h]h!const struct of_device_id **match}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMbhj2ubj)}(hhh]j/)}(h3Updated to point at the matches entry which matchedh]h3Updated to point at the matches entry which matched}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj2hMbhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jwhj2hMbhjJ2ubeh}(h]h ]h"]h$]h&]uh1jrhj.2ubj/)}(h **Return**h]j])}(hj3h]hReturn}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj2ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMdhj.2ubj/)}(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.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMdhj.2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_alias_from_compatible (C function)c.of_alias_from_compatiblehNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjF3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB3hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjU3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjB3hhhjT3hMubj})}(hof_alias_from_compatibleh]j1)}(hof_alias_from_compatibleh]hof_alias_from_compatible}(hjg3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjc3ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjB3hhhjT3hMubj)}(h6(const struct device_node *node, char *alias, int len)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj3ubj )}(hjh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj3ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj3modnameN classnameNjNjQ)}jT]jW)}jJji3sbc.of_alias_from_compatibleasbuh1hhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj3ubjl)}(hjoh]h*}(hj3hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj3ubj1)}(hnodeh]hnode}(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{3ubj)}(h char *aliash](j)}(hcharh]hchar}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj 4ubjl)}(hjoh]h*}(hj,4hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj 4ubj1)}(haliash]halias}(hj94hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj 4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{3ubj)}(hint lenh](j)}(hinth]hint}(hjR4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN4ubj)}(h h]h }(hj`4hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjN4ubj1)}(hlenh]hlen}(hjn4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjN4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{3ubeh}(h]h ]h"]h$]h&]hhuh1jhjB3hhhjT3hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj>3hhhjT3hMubah}(h]j93ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjT3hMhj;3hhubj*)}(hhh]j/)}(hBLookup appropriate alias for a device node depending on compatibleh]hBLookup appropriate alias for a device node depending on compatible}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4hhubah}(h]h ]h"]h$]h&]uh1j)hj;3hhhjT3hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj4jNj4jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj4ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubjs)}(hhh](jx)}(hA``const struct device_node *node`` pointer to a device tree node h](j~)}(h"``const struct device_node *node``h]j)}(hj4h]hconst struct device_node *node}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubj)}(hhh]j/)}(hpointer to a device tree nodeh]hpointer to a device tree node}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj4hMhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jwhj4hMhj4ubjx)}(hG``char *alias`` Pointer to buffer that alias value will be copied into h](j~)}(h``char *alias``h]j)}(hj5h]h char *alias}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj 5ubj)}(hhh]j/)}(h6Pointer to buffer that alias value will be copied intoh]h6Pointer to buffer that alias value will be copied into}(hj+5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj'5hMhj(5ubah}(h]h ]h"]h$]h&]uh1jhj 5ubeh}(h]h ]h"]h$]h&]uh1jwhj'5hMhj4ubjx)}(h"``int len`` Length of alias value h](j~)}(h ``int len``h]j)}(hjK5h]hint len}(hjM5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI5ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjE5ubj)}(hhh]j/)}(hLength of alias valueh]hLength of alias value}(hjd5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj`5hMhja5ubah}(h]h ]h"]h$]h&]uh1jhjE5ubeh}(h]h ]h"]h$]h&]uh1jwhj`5hMhj4ubeh}(h]h ]h"]h$]h&]uh1jrhj4ubj/)}(h**Description**h]j])}(hj5h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj5ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubj/)}(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.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubj/)}(h**Note**h]j])}(hj5h]hNote}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj5ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubj/)}(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.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubj/)}(h **Return**h]j])}(hj5h]hReturn}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj5ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubj/)}(h1This routine returns 0 on success, <0 on failure.h]h1This routine returns 0 on success, <0 on failure.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_find_node_by_phandle (C function)c.of_find_node_by_phandlehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj6hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hj'6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6hhhj&6hMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj86hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj56ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj:6modnameN classnameNjNjQ)}jT]jW)}jJof_find_node_by_phandlesbc.of_find_node_by_phandleasbuh1hhj6hhhj&6hMubj)}(h h]h }(hjY6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6hhhj&6hMubjl)}(hjoh]h*}(hjg6hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj6hhhj&6hMubj})}(hof_find_node_by_phandleh]j1)}(hjV6h]hof_find_node_by_phandle}(hjx6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjt6ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj6hhhj&6hMubj)}(h(phandle handle)h]j)}(hphandle handleh](h)}(hhh]j1)}(hphandleh]hphandle}(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj6modnameN classnameNjNjQ)}jT]jT6c.of_find_node_by_phandleasbuh1hhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6ubj1)}(hhandleh]hhandle}(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubah}(h]h ]h"]h$]h&]hhuh1jhj6hhhj&6hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj6hhhj&6hMubah}(h]j 6ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj&6hMhj6hhubj*)}(hhh]j/)}(hFind a node given a phandleh]hFind a node given a phandle}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj6hhubah}(h]h ]h"]h$]h&]uh1j)hj6hhhj&6hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj7jNj7jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj7h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj 7ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj7ubjs)}(hhh]jx)}(h/``phandle handle`` phandle of the node to find h](j~)}(h``phandle handle``h]j)}(hj-7h]hphandle handle}(hj/7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+7ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj'7ubj)}(hhh]j/)}(hphandle of the node to findh]hphandle of the node to find}(hjF7hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjB7hMhjC7ubah}(h]h ]h"]h$]h&]uh1jhj'7ubeh}(h]h ]h"]h$]h&]uh1jwhjB7hMhj$7ubah}(h]h ]h"]h$]h&]uh1jrhj7ubj/)}(h **Return**h]j])}(hjh7h]hReturn}(hjj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjf7ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj7ubj/)}(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~7hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h+of_parse_phandle_with_args_map (C function) c.of_parse_phandle_with_args_maphNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj7hhhj7hMubj})}(hof_parse_phandle_with_args_maph]j1)}(hof_parse_phandle_with_args_maph]hof_parse_phandle_with_args_map}(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj7hhhj7hMubj)}(hy(const struct device_node *np, const char *list_name, const char *stem_name, int index, struct of_phandle_args *out_args)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj7ubj )}(hjh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj7ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj#8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj 8ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj%8modnameN classnameNjNjQ)}jT]jW)}jJj7sb c.of_parse_phandle_with_args_mapasbuh1hhj7ubj)}(h h]h }(hjC8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj7ubjl)}(hjoh]h*}(hjQ8hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj7ubj1)}(hnph]hnp}(hj^8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(hconst char *list_nameh](j )}(hjHh]hconst}(hjw8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjs8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjs8ubj)}(hcharh]hchar}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjs8ubjl)}(hjoh]h*}(hj8hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjs8ubj1)}(h list_nameh]h list_name}(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjs8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(hconst char *stem_nameh](j )}(hjHh]hconst}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj8ubj)}(hcharh]hchar}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj8ubjl)}(hjoh]h*}(hj 9hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj8ubj1)}(h stem_nameh]h stem_name}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(h int indexh](j)}(hinth]hint}(hj19hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-9ubj)}(h h]h }(hj?9hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-9ubj1)}(hindexh]hindex}(hjM9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubj)}(h struct of_phandle_args *out_argsh](j )}(hjh]hstruct}(hjf9hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjb9ubj)}(h h]h }(hjs9hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjb9ubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj9modnameN classnameNjNjQ)}jT]j?8 c.of_parse_phandle_with_args_mapasbuh1hhjb9ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjb9ubjl)}(hjoh]h*}(hj9hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjb9ubj1)}(hout_argsh]hout_args}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjb9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj7ubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhj7hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj7hhhj7hMubah}(h]j7ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj7hMhj7hhubj*)}(hhh]j/)}(h5Find a node pointed by phandle in a list and remap ith]h5Find a node pointed by phandle in a list and remap it}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj9hhubah}(h]h ]h"]h$]h&]uh1j)hj7hhhj7hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj9jNj9jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj :h]h Parameters}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj:ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubjs)}(hhh](jx)}(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(:h]hconst struct device_node *np}(hj*:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&:ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj":ubj)}(hhh]j/)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjA:hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj=:hMhj>:ubah}(h]h ]h"]h$]h&]uh1jhj":ubeh}(h]h ]h"]h$]h&]uh1jwhj=:hMhj:ubjx)}(h=``const char *list_name`` property name that contains a list h](j~)}(h``const char *list_name``h]j)}(hja:h]hconst char *list_name}(hjc:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_:ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj[:ubj)}(hhh]j/)}(h"property name that contains a listh]h"property name that contains a list}(hjz:hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjv:hMhjw:ubah}(h]h ]h"]h$]h&]uh1jhj[:ubeh}(h]h ]h"]h$]h&]uh1jwhjv:hMhj:ubjx)}(hX``const char *stem_name`` stem of property names that specify phandles' arguments count h](j~)}(h``const char *stem_name``h]j)}(hj:h]hconst char *stem_name}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubj)}(hhh]j/)}(h=stem of property names that specify phandles' arguments counth]h?stem of property names that specify phandles’ arguments count}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jwhj:hMhj:ubjx)}(h.``int index`` index of a phandle to parse out h](j~)}(h ``int index``h]j)}(hj:h]h int index}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubj)}(hhh]j/)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jwhj:hMhj:ubjx)}(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 ;h]h struct of_phandle_args *out_args}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ;ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubj)}(hhh]j/)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hj%;hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj!;hMhj";ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jwhj!;hMhj:ubeh}(h]h ]h"]h$]h&]uh1jrhj:ubj/)}(h**Description**h]j])}(hjG;h]h Description}(hjI;hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjE;ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubj/)}(hXHThis 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.h](hX,This function is useful to parse lists of phandles and their arguments. Returns 0 on success and fills out_args, on error returns appropriate errno value. The difference between this function and of_parse_phandle_with_args() is that this API remaps a phandle if the node the phandle points to has a <}(hj];hhhNhNubj])}(h **stem_name**h]h stem_name}(hje;hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj];ubh>-map property.}(hj];hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubj/)}(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.}(hj~;hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubj/)}(h Example::h]hExample:}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubh 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>; };}hj;sbah}(h]h ]h"]h$]h&]hhuh1j;hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj:ubj/)}(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 }(hj;hhhNhNubj)}(h ``node2``h]hnode2}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubhV node you may call this: of_parse_phandle_with_args(node4, “list”, “list”, 1, }(hj;hhhNhNubh)}(h:c:type:`args`h]j)}(hj;h]hargs}(hj;hhhNhNubah}(h]h ](xrefjHc-typeeh"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]refdocdevicetree/kernel-api refdomainjHreftypetype refexplicitrefwarnjNjQ)}jT]sb reftargetargsuh1hhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj;ubh);}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hj;hMhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_count_phandle_with_args (C function)c.of_count_phandle_with_argshNtauh1hhhhhhNhNubh)}(hhh](h)}(hlint of_count_phandle_with_args (const struct device_node *np, const char *list_name, const char *cells_name)h]j)}(hkint of_count_phandle_with_args(const struct device_node *np, const char *list_name, const char *cells_name)h](j)}(hinth]hint}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMLubj)}(h h]h }(hj&<hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj<hhhj%<hMLubj})}(hof_count_phandle_with_argsh]j1)}(hof_count_phandle_with_argsh]hof_count_phandle_with_args}(hj8<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4<ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj<hhhj%<hMLubj)}(hM(const struct device_node *np, const char *list_name, const char *cells_name)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjT<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjP<ubj)}(h h]h }(hja<hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjP<ubj )}(hjh]hstruct}(hjo<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjP<ubj)}(h h]h }(hj|<hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjP<ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj<ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj<modnameN classnameNjNjQ)}jT]jW)}jJj:<sbc.of_count_phandle_with_argsasbuh1hhjP<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjP<ubjl)}(hjoh]h*}(hj<hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjP<ubj1)}(hnph]hnp}(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjP<ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjL<ubj)}(hconst char *list_nameh](j )}(hjHh]hconst}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj<ubj)}(hcharh]hchar}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(h h]h }(hj =hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj<ubjl)}(hjoh]h*}(hj=hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj<ubj1)}(h list_nameh]h list_name}(hj%=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj<ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjL<ubj)}(hconst char *cells_nameh](j )}(hjHh]hconst}(hj>=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:=ubj)}(h h]h }(hjK=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:=ubj)}(hcharh]hchar}(hjY=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:=ubj)}(h h]h }(hjg=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:=ubjl)}(hjoh]h*}(hju=hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj:=ubj1)}(h cells_nameh]h cells_name}(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjL<ubeh}(h]h ]h"]h$]h&]hhuh1jhj<hhhj%<hMLubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj<hhhj%<hMLubah}(h]j <ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj%<hMLhj <hhubj*)}(hhh]j/)}(h4Find the number of phandles references in a propertyh]h4Find the number of phandles references in a property}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM>hj=hhubah}(h]h ]h"]h$]h&]uh1j)hj <hhhj%<hMLubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj=jNj=jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj=h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj=ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMBhj=ubjs)}(hhh](jx)}(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=h]hconst struct device_node *np}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM?hj=ubj)}(hhh]j/)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj>hM?hj>ubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jwhj>hM?hj=ubjx)}(h=``const char *list_name`` property name that contains a list h](j~)}(h``const char *list_name``h]j)}(hj&>h]hconst char *list_name}(hj(>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$>ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM@hj >ubj)}(hhh]j/)}(h"property name that contains a listh]h"property name that contains a list}(hj?>hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj;>hM@hj<>ubah}(h]h ]h"]h$]h&]uh1jhj >ubeh}(h]h ]h"]h$]h&]uh1jwhj;>hM@hj=ubjx)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j~)}(h``const char *cells_name``h]j)}(hj_>h]hconst char *cells_name}(hja>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]>ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMAhjY>ubj)}(hhh]j/)}(h6property name that specifies phandles' arguments counth]h8property name that specifies phandles’ arguments count}(hjx>hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjt>hMAhju>ubah}(h]h ]h"]h$]h&]uh1jhjY>ubeh}(h]h ]h"]h$]h&]uh1jwhjt>hMAhj=ubeh}(h]h ]h"]h$]h&]uh1jrhj=ubj/)}(h **Return**h]j])}(hj>h]hReturn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj>ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMChj=ubj/)}(hXThe number of phandle + argument tuples within a property. It is a typical pattern to encode a list of phandle and variable arguments into a single property. The number of arguments is encoded by a property in the phandle-target node. For example, a gpios property would contain a list of GPIO specifies consisting of a phandle and 1 or more arguments. The number of arguments are determined by the #gpio-cells property in the node pointed to by the phandle.h]hXThe number of phandle + argument tuples within a property. It is a typical pattern to encode a list of phandle and variable arguments into a single property. The number of arguments is encoded by a property in the phandle-target node. For example, a gpios property would contain a list of GPIO specifies consisting of a phandle and 1 or more arguments. The number of arguments are determined by the #gpio-cells property in the node pointed to by the phandle.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMChj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_add_property (C function)c.of_add_propertyhNtauh1hhhhhhNhNubh)}(hhh](h)}(hCint of_add_property (struct device_node *np, struct property *prop)h]j)}(hBint of_add_property(struct device_node *np, struct property *prop)h](j)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj>hhhj>hMubj})}(hof_add_propertyh]j1)}(hof_add_propertyh]hof_add_property}(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj>hhhj>hMubj)}(h/(struct device_node *np, struct property *prop)h](j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj?ubj)}(h h]h }(hj)?hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj?ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj:?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7?ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjhhhj>hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj>hhhj>hMubah}(h]j>ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj>hMhj>hhubj*)}(hhh]j/)}(hAdd a property to a nodeh]hAdd a property to a node}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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 ](jHfunctioneh"]h$]h&]jLjHjMj'@jNj'@jOjPjQuh1hhhhhhNhNubjS)}(hn**Parameters** ``struct device_node *np`` Caller's Device Node ``struct property *prop`` Property to addh](j/)}(h**Parameters**h]j])}(hj1@h]h Parameters}(hj3@hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj/@ubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj+@ubjs)}(hhh](jx)}(h0``struct device_node *np`` Caller's Device Node h](j~)}(h``struct device_node *np``h]j)}(hjP@h]hstruct device_node *np}(hjR@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN@ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjJ@ubj)}(hhh]j/)}(hCaller's Device Nodeh]hCaller’s Device Node}(hji@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hje@hMhjf@ubah}(h]h ]h"]h$]h&]uh1jhjJ@ubeh}(h]h ]h"]h$]h&]uh1jwhje@hMhjG@ubjx)}(h)``struct property *prop`` Property to addh](j~)}(h``struct property *prop``h]j)}(hj@h]hstruct property *prop}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj@ubj)}(hhh]j/)}(hProperty to addh]hProperty to add}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/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&]uh1jwhj@hMhjG@ubeh}(h]h ]h"]h$]h&]uh1jrhj+@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_remove_property (C function)c.of_remove_propertyhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@hhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj@hhhj@hMubj})}(hof_remove_propertyh]j1)}(hof_remove_propertyh]hof_remove_property}(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj@hhhj@hMubj)}(h/(struct device_node *np, struct property *prop)h](j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj AhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjAubj)}(h h]h }(hj-AhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjAubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj>AhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;Aubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj@AmodnameN classnameNjNjQ)}jT]jW)}jJjAsbc.of_remove_propertyasbuh1hhjAubj)}(h h]h }(hj^AhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjAubjl)}(hjoh]h*}(hjlAhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjAubj1)}(hnph]hnp}(hjyAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubj)}(hstruct property *proph](j )}(hjh]hstruct}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjAubh)}(hhh]j1)}(hpropertyh]hproperty}(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjAmodnameN classnameNjNjQ)}jT]jZAc.of_remove_propertyasbuh1hhjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjAubjl)}(hjoh]h*}(hjAhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjAubj1)}(hproph]hprop}(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjAubeh}(h]h ]h"]h$]h&]hhuh1jhj@hhhj@hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj@hhhj@hMubah}(h]j@ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj@hMhj@hhubj*)}(hhh]j/)}(hRemove a property from a node.h]hRemove a property from a node.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjBhhubah}(h]h ]h"]h$]h&]uh1j)hj@hhhj@hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj+BjNj+BjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj5Bh]h Parameters}(hj7BhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj3Bubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj/Bubjs)}(hhh](jx)}(h0``struct device_node *np`` Caller's Device Node h](j~)}(h``struct device_node *np``h]j)}(hjTBh]hstruct device_node *np}(hjVBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRBubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjNBubj)}(hhh]j/)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjmBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjiBhMhjjBubah}(h]h ]h"]h$]h&]uh1jhjNBubeh}(h]h ]h"]h$]h&]uh1jwhjiBhMhjKBubjx)}(h-``struct property *prop`` Property to remove h](j~)}(h``struct property *prop``h]j)}(hjBh]hstruct property *prop}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjBubj)}(hhh]j/)}(hProperty to removeh]hProperty to remove}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjBhMhjBubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jwhjBhMhjKBubeh}(h]h ]h"]h$]h&]uh1jrhj/Bubj/)}(h**Description**h]j])}(hjBh]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjBubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj/Bubj/)}(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.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj/Bubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_alias_get_id (C function)c.of_alias_get_idhNtauh1hhhhhhNhNubh)}(hhh](h)}(hDint of_alias_get_id (const struct device_node *np, const char *stem)h]j)}(hCint of_alias_get_id(const struct device_node *np, const char *stem)h](j)}(hinth]hint}(hj ChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ChhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjChhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ChhhjChMubj})}(hof_alias_get_idh]j1)}(hof_alias_get_idh]hof_alias_get_id}(hj.ChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*Cubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj ChhhjChMubj)}(h0(const struct device_node *np, const char *stem)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjJChhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjFCubj)}(h h]h }(hjWChhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjFCubj )}(hjh]hstruct}(hjeChhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjFCubj)}(h h]h }(hjrChhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjFCubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjCmodnameN classnameNjNjQ)}jT]jW)}jJj0Csbc.of_alias_get_idasbuh1hhjFCubj)}(h h]h }(hjChhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjFCubjl)}(hjoh]h*}(hjChhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjFCubj1)}(hnph]hnp}(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBCubj)}(hconst char *stemh](j )}(hjHh]hconst}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjCubj)}(h h]h }(hjChhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjCubj)}(hcharh]hchar}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(h h]h }(hjDhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjCubjl)}(hjoh]h*}(hjDhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjCubj1)}(hstemh]hstem}(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBCubeh}(h]h ]h"]h$]h&]hhuh1jhj ChhhjChMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjChhhjChMubah}(h]jCah ](j!j"eh"]h$]h&]j&j')j(huh1hhjChMhjChhubj*)}(hhh]j/)}(h&Get alias id for the given device_nodeh]h&Get alias id for the given device_node}(hjEDhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMxhjBDhhubah}(h]h ]h"]h$]h&]uh1j)hjChhhjChMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj]DjNj]DjOjPjQuh1hhhhhhNhNubjS)}(hX)**Parameters** ``const struct device_node *np`` Pointer to the given device_node ``const char *stem`` Alias stem of the given device_node **Description** The function travels the lookup table to get the alias id for the given device_node and alias stem. **Return** The alias id if found.h](j/)}(h**Parameters**h]j])}(hjgDh]h Parameters}(hjiDhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjeDubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM|hjaDubjs)}(hhh](jx)}(hB``const struct device_node *np`` Pointer to the given device_node h](j~)}(h ``const struct device_node *np``h]j)}(hjDh]hconst struct device_node *np}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMyhjDubj)}(hhh]j/)}(h Pointer to the given device_nodeh]h Pointer to the given device_node}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjDhMyhjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jwhjDhMyhj}Dubjx)}(h9``const char *stem`` Alias stem of the given device_node h](j~)}(h``const char *stem``h]j)}(hjDh]hconst char *stem}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMzhjDubj)}(hhh]j/)}(h#Alias stem of the given device_nodeh]h#Alias stem of the given device_node}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjDhMzhjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jwhjDhMzhj}Dubeh}(h]h ]h"]h$]h&]uh1jrhjaDubj/)}(h**Description**h]j])}(hjDh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjDubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM|hjaDubj/)}(hcThe function travels the lookup table to get the alias id for the given device_node and alias stem.h]hcThe function travels the lookup table to get the alias id for the given device_node and alias stem.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM|hjaDubj/)}(h **Return**h]j])}(hj!Eh]hReturn}(hj#EhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjEubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjaDubj/)}(hThe alias id if found.h]hThe alias id if found.}(hj7EhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjaDubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_alias_get_highest_id (C function)c.of_alias_get_highest_idhNtauh1hhhhhhNhNubh)}(hhh](h)}(h.int of_alias_get_highest_id (const char *stem)h]j)}(h-int of_alias_get_highest_id(const char *stem)h](j)}(hinth]hint}(hjfEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbEhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjuEhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjbEhhhjtEhMubj})}(hof_alias_get_highest_idh]j1)}(hof_alias_get_highest_idh]hof_alias_get_highest_id}(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjbEhhhjtEhMubj)}(h(const char *stem)h]j)}(hconst char *stemh](j )}(hjHh]hconst}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjEubj)}(hcharh]hchar}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjEubjl)}(hjoh]h*}(hjEhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjEubj1)}(hstemh]hstem}(hjEhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubah}(h]h ]h"]h$]h&]hhuh1jhjbEhhhjtEhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj^EhhhjtEhMubah}(h]jYEah ](j!j"eh"]h$]h&]j&j')j(huh1hhjtEhMhj[Ehhubj*)}(hhh]j/)}(h'Get highest alias id for the given stemh]h'Get highest alias id for the given stem}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjFhhubah}(h]h ]h"]h$]h&]uh1j)hj[EhhhjtEhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj)FjNj)FjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj3Fh]h Parameters}(hj5FhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj1Fubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj-Fubjs)}(hhh]jx)}(h/``const char *stem`` Alias stem to be examined h](j~)}(h``const char *stem``h]j)}(hjRFh]hconst char *stem}(hjTFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPFubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjLFubj)}(hhh]j/)}(hAlias stem to be examinedh]hAlias stem to be examined}(hjkFhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjgFhMhjhFubah}(h]h ]h"]h$]h&]uh1jhjLFubeh}(h]h ]h"]h$]h&]uh1jwhjgFhMhjIFubah}(h]h ]h"]h$]h&]uh1jrhj-Fubj/)}(h**Description**h]j])}(hjFh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjFubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj-Fubj/)}(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.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj-Fubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_console_check (C function)c.of_console_checkhNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjFhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjFhhhjFhMubj})}(hof_console_checkh]j1)}(hof_console_checkh]hof_console_check}(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjFhhhjFhMubj)}(h5(const struct device_node *dn, char *name, int index)h](j)}(hconst struct device_node *dnh](j )}(hjHh]hconst}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj Gubj)}(h h]h }(hjGhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj Gubj )}(hjh]hstruct}(hj)GhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj Gubj)}(h h]h }(hj6GhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj Gubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjGGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjDGubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjIGmodnameN classnameNjNjQ)}jT]jW)}jJjFsbc.of_console_checkasbuh1hhj Gubj)}(h h]h }(hjgGhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj Gubjl)}(hjoh]h*}(hjuGhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj Gubj1)}(hdnh]hdn}(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj Gubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(h char *nameh](j)}(hcharh]hchar}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj)}(h h]h }(hjGhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjGubjl)}(hjoh]h*}(hjGhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjGubj1)}(hnameh]hname}(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(h int indexh](j)}(hinth]hint}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj)}(h h]h }(hjGhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjGubj1)}(hindexh]hindex}(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubeh}(h]h ]h"]h$]h&]hhuh1jhjFhhhjFhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjFhhhjFhMubah}(h]jFah ](j!j"eh"]h$]h&]j&j')j(huh1hhjFhMhjFhhubj*)}(hhh]j/)}(h#Test and setup console for DT setuph]h#Test and setup console for DT setup}(hj#HhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj Hhhubah}(h]h ]h"]h$]h&]uh1j)hjFhhhjFhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj;HjNj;HjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjEHh]h Parameters}(hjGHhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjCHubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?Hubjs)}(hhh](jx)}(h8``const struct device_node *dn`` Pointer to device node h](j~)}(h ``const struct device_node *dn``h]j)}(hjdHh]hconst struct device_node *dn}(hjfHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbHubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj^Hubj)}(hhh]j/)}(hPointer to device nodeh]hPointer to device node}(hj}HhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjyHhMhjzHubah}(h]h ]h"]h$]h&]uh1jhj^Hubeh}(h]h ]h"]h$]h&]uh1jwhjyHhMhj[Hubjx)}(hK``char *name`` Name to use for preferred console without index. ex. "ttyS" h](j~)}(h``char *name``h]j)}(hjHh]h char *name}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjHubj)}(hhh]j/)}(h;Name to use for preferred console without index. ex. "ttyS"h]h?Name to use for preferred console without index. ex. “ttyS”}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjHhMhjHubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jwhjHhMhj[Hubjx)}(h2``int index`` Index to use for preferred console. h](j~)}(h ``int index``h]j)}(hjHh]h int index}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjHubj)}(hhh]j/)}(h#Index to use for preferred console.h]h#Index to use for preferred console.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjHhMhjHubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jwhjHhMhj[Hubeh}(h]h ]h"]h$]h&]uh1jrhj?Hubj/)}(h**Description**h]j])}(hjIh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjIubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?Hubj/)}(hCheck if the given device node matches the stdout-path property in the /chosen node. If it does then register it as the preferred console.h]hCheck if the given device node matches the stdout-path property in the /chosen node. If it does then register it as the preferred console.}(hj'IhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?Hubj/)}(h **Return**h]j])}(hj8Ih]hReturn}(hj:IhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj6Iubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?Hubj/)}(h;TRUE if console successfully setup. Otherwise return FALSE.h]h;TRUE if console successfully setup. Otherwise return FALSE.}(hjNIhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj?Hubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_map_id (C function) c.of_map_idhNtauh1hhhhhhNhNubh)}(hhh](h)}(hint of_map_id (const struct device_node *np, u32 id, const char *map_name, const char *map_mask_name, struct device_node **target, u32 *id_out)h]j)}(hint of_map_id(const struct device_node *np, u32 id, const char *map_name, const char *map_mask_name, struct device_node **target, u32 *id_out)h](j)}(hinth]hint}(hj}IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyIhhhW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjyIhhhjIhMubj})}(h of_map_idh]j1)}(h of_map_idh]h of_map_id}(hjIhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjyIhhhjIhMubj)}(h(const struct device_node *np, u32 id, const char *map_name, const char *map_mask_name, struct device_node **target, u32 *id_out)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjIubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjIubj )}(hjh]hstruct}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjIubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjIubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjIhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjImodnameN classnameNjNjQ)}jT]jW)}jJjIsb c.of_map_idasbuh1hhjIubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjIubjl)}(hjoh]h*}(hj!JhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjIubj1)}(hnph]hnp}(hj.JhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjIubj)}(hu32 idh](h)}(hhh]j1)}(hu32h]hu32}(hjJJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGJubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjLJmodnameN classnameNjNjQ)}jT]jJ c.of_map_idasbuh1hhjCJubj)}(h h]h }(hjhJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjCJubj1)}(hidh]hid}(hjvJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjIubj)}(hconst char *map_nameh](j )}(hjHh]hconst}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjJubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJubj)}(hcharh]hchar}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJubjl)}(hjoh]h*}(hjJhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjJubj1)}(hmap_nameh]hmap_name}(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjIubj)}(hconst char *map_mask_nameh](j )}(hjHh]hconst}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjJubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJubj)}(hcharh]hchar}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJubjl)}(hjoh]h*}(hj#KhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjJubj1)}(h map_mask_nameh]h map_mask_name}(hj0KhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjIubj)}(hstruct device_node **targeth](j )}(hjh]hstruct}(hjIKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjEKubj)}(h h]h }(hjVKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjEKubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjgKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdKubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjiKmodnameN classnameNjNjQ)}jT]jJ c.of_map_idasbuh1hhjEKubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjEKubjl)}(hjoh]h*}(hjKhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjEKubjl)}(hjoh]h*}(hjKhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjEKubj1)}(htargeth]htarget}(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjIubj)}(h u32 *id_outh](h)}(hhh]j1)}(hu32h]hu32}(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjKmodnameN classnameNjNjQ)}jT]jJ c.of_map_idasbuh1hhjKubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjKubjl)}(hjoh]h*}(hjKhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjKubj1)}(hid_outh]hid_out}(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjIubeh}(h]h ]h"]h$]h&]hhuh1jhjyIhhhjIhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjuIhhhjIhMubah}(h]jpIah ](j!j"eh"]h$]h&]j&j')j(huh1hhjIhMhjrIhhubj*)}(hhh]j/)}(h-Translate an ID through a downstream mapping.h]h-Translate an ID through a downstream mapping.}(hj,LhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhj)Lhhubah}(h]h ]h"]h$]h&]uh1j)hjrIhhhjIhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjDLjNjDLjOjPjQuh1hhhhhhNhNubjS)}(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 *map_mask_name`` optional property name of the mask to use. ``struct device_node **target`` optional pointer to a target device node. ``u32 *id_out`` optional pointer to receive the translated ID. **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. Either of **target** or **id_out** may be NULL if only the other is required. If **target** points to a non-NULL device node pointer, only entries targeting that node will be matched; if it points to a NULL value, it will receive the device node of the first matching target phandle, with a reference held. **Return** 0 on success or a standard error code on failure.h](j/)}(h**Parameters**h]j])}(hjNLh]h Parameters}(hjPLhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjLLubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjHLubjs)}(hhh](jx)}(h;``const struct device_node *np`` root complex device node. h](j~)}(h ``const struct device_node *np``h]j)}(hjmLh]hconst struct device_node *np}(hjoLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkLubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjgLubj)}(hhh]j/)}(hroot complex device node.h]hroot complex device node.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjLhMhjLubah}(h]h ]h"]h$]h&]uh1jhjgLubeh}(h]h ]h"]h$]h&]uh1jwhjLhMhjdLubjx)}(h``u32 id`` device ID to map. h](j~)}(h ``u32 id``h]j)}(hjLh]hu32 id}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjLubj)}(hhh]j/)}(hdevice ID to map.h]hdevice ID to map.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjLhMhjLubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jwhjLhMhjdLubjx)}(h:``const char *map_name`` property name of the map to use. h](j~)}(h``const char *map_name``h]j)}(hjLh]hconst char *map_name}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjLubj)}(hhh]j/)}(h property name of the map to use.h]h property name of the map to use.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjLhMhjLubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jwhjLhMhjdLubjx)}(hI``const char *map_mask_name`` optional property name of the mask to use. h](j~)}(h``const char *map_mask_name``h]j)}(hjMh]hconst char *map_mask_name}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjMubj)}(hhh]j/)}(h*optional property name of the mask to use.h]h*optional property name of the mask to use.}(hj1MhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj-MhMhj.Mubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jwhj-MhMhjdLubjx)}(hJ``struct device_node **target`` optional pointer to a target device node. h](j~)}(h``struct device_node **target``h]j)}(hjQMh]hstruct device_node **target}(hjSMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOMubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjKMubj)}(hhh]j/)}(h)optional pointer to a target device node.h]h)optional pointer to a target device node.}(hjjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjfMhMhjgMubah}(h]h ]h"]h$]h&]uh1jhjKMubeh}(h]h ]h"]h$]h&]uh1jwhjfMhMhjdLubjx)}(h?``u32 *id_out`` optional pointer to receive the translated ID. h](j~)}(h``u32 *id_out``h]j)}(hjMh]h u32 *id_out}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j}hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjMubj)}(hhh]j/)}(h.optional pointer to receive the translated ID.h]h.optional pointer to receive the translated ID.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjMhMhjMubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jwhjMhMhjdLubeh}(h]h ]h"]h$]h&]uh1jrhjHLubj/)}(h**Description**h]j])}(hjMh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjMubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjHLubj/)}(hXGiven 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. Either of **target** or **id_out** may be NULL if only the other is required. If **target** points to a non-NULL device node pointer, only entries targeting that node will be matched; if it points to a NULL value, it will receive the device node of the first matching target phandle, with a reference held.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. Either of }(hjMhhhNhNubj])}(h **target**h]htarget}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjMubh or }(hjMhhhNhNubj])}(h **id_out**h]hid_out}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjMubh/ may be NULL if only the other is required. If }(hjMhhhNhNubj])}(h **target**h]htarget}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjMubh points to a non-NULL device node pointer, only entries targeting that node will be matched; if it points to a NULL value, it will receive the device node of the first matching target phandle, with a reference held.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chM hjHLubj/)}(h **Return**h]j])}(hj"Nh]hReturn}(hj$NhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj Nubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjHLubj/)}(h10 on success or a standard error code on failure.h]h10 on success or a standard error code on failure.}(hj8NhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hW/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:11: ./drivers/of/base.chMhjHLubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_node_init (C function)c.of_node_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(h,void of_node_init (struct device_node *node)h]j)}(h+void of_node_init(struct device_node *node)h](j)}(hvoidh]hvoid}(hjgNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcNhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKqubj)}(h h]h }(hjvNhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjcNhhhjuNhKqubj})}(h of_node_inith]j1)}(h of_node_inith]h of_node_init}(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjcNhhhjuNhKqubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j )}(hjh]hstruct}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjNubj)}(h h]h }(hjNhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjNubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjNmodnameN classnameNjNjQ)}jT]jW)}jJjNsbc.of_node_initasbuh1hhjNubj)}(h h]h }(hjNhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjNubjl)}(hjoh]h*}(hjNhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjNubj1)}(hnodeh]hnode}(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubah}(h]h ]h"]h$]h&]hhuh1jhjcNhhhjuNhKqubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj_NhhhjuNhKqubah}(h]jZNah ](j!j"eh"]h$]h&]j&j')j(huh1hhjuNhKqhj\Nhhubj*)}(hhh]j/)}(hinitialize a devicetree nodeh]hinitialize a devicetree node}(hj'OhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKhhj$Ohhubah}(h]h ]h"]h$]h&]uh1j)hj\NhhhjuNhKqubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj?OjNj?OjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjIOh]h Parameters}(hjKOhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjGOubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKlhjCOubjs)}(hhh]jx)}(hW``struct device_node *node`` Pointer to device node that has been created by kzalloc() h](j~)}(h``struct device_node *node``h]j)}(hjhOh]hstruct device_node *node}(hjjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfOubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKihjbOubj)}(hhh]j/)}(h9Pointer to device node that has been created by kzalloc()h]h9Pointer to device node that has been created by kzalloc()}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj}OhKihj~Oubah}(h]h ]h"]h$]h&]uh1jhjbOubeh}(h]h ]h"]h$]h&]uh1jwhj}OhKihj_Oubah}(h]h ]h"]h$]h&]uh1jrhjCOubj/)}(h**Description**h]j])}(hjOh]h Description}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjOubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKkhjCOubj/)}(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 }(hjOhhhNhNubj])}(h**node**h]hnode}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjOubh 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().}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhKkhjCOubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_machine_is_compatible (C function)c.of_machine_is_compatiblehNtauh1hhhhhhNhNubh)}(hhh](h)}(h2bool of_machine_is_compatible (const char *compat)h]j)}(h1bool of_machine_is_compatible(const char *compat)h](j)}(hj h]hbool}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjPhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjOhhhjPhMubj})}(hof_machine_is_compatibleh]j1)}(hof_machine_is_compatibleh]hof_machine_is_compatible}(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjOhhhjPhMubj)}(h(const char *compat)h]j)}(hconst char *compath](j )}(hjHh]hconst}(hj6PhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2Pubj)}(h h]h }(hjCPhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj2Pubj)}(hcharh]hchar}(hjQPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2Pubj)}(h h]h }(hj_PhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj2Pubjl)}(hjoh]h*}(hjmPhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj2Pubj1)}(hcompath]hcompat}(hjzPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2Pubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.Pubah}(h]h ]h"]h$]h&]hhuh1jhjOhhhjPhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjOhhhjPhMubah}(h]jOah ](j!j"eh"]h$]h&]j&j')j(huh1hhjPhMhjOhhubj*)}(hhh]j/)}(h5Test root of device tree for a given compatible valueh]h5Test root of device tree for a given compatible value}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPhhubah}(h]h ]h"]h$]h&]uh1j)hjOhhhjPhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjPjNjPjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjPh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjPubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPubjs)}(hhh]jx)}(hY``const char *compat`` compatible string to look for in root node's compatible property. h](j~)}(h``const char *compat``h]j)}(hjPh]hconst char *compat}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPubj)}(hhh]j/)}(hAcompatible string to look for in root node's compatible property.h]hCcompatible string to look for in root node’s compatible property.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjPhMhjPubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jwhjPhMhjPubah}(h]h ]h"]h$]h&]uh1jrhjPubj/)}(h **Return**h]j])}(hj Qh]hReturn}(hj"QhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjQubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPubj/)}(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.}(hj6QhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjPubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_parse_phandle (C function)c.of_parse_phandlehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjeQhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjaQhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjsQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjaQhhhjrQhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjQmodnameN classnameNjNjQ)}jT]jW)}jJof_parse_phandlesbc.of_parse_phandleasbuh1hhjaQhhhjrQhMubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjaQhhhjrQhMubjl)}(hjoh]h*}(hjQhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjaQhhhjrQhMubj})}(hof_parse_phandleh]j1)}(hjQh]hof_parse_phandle}(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjaQhhhjrQhMubj)}(hC(const struct device_node *np, const char *phandle_name, int index)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjQubj )}(hjh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjQubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjRmodnameN classnameNjNjQ)}jT]jQc.of_parse_phandleasbuh1hhjQubj)}(h h]h }(hj6RhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjQubjl)}(hjoh]h*}(hjDRhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjQubj1)}(hnph]hnp}(hjQRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(hconst char *phandle_nameh](j )}(hjHh]hconst}(hjjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjfRubj)}(h h]h }(hjwRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjfRubj)}(hcharh]hchar}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjfRubjl)}(hjoh]h*}(hjRhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjfRubj1)}(h phandle_nameh]h phandle_name}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubj)}(h int indexh](j)}(hinth]hint}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjRubj1)}(hindexh]hindex}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubeh}(h]h ]h"]h$]h&]hhuh1jhjaQhhhjrQhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj]QhhhjrQhMubah}(h]jXQah ](j!j"eh"]h$]h&]j&j')j(huh1hhjrQhMhjZQhhubj*)}(hhh]j/)}(h3Resolve a phandle property to a device_node pointerh]h3Resolve a phandle property to a device_node pointer}(hj ShhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj Shhubah}(h]h ]h"]h$]h&]uh1j)hjZQhhhjrQhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj%SjNj%SjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj/Sh]h Parameters}(hj1ShhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj-Subah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)Subjs)}(hhh](jx)}(hQ``const struct device_node *np`` Pointer to device node holding phandle property h](j~)}(h ``const struct device_node *np``h]j)}(hjNSh]hconst struct device_node *np}(hjPShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLSubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjHSubj)}(hhh]j/)}(h/Pointer to device node holding phandle propertyh]h/Pointer to device node holding phandle property}(hjgShhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjcShMhjdSubah}(h]h ]h"]h$]h&]uh1jhjHSubeh}(h]h ]h"]h$]h&]uh1jwhjcShMhjESubjx)}(hF``const char *phandle_name`` Name of property holding a phandle value h](j~)}(h``const char *phandle_name``h]j)}(hjSh]hconst char *phandle_name}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjSubj)}(hhh]j/)}(h(Name of property holding a phandle valueh]h(Name of property holding a phandle value}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjShMhjSubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jwhjShMhjESubjx)}(h[``int index`` For properties holding a table of phandles, this is the index into the table h](j~)}(h ``int index``h]j)}(hjSh]h int index}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjSubj)}(hhh]j/)}(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}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjSubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jwhjShMhjESubeh}(h]h ]h"]h$]h&]uh1jrhj)Subj/)}(h **Return**h]j])}(hjSh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjSubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)Subj/)}(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.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj)Subeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_parse_phandle_with_args (C function)c.of_parse_phandle_with_argshNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjAThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ThhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjPThhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj=ThhhjOThMubj})}(hof_parse_phandle_with_argsh]j1)}(hof_parse_phandle_with_argsh]hof_parse_phandle_with_args}(hjbThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^Tubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj=ThhhjOThMubj)}(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 )}(hjHh]hconst}(hj~ThhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjzTubj)}(h h]h }(hjThhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjzTubj )}(hjh]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjzTubj)}(h h]h }(hjThhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjzTubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjTmodnameN classnameNjNjQ)}jT]jW)}jJjdTsbc.of_parse_phandle_with_argsasbuh1hhjzTubj)}(h h]h }(hjThhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjzTubjl)}(hjoh]h*}(hjThhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjzTubj1)}(hnph]hnp}(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjzTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvTubj)}(hconst char *list_nameh](j )}(hjHh]hconst}(hj UhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubj)}(hcharh]hchar}(hj&UhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(h h]h }(hj4UhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubjl)}(hjoh]h*}(hjBUhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjUubj1)}(h list_nameh]h list_name}(hjOUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvTubj)}(hconst char *cells_nameh](j )}(hjHh]hconst}(hjhUhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjdUubj)}(h h]h }(hjuUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjdUubj)}(hcharh]hchar}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjdUubjl)}(hjoh]h*}(hjUhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjdUubj1)}(h cells_nameh]h cells_name}(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvTubj)}(h int indexh](j)}(hinth]hint}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubj1)}(hindexh]hindex}(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvTubj)}(h struct of_phandle_args *out_argsh](j )}(hjh]hstruct}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjUubj)}(h h]h }(hjVhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjVmodnameN classnameNjNjQ)}jT]jTc.of_parse_phandle_with_argsasbuh1hhjUubj)}(h h]h }(hj6VhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubjl)}(hjoh]h*}(hjDVhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjUubj1)}(hout_argsh]hout_args}(hjQVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvTubeh}(h]h ]h"]h$]h&]hhuh1jhj=ThhhjOThMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj9ThhhjOThMubah}(h]j4Tah ](j!j"eh"]h$]h&]j&j')j(huh1hhjOThMhj6Thhubj*)}(hhh]j/)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hj{VhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjxVhhubah}(h]h ]h"]h$]h&]uh1j)hj6ThhhjOThMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjVjNjVjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjVh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjVubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubjs)}(hhh](jx)}(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)}(hjVh]hconst struct device_node *np}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj)}(hhh]j/)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjVhMhjVubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jwhjVhMhjVubjx)}(h=``const char *list_name`` property name that contains a list h](j~)}(h``const char *list_name``h]j)}(hjVh]hconst char *list_name}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj)}(hhh]j/)}(h"property name that contains a listh]h"property name that contains a list}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj WhMhj Wubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jwhj WhMhjVubjx)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j~)}(h``const char *cells_name``h]j)}(hj.Wh]hconst char *cells_name}(hj0WhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,Wubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj(Wubj)}(hhh]j/)}(h6property name that specifies phandles' arguments counth]h8property name that specifies phandles’ arguments count}(hjGWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjCWhMhjDWubah}(h]h ]h"]h$]h&]uh1jhj(Wubeh}(h]h ]h"]h$]h&]uh1jwhjCWhMhjVubjx)}(h.``int index`` index of a phandle to parse out h](j~)}(h ``int index``h]j)}(hjgWh]h int index}(hjiWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeWubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjaWubj)}(hhh]j/)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj|WhMhj}Wubah}(h]h ]h"]h$]h&]uh1jhjaWubeh}(h]h ]h"]h$]h&]uh1jwhj|WhMhjVubjx)}(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)}(hjWh]h struct of_phandle_args *out_args}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjWubj)}(hhh]j/)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjWhMhjWubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jwhjWhMhjVubeh}(h]h ]h"]h$]h&]uh1jrhjVubj/)}(h**Description**h]j])}(hjWh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjWubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj/)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj/)}(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.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj/)}(h Example::h]hExample:}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj;)}(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>; };}hjXsbah}(h]h ]h"]h$]h&]hhuh1j;hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjVubj/)}(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 }(hj-XhhhNhNubj)}(h ``node2``h]hnode2}(hj5XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-Xubh] node you may call this: of_parse_phandle_with_args(node3, “list”, “#list-cells”, 1, }(hj-XhhhNhNubh)}(h:c:type:`args`h]j)}(hjIXh]hargs}(hjKXhhhNhNubah}(h]h ](j;jHc-typeeh"]h$]h&]uh1jhjGXubah}(h]h ]h"]h$]h&]refdocj; refdomainjHreftypetype refexplicitrefwarnjNj;j;argsuh1hhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj-Xubh);}(hj-XhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hjfXhMhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h-of_parse_phandle_with_fixed_args (C function)"c.of_parse_phandle_with_fixed_argshNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM.ubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjXhhhjXhM.ubj})}(h of_parse_phandle_with_fixed_argsh]j1)}(h of_parse_phandle_with_fixed_argsh]h of_parse_phandle_with_fixed_args}(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjXhhhjXhM.ubj)}(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 )}(hjHh]hconst}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjXubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjXubj )}(hjh]hstruct}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjXubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjXubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj YmodnameN classnameNjNjQ)}jT]jW)}jJjXsb"c.of_parse_phandle_with_fixed_argsasbuh1hhjXubj)}(h h]h }(hj'YhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjXubjl)}(hjoh]h*}(hj5YhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjXubj1)}(hnph]hnp}(hjBYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hconst char *list_nameh](j )}(hjHh]hconst}(hj[YhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjWYubj)}(h h]h }(hjhYhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWYubj)}(hcharh]hchar}(hjvYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWYubjl)}(hjoh]h*}(hjYhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjWYubj1)}(h list_nameh]h list_name}(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hint cell_counth](j)}(hinth]hint}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjYubj1)}(h cell_counth]h cell_count}(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(h int indexh](j)}(hinth]hint}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj)}(h h]h }(hjYhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjYubj1)}(hindexh]hindex}(hj ZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(h struct of_phandle_args *out_argsh](j )}(hjh]hstruct}(hj"ZhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjZubj)}(h h]h }(hj/ZhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjZubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hj@ZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=Zubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjBZmodnameN classnameNjNjQ)}jT]j#Y"c.of_parse_phandle_with_fixed_argsasbuh1hhjZubj)}(h h]h }(hj^ZhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjZubjl)}(hjoh]h*}(hjlZhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjZubj1)}(hout_argsh]hout_args}(hjyZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubeh}(h]h ]h"]h$]h&]hhuh1jhjXhhhjXhM.ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjXhhhjXhM.ubah}(h]jXah ](j!j"eh"]h$]h&]j&j')j(huh1hhjXhM.hjXhhubj*)}(hhh]j/)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZhhubah}(h]h ]h"]h$]h&]uh1j)hjXhhhjXhM.ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjZjNjZjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjZh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjZubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZubjs)}(hhh](jx)}(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)}(hjZh]hconst struct device_node *np}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZubj)}(hhh]j/)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjZhMhjZubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jwhjZhMhjZubjx)}(h=``const char *list_name`` property name that contains a list h](j~)}(h``const char *list_name``h]j)}(hj[h]hconst char *list_name}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj[ubj)}(hhh]j/)}(h"property name that contains a listh]h"property name that contains a list}(hj6[hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj2[hMhj3[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jwhj2[hMhjZubjx)}(hB``int cell_count`` number of argument cells following the phandle h](j~)}(h``int cell_count``h]j)}(hjV[h]hint cell_count}(hjX[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT[ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjP[ubj)}(hhh]j/)}(h.number of argument cells following the phandleh]h.number of argument cells following the phandle}(hjo[hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjk[hMhjl[ubah}(h]h ]h"]h$]h&]uh1jhjP[ubeh}(h]h ]h"]h$]h&]uh1jwhjk[hMhjZubjx)}(h.``int index`` index of a phandle to parse out h](j~)}(h ``int index``h]j)}(hj[h]h int index}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj[ubj)}(hhh]j/)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jwhj[hMhjZubjx)}(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[h]h struct of_phandle_args *out_args}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj[ubj)}(hhh]j/)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jwhj[hMhjZubeh}(h]h ]h"]h$]h&]uh1jrhjZubj/)}(h**Description**h]j])}(hj\h]h Description}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj\ubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZubj/)}(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\hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZubj/)}(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.}(hj(\hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZubj/)}(h Example::h]hExample:}(hj7\hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjZubj;)}(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>; };}hjF\sbah}(h]h ]h"]h$]h&]hhuh1j;hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM!hjZubj/)}(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 }(hjU\hhhNhNubj)}(h ``node2``h]hnode2}(hj]\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU\ubhS node you may call this: of_parse_phandle_with_fixed_args(node3, “list”, 2, 1, }(hjU\hhhNhNubh)}(h:c:type:`args`h]j)}(hjq\h]hargs}(hjs\hhhNhNubah}(h]h ](j;jHc-typeeh"]h$]h&]uh1jhjo\ubah}(h]h ]h"]h$]h&]refdocj; refdomainjHreftypetype refexplicitrefwarnjNj;j;argsuh1hhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM+hjU\ubh);}(hjU\hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hj\hM+hjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h0of_parse_phandle_with_optional_args (C function)%c.of_parse_phandle_with_optional_argshNtauh1hhhhhhNhNubh)}(hhh](h)}(hint of_parse_phandle_with_optional_args (const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h]j)}(hint of_parse_phandle_with_optional_args(const struct device_node *np, const char *list_name, const char *cells_name, int index, struct of_phandle_args *out_args)h](j)}(hinth]hint}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMGubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\hhhj\hMGubj})}(h#of_parse_phandle_with_optional_argsh]j1)}(h#of_parse_phandle_with_optional_argsh]h#of_parse_phandle_with_optional_args}(hj\hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj\hhhj\hMGubj)}(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 )}(hjHh]hconst}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubj )}(hjh]hstruct}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj/]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,]ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj1]modnameN classnameNjNjQ)}jT]jW)}jJj\sb%c.of_parse_phandle_with_optional_argsasbuh1hhj\ubj)}(h h]h }(hjO]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubjl)}(hjoh]h*}(hj]]hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj\ubj1)}(hnph]hnp}(hjj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(hconst char *list_nameh](j )}(hjHh]hconst}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]ubj)}(hcharh]hchar}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]ubjl)}(hjoh]h*}(hj]hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj]ubj1)}(h list_nameh]h list_name}(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(hconst char *cells_nameh](j )}(hjHh]hconst}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]ubj)}(hcharh]hchar}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(h h]h }(hj ^hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]ubjl)}(hjoh]h*}(hj^hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj]ubj1)}(h cells_nameh]h cells_name}(hj$^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(h int indexh](j)}(hinth]hint}(hj=^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9^ubj)}(h h]h }(hjK^hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9^ubj1)}(hindexh]hindex}(hjY^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(h struct of_phandle_args *out_argsh](j )}(hjh]hstruct}(hjr^hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjn^ubj)}(h h]h }(hj^hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjn^ubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hj^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj^modnameN classnameNjNjQ)}jT]jK]%c.of_parse_phandle_with_optional_argsasbuh1hhjn^ubj)}(h h]h }(hj^hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjn^ubjl)}(hjoh]h*}(hj^hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjn^ubj1)}(hout_argsh]hout_args}(hj^hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjn^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubeh}(h]h ]h"]h$]h&]hhuh1jhj\hhhj\hMGubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj\hhhj\hMGubah}(h]j\ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj\hMGhj\hhubj*)}(hhh]j/)}(h(Find a node pointed by phandle in a listh]h(Find a node pointed by phandle in a list}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM9hj^hhubah}(h]h ]h"]h$]h&]uh1j)hj\hhhj\hMGubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj _jNj _jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj_h]h Parameters}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj_ubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM=hj_ubjs)}(hhh](jx)}(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)}(hj4_h]hconst struct device_node *np}(hj6_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2_ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM:hj._ubj)}(hhh]j/)}(h/pointer to a device tree node containing a listh]h/pointer to a device tree node containing a list}(hjM_hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjI_hM:hjJ_ubah}(h]h ]h"]h$]h&]uh1jhj._ubeh}(h]h ]h"]h$]h&]uh1jwhjI_hM:hj+_ubjx)}(h=``const char *list_name`` property name that contains a list h](j~)}(h``const char *list_name``h]j)}(hjm_h]hconst char *list_name}(hjo_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk_ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM;hjg_ubj)}(hhh]j/)}(h"property name that contains a listh]h"property name that contains a list}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj_hM;hj_ubah}(h]h ]h"]h$]h&]uh1jhjg_ubeh}(h]h ]h"]h$]h&]uh1jwhj_hM;hj+_ubjx)}(hR``const char *cells_name`` property name that specifies phandles' arguments count h](j~)}(h``const char *cells_name``h]j)}(hj_h]hconst char *cells_name}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM<hj_ubj)}(hhh]j/)}(h6property name that specifies phandles' arguments counth]h8property name that specifies phandles’ arguments count}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj_hM<hj_ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jwhj_hM<hj+_ubjx)}(h.``int index`` index of a phandle to parse out h](j~)}(h ``int index``h]j)}(hj_h]h int index}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM=hj_ubj)}(hhh]j/)}(hindex of a phandle to parse outh]hindex of a phandle to parse out}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj_hM=hj_ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jwhj_hM=hj+_ubjx)}(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`h]h struct of_phandle_args *out_args}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM>hj`ubj)}(hhh]j/)}(h?optional pointer to output arguments structure (will be filled)h]h?optional pointer to output arguments structure (will be filled)}(hj1`hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj-`hM>hj.`ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jwhj-`hM>hj+_ubeh}(h]h ]h"]h$]h&]uh1jrhj_ubj/)}(h**Description**h]j])}(hjS`h]h Description}(hjU`hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjQ`ubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM@hj_ubj/)}(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.}(hji`hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM@hj_ubj/)}(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.}(hjx`hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMChj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"of_phandle_args_equal (C function)c.of_phandle_args_equalhNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMYubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj`hhhj`hMYubj})}(hof_phandle_args_equalh]j1)}(hof_phandle_args_equalh]hof_phandle_args_equal}(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj`hhhj`hMYubj)}(hD(const struct of_phandle_args *a1, const struct of_phandle_args *a2)h](j)}(h const struct of_phandle_args *a1h](j )}(hjHh]hconst}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj`ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj`ubj )}(hjh]hstruct}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj`ubj)}(h h]h }(hj ahhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj`ubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hjahhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjamodnameN classnameNjNjQ)}jT]jW)}jJj`sbc.of_phandle_args_equalasbuh1hhj`ubj)}(h h]h }(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMbhj;dhhubah}(h]h ]h"]h$]h&]uh1j)hjbhhhjchMnubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjVdjNjVdjOjPjQuh1hhhhhhNhNubjS)}(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 sucess, -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](j/)}(h**Parameters**h]j])}(hj`dh]h Parameters}(hjbdhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj^dubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMfhjZdubjs)}(hhh](jx)}(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)}(hjdh]hconst struct device_node *np}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}dubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMdhjydubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjdhMdhjdubah}(h]h ]h"]h$]h&]uh1jhjydubeh}(h]h ]h"]h$]h&]uh1jwhjdhMdhjvdubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjdh]hconst char *propname}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMehjdubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjdhMehjdubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jwhjdhMehjvdubeh}(h]h ]h"]h$]h&]uh1jrhjZdubj/)}(h**Description**h]j])}(hjdh]h Description}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjdubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMghjZdubj/)}(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.}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMghjZdubj/)}(h **Return**h]j])}(hjeh]hReturn}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjeubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMjhjZdubj/)}(hThe number of elements on sucess, -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 sucess, -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.}(hj0ehhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMjhjZdubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(of_property_count_u16_elems (C function)c.of_property_count_u16_elemshNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj_ehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ehhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjnehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj[ehhhjmehMubj})}(hof_property_count_u16_elemsh]j1)}(hof_property_count_u16_elemsh]hof_property_count_u16_elems}(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|eubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj[ehhhjmehMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjeubj)}(h h]h }(hjehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjeubj )}(hjh]hstruct}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjeubj)}(h h]h }(hjehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjeubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjeubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjemodnameN classnameNjNjQ)}jT]jW)}jJjesbc.of_property_count_u16_elemsasbuh1hhjeubj)}(h h]h }(hjehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjeubjl)}(hjoh]h*}(hjfhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjeubj1)}(hnph]hnp}(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hj)fhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj%fubj)}(h h]h }(hj6fhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj%fubj)}(hcharh]hchar}(hjDfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%fubj)}(h h]h }(hjRfhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj%fubjl)}(hjoh]h*}(hj`fhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj%fubj1)}(hpropnameh]hpropname}(hjmfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%fubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjeubeh}(h]h ]h"]h$]h&]hhuh1jhj[ehhhjmehMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjWehhhjmehMubah}(h]jReah ](j!j"eh"]h$]h&]j&j')j(huh1hhjmehMhjTehhubj*)}(hhh]j/)}(h.Count the number of u16 elements in a propertyh]h.Count the number of u16 elements in a property}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMuhjfhhubah}(h]h ]h"]h$]h&]uh1j)hjTehhhjmehMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjfjNjfjOjPjQuh1hhhhhhNhNubjS)}(hX**Parameters** ``const struct device_node *np`` device node from which the property value is to be read. ``const char *propname`` name of the property to be searched. **Description** Search for a property in a device node and count the number of u16 elements in it. **Return** The number of elements on sucess, -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](j/)}(h**Parameters**h]j])}(hjfh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjfubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMyhjfubjs)}(hhh](jx)}(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)}(hjfh]hconst struct device_node *np}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMwhjfubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjfhMwhjfubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jwhjfhMwhjfubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjgh]hconst char *propname}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMxhj gubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj*ghhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj&ghMxhj'gubah}(h]h ]h"]h$]h&]uh1jhj gubeh}(h]h ]h"]h$]h&]uh1jwhj&ghMxhjfubeh}(h]h ]h"]h$]h&]uh1jrhjfubj/)}(h**Description**h]j])}(hjLgh]h Description}(hjNghhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjJgubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMzhjfubj/)}(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.}(hjbghhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMzhjfubj/)}(h **Return**h]j])}(hjsgh]hReturn}(hjughhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjqgubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM}hjfubj/)}(hThe number of elements on sucess, -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 sucess, -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.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM}hjfubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(of_property_count_u32_elems (C function)c.of_property_count_u32_elemshNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjghhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjghhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjghhhjghMubj})}(hof_property_count_u32_elemsh]j1)}(hof_property_count_u32_elemsh]hof_property_count_u32_elems}(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjghhhjghMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjgubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjgubj )}(hjh]hstruct}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjgubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjgubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj.hhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+hubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj0hmodnameN classnameNjNjQ)}jT]jW)}jJjgsbc.of_property_count_u32_elemsasbuh1hhjgubj)}(h h]h }(hjNhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjgubjl)}(hjoh]h*}(hj\hhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjgubj1)}(hnph]hnp}(hjihhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj~hubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj~hubj)}(hcharh]hchar}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~hubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj~hubjl)}(hjoh]h*}(hjhhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj~hubj1)}(hpropnameh]hpropname}(hjhhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~hubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubeh}(h]h ]h"]h$]h&]hhuh1jhjghhhjghMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjghhhjghMubah}(h]jgah ](j!j"eh"]h$]h&]j&j')j(huh1hhjghMhjghhubj*)}(hhh]j/)}(h.Count the number of u32 elements in a propertyh]h.Count the number of u32 elements in a property}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjhhhubah}(h]h ]h"]h$]h&]uh1j)hjghhhjghMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjijNjijOjPjQuh1hhhhhhNhNubjS)}(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 sucess, -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](j/)}(h**Parameters**h]j])}(hjih]h Parameters}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjiubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj iubjs)}(hhh](jx)}(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)}(hj1ih]hconst struct device_node *np}(hj3ihhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/iubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj+iubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjJihhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjFihMhjGiubah}(h]h ]h"]h$]h&]uh1jhj+iubeh}(h]h ]h"]h$]h&]uh1jwhjFihMhj(iubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjjih]hconst char *propname}(hjlihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhiubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjdiubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjihMhjiubah}(h]h ]h"]h$]h&]uh1jhjdiubeh}(h]h ]h"]h$]h&]uh1jwhjihMhj(iubeh}(h]h ]h"]h$]h&]uh1jrhj iubj/)}(h**Description**h]j])}(hjih]h Description}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjiubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj iubj/)}(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.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj iubj/)}(h **Return**h]j])}(hjih]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjiubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj iubj/)}(hThe number of elements on sucess, -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 sucess, -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.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj iubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(of_property_count_u64_elems (C function)c.of_property_count_u64_elemshNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj jhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hj jhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj jhhhjjhMubj})}(hof_property_count_u64_elemsh]j1)}(hof_property_count_u64_elemsh]hof_property_count_u64_elems}(hj2jhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.jubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj jhhhjjhMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjNjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjJjubj)}(h h]h }(hj[jhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJjubj )}(hjh]hstruct}(hjijhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjJjubj)}(h h]h }(hjvjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjjmodnameN classnameNjNjQ)}jT]jW)}jJj4jsbc.of_property_count_u64_elemsasbuh1hhjJjubj)}(h h]h }(hjjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjJjubjl)}(hjoh]h*}(hjjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjJjubj1)}(hnph]hnp}(hjjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjJjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjFjubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjubj)}(h h]h }(hjjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjjubj)}(hcharh]hchar}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjjubjl)}(hjoh]h*}(hjkhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjjubj1)}(hpropnameh]hpropname}(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjFjubeh}(h]h ]h"]h$]h&]hhuh1jhj jhhhjjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj jhhhjjhMubah}(h]jjah ](j!j"eh"]h$]h&]j&j')j(huh1hhjjhMhjjhhubj*)}(hhh]j/)}(h.Count the number of u64 elements in a propertyh]h.Count the number of u64 elements in a property}(hjIkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjFkhhubah}(h]h ]h"]h$]h&]uh1j)hjjhhhjjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjakjNjakjOjPjQuh1hhhhhhNhNubjS)}(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 sucess, -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](j/)}(h**Parameters**h]j])}(hjkkh]h Parameters}(hjmkhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjikubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjekubjs)}(hhh](jx)}(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)}(hjkh]hconst struct device_node *np}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjkubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jwhjkhMhjkubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjkh]hconst char *propname}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjkubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjkhMhjkubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jwhjkhMhjkubeh}(h]h ]h"]h$]h&]uh1jrhjekubj/)}(h**Description**h]j])}(hjkh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjkubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjekubj/)}(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.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjekubj/)}(h **Return**h]j])}(hj%lh]hReturn}(hj'lhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj#lubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjekubj/)}(hThe number of elements on sucess, -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 sucess, -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;lhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjekubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*of_property_read_string_array (C function)c.of_property_read_string_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjflhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjylhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjflhhhjxlhMubj})}(hof_property_read_string_arrayh]j1)}(hof_property_read_string_arrayh]hof_property_read_string_array}(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjflhhhjxlhMubj)}(hV(const struct device_node *np, const char *propname, const char **out_strs, size_t sz)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjlubj)}(h h]h }(hjlhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjlubj )}(hjh]hstruct}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjlubj)}(h h]h }(hjlhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjlubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjlmodnameN classnameNjNjQ)}jT]jW)}jJjlsbc.of_property_read_string_arrayasbuh1hhjlubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjlubjl)}(hjoh]h*}(hjmhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjlubj1)}(hnph]hnp}(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hj4mhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj0mubj)}(h h]h }(hjAmhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0mubj)}(hcharh]hchar}(hjOmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0mubj)}(h h]h }(hj]mhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0mubjl)}(hjoh]h*}(hjkmhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj0mubj1)}(hpropnameh]hpropname}(hjxmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0mubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubj)}(hconst char **out_strsh](j )}(hjHh]hconst}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjmubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjmubj)}(hcharh]hchar}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjmubjl)}(hjoh]h*}(hjmhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjmubjl)}(hjoh]h*}(hjmhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjmubj1)}(hout_strsh]hout_strs}(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubj)}(h size_t szh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjnmodnameN classnameNjNjQ)}jT]jlc.of_property_read_string_arrayasbuh1hhjmubj)}(h h]h }(hjnhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjmubj1)}(hszh]hsz}(hj*nhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubeh}(h]h ]h"]h$]h&]hhuh1jhjflhhhjxlhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjblhhhjxlhMubah}(h]j]lah ](j!j"eh"]h$]h&]j&j')j(huh1hhjxlhMhj_lhhubj*)}(hhh]j/)}(h:Read an array of strings from a multiple strings property.h]h:Read an array of strings from a multiple strings property.}(hjTnhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjQnhhubah}(h]h ]h"]h$]h&]uh1j)hj_lhhhjxlhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjlnjNjlnjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjvnh]h Parameters}(hjxnhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjtnubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjpnubjs)}(hhh](jx)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j~)}(h ``const struct device_node *np``h]j)}(hjnh]hconst struct device_node *np}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jwhjnhMhjnubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjnh]hconst char *propname}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjnubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjnhMhjnubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jwhjnhMhjnubjx)}(h;``const char **out_strs`` output array of string pointers. h](j~)}(h``const char **out_strs``h]j)}(hjoh]hconst char **out_strs}(hj ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjoubj)}(hhh]j/)}(h output array of string pointers.h]h output array of string pointers.}(hj ohhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjohMhjoubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jwhjohMhjnubjx)}(h0``size_t sz`` number of array elements to read. h](j~)}(h ``size_t sz``h]j)}(hj@oh]h size_t sz}(hjBohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>oubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj:oubj)}(hhh]j/)}(h!number of array elements to read.h]h!number of array elements to read.}(hjYohhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjUohMhjVoubah}(h]h ]h"]h$]h&]uh1jhj:oubeh}(h]h ]h"]h$]h&]uh1jwhjUohMhjnubeh}(h]h ]h"]h$]h&]uh1jrhjpnubj/)}(h**Description**h]j])}(hj{oh]h Description}(hj}ohhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjyoubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjpnubj/)}(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.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjpnubj/)}(h **Return**h]j])}(hjoh]hReturn}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjoubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjpnubj/)}(hKIf **out_strs** is NULL, the number of strings in the property is returned.h](hIf }(hjohhhNhNubj])}(h **out_strs**h]hout_strs}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjoubh< is NULL, the number of strings in the property is returned.}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjpnubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&of_property_count_strings (C function)c.of_property_count_stringshNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjohhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjohhhjphMubj})}(hof_property_count_stringsh]j1)}(hof_property_count_stringsh]hof_property_count_strings}(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjohhhjphMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hj6phhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2pubj)}(h h]h }(hjCphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj2pubj )}(hjh]hstruct}(hjQphhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2pubj)}(h h]h }(hj^phhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj2pubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjophhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjlpubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjqpmodnameN classnameNjNjQ)}jT]jW)}jJjpsbc.of_property_count_stringsasbuh1hhj2pubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj2pubjl)}(hjoh]h*}(hjphhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj2pubj1)}(hnph]hnp}(hjphhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2pubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.pubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjpubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjpubj)}(hcharh]hchar}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjpubjl)}(hjoh]h*}(hjphhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjpubj1)}(hpropnameh]hpropname}(hjqhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.pubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjphMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjohhhjphMubah}(h]joah ](j!j"eh"]h$]h&]j&j')j(huh1hhjphMhjohhubj*)}(hhh]j/)}(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.}(hj1qhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj.qhhubah}(h]h ]h"]h$]h&]uh1j)hjohhhjphMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjIqjNjIqjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjSqh]h Parameters}(hjUqhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjQqubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjMqubjs)}(hhh](jx)}(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)}(hjrqh]hconst struct device_node *np}(hjtqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpqubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjlqubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjqhMhjqubah}(h]h ]h"]h$]h&]uh1jhjlqubeh}(h]h ]h"]h$]h&]uh1jwhjqhMhjiqubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjqh]hconst char *propname}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjqubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjqhMhjqubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jwhjqhMhjiqubeh}(h]h ]h"]h$]h&]uh1jrhjMqubj/)}(h**Description**h]j])}(hjqh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjqubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjMqubj/)}(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.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjMqubj/)}(h **Return**h]j])}(hj rh]hReturn}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj rubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjMqubj/)}(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.}(hj#rhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjMqubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*of_property_read_string_index (C function)c.of_property_read_string_indexhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjRrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNrhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjarhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjNrhhhj`rhMubj})}(hof_property_read_string_indexh]j1)}(hof_property_read_string_indexh]hof_property_read_string_index}(hjsrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjorubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjNrhhhj`rhMubj)}(hT(const struct device_node *np, const char *propname, int index, const char **output)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjrubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjrubj )}(hjh]hstruct}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjrubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjrubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjrhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjrmodnameN classnameNjNjQ)}jT]jW)}jJjursbc.of_property_read_string_indexasbuh1hhjrubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjrubjl)}(hjoh]h*}(hjrhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjrubj1)}(hnph]hnp}(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjsubj)}(h h]h }(hj)shhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjsubj)}(hcharh]hchar}(hj7shhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj)}(h h]h }(hjEshhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjsubjl)}(hjoh]h*}(hjSshhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjsubj1)}(hpropnameh]hpropname}(hj`shhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubj)}(h int indexh](j)}(hinth]hint}(hjyshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjusubj)}(h h]h }(hjshhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjusubj1)}(hindexh]hindex}(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjusubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubj)}(hconst char **outputh](j )}(hjHh]hconst}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjsubj)}(h h]h }(hjshhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjsubj)}(hcharh]hchar}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj)}(h h]h }(hjshhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjsubjl)}(hjoh]h*}(hjshhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjsubjl)}(hjoh]h*}(hjshhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjsubj1)}(houtputh]houtput}(hjshhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubeh}(h]h ]h"]h$]h&]hhuh1jhjNrhhhj`rhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjJrhhhj`rhMubah}(h]jErah ](j!j"eh"]h$]h&]j&j')j(huh1hhj`rhMhjGrhhubj*)}(hhh]j/)}(h8Find and read a string from a multiple strings property.h]h8Find and read a string from a multiple strings property.}(hj)thhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj&thhubah}(h]h ]h"]h$]h&]uh1j)hjGrhhhj`rhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjAtjNjAtjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjKth]h Parameters}(hjMthhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjItubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjEtubjs)}(hhh](jx)}(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)}(hjjth]hconst struct device_node *np}(hjlthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhtubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjdtubj)}(hhh]j/)}(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&]uh1j.hjthMhjtubah}(h]h ]h"]h$]h&]uh1jhjdtubeh}(h]h ]h"]h$]h&]uh1jwhjthMhjatubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjth]hconst char *propname}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjthMhjtubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jwhjthMhjatubjx)}(h9``int index`` index of the string in the list of strings h](j~)}(h ``int index``h]j)}(hjth]h int index}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjtubj)}(hhh]j/)}(h*index of the string in the list of stringsh]h*index of the string in the list of strings}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjthMhjtubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jwhjthMhjatubjx)}(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)}(hjuh]hconst char **output}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjuubj)}(hhh]j/)}(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.}(hj.uhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj+uubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jwhj*uhMhjatubeh}(h]h ]h"]h$]h&]uh1jrhjEtubj/)}(h**Description**h]j])}(hjQuh]h Description}(hjSuhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjOuubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjEtubj/)}(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.}(hjguhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjEtubj/)}(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.}(hjvuhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjEtubj/)}(h **Return**h]j])}(hjuh]hReturn}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjuubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjEtubj/)}(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.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjEtubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h of_property_present (C function)c.of_property_presenthNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjuhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjuhhhjuhMubj})}(hof_property_presenth]j1)}(hof_property_presenth]hof_property_present}(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjuubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjuhhhjuhMubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjvubj)}(h h]h }(hjvhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjvubj )}(hjh]hstruct}(hj#vhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjvubj)}(h h]h }(hj0vhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjvubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjAvhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>vubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjCvmodnameN classnameNjNjQ)}jT]jW)}jJjusbc.of_property_presentasbuh1hhjvubj)}(h h]h }(hjavhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjvubjl)}(hjoh]h*}(hjovhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjvubj1)}(hnph]hnp}(hj|vhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjvubj)}(h h]h }(hjvhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjvubj)}(hcharh]hchar}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj)}(h h]h }(hjvhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjvubjl)}(hjoh]h*}(hjvhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjvubj1)}(hpropnameh]hpropname}(hjvhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjvubeh}(h]h ]h"]h$]h&]hhuh1jhjuhhhjuhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjuhhhjuhMubah}(h]juah ](j!j"eh"]h$]h&]j&j')j(huh1hhjuhMhjuhhubj*)}(hhh]j/)}(h'Test if a property is present in a nodeh]h'Test if a property is present in a node}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwhhubah}(h]h ]h"]h$]h&]uh1j)hjuhhhjuhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjwjNjwjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj%wh]h Parameters}(hj'whhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj#wubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwubjs)}(hhh](jx)}(hI``const struct device_node *np`` device node to search for the property. h](j~)}(h ``const struct device_node *np``h]j)}(hjDwh]hconst struct device_node *np}(hjFwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBwubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj>wubj)}(hhh]j/)}(h'device node to search for the property.h]h'device node to search for the property.}(hj]whhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjYwhMhjZwubah}(h]h ]h"]h$]h&]uh1jhj>wubeh}(h]h ]h"]h$]h&]uh1jwhjYwhMhj;wubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hj}wh]hconst char *propname}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{wubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwwubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjwhMhjwubah}(h]h ]h"]h$]h&]uh1jhjwwubeh}(h]h ]h"]h$]h&]uh1jwhjwhMhj;wubeh}(h]h ]h"]h$]h&]uh1jrhjwubj/)}(h**Description**h]j])}(hjwh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjwubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwubj/)}(h-Test for a property present in a device node.h]h-Test for a property present in a device node.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwubj/)}(h **Return**h]j])}(hjwh]hReturn}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjwubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwubj/)}(h,true if the property exists false otherwise.h]h,true if the property exists false otherwise.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjwubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&of_property_read_u8_array (C function)c.of_property_read_u8_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj$xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj xhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hj3xhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj xhhhj2xhMubj})}(hof_property_read_u8_arrayh]j1)}(hof_property_read_u8_arrayh]hof_property_read_u8_array}(hjExhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAxubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj xhhhj2xhMubj)}(hO(const struct device_node *np, const char *propname, u8 *out_values, size_t sz)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjaxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj]xubj)}(h h]h }(hjnxhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]xubj )}(hjh]hstruct}(hj|xhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj]xubj)}(h h]h }(hjxhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]xubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjxubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjxmodnameN classnameNjNjQ)}jT]jW)}jJjGxsbc.of_property_read_u8_arrayasbuh1hhj]xubj)}(h h]h }(hjxhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj]xubjl)}(hjoh]h*}(hjxhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj]xubj1)}(hnph]hnp}(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj]xubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYxubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjxubj)}(h h]h }(hjxhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjxubj)}(hcharh]hchar}(hj yhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjxubjl)}(hjoh]h*}(hj%yhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjxubj1)}(hpropnameh]hpropname}(hj2yhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYxubj)}(hu8 *out_valuesh](h)}(hhh]j1)}(hu8h]hu8}(hjNyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKyubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjPymodnameN classnameNjNjQ)}jT]jxc.of_property_read_u8_arrayasbuh1hhjGyubj)}(h h]h }(hjlyhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjGyubjl)}(hjoh]h*}(hjzyhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjGyubj1)}(h out_valuesh]h out_values}(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYxubj)}(h size_t szh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjymodnameN classnameNjNjQ)}jT]jxc.of_property_read_u8_arrayasbuh1hhjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjyubj1)}(hszh]hsz}(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYxubeh}(h]h ]h"]h$]h&]hhuh1jhj xhhhj2xhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjxhhhj2xhMubah}(h]jxah ](j!j"eh"]h$]h&]j&j')j(huh1hhj2xhMhjxhhubj*)}(hhh]j/)}(h-Find and read an array of u8 from a property.h]h-Find and read an array of u8 from a property.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjyhhubah}(h]h ]h"]h$]h&]uh1j)hjxhhhj2xhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjzjNjzjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjzh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjzubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubjs)}(hhh](jx)}(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:zh]hconst struct device_node *np}(hj``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjszh]hconst char *propname}(hjuzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqzubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjmzubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjzhMhjzubah}(h]h ]h"]h$]h&]uh1jhjmzubeh}(h]h ]h"]h$]h&]uh1jwhjzhMhj1zubjx)}(hP``u8 *out_values`` pointer to return value, modified only if return value is 0. h](j~)}(h``u8 *out_values``h]j)}(hjzh]hu8 *out_values}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubj)}(hhh]j/)}(h;`` h](j~)}(h"dts entry of array should be like:h]h"dts entry of array should be like:}(hjL{hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjH{ubj)}(hhh]j/)}(h)``property = /bits/ 8 <0x50 0x60 0x70>;``h]j)}(hj`{h]h%property = /bits/ 8 <0x50 0x60 0x70>;}(hjb{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^{ubah}(h]h ]h"]h$]h&]uh1j.hjZ{hM hj[{ubah}(h]h ]h"]h$]h&]uh1jhjH{ubeh}(h]h ]h"]h$]h&]uh1jwhjZ{hM hjE{ubah}(h]h ]h"]h$]h&]uh1jrhjzubj/)}(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.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjzubj/)}(h **Return**h]j])}(hj{h]hReturn}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj{ubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjzubj/)}(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&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_property_read_u16_array (C function)c.of_property_read_u16_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM3ubj)}(h h]h }(hj{hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj{hhhj{hM3ubj})}(hof_property_read_u16_arrayh]j1)}(hof_property_read_u16_arrayh]hof_property_read_u16_array}(hj{hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj{hhhj{hM3ubj)}(hP(const struct device_node *np, const char *propname, u16 *out_values, size_t sz)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(h h]h }(hj'|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubj )}(hjh]hstruct}(hj5|hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(h h]h }(hjB|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjS|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjP|ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjU|modnameN classnameNjNjQ)}jT]jW)}jJj|sbc.of_property_read_u16_arrayasbuh1hhj|ubj)}(h h]h }(hjs|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubjl)}(hjoh]h*}(hj|hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj|ubj1)}(hnph]hnp}(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubj)}(hcharh]hchar}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubjl)}(hjoh]h*}(hj|hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj|ubj1)}(hpropnameh]hpropname}(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(hu16 *out_valuesh](h)}(hhh]j1)}(hu16h]hu16}(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj }modnameN classnameNjNjQ)}jT]jo|c.of_property_read_u16_arrayasbuh1hhj}ubj)}(h h]h }(hj%}hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj}ubjl)}(hjoh]h*}(hj3}hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj}ubj1)}(h out_valuesh]h out_values}(hj@}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubj)}(h size_t szh](h)}(hhh]j1)}(hsize_th]hsize_t}(hj\}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjY}ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj^}modnameN classnameNjNjQ)}jT]jo|c.of_property_read_u16_arrayasbuh1hhjU}ubj)}(h h]h }(hjz}hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjU}ubj1)}(hszh]hsz}(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjU}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubeh}(h]h ]h"]h$]h&]hhuh1jhj{hhhj{hM3ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj{hhhj{hM3ubah}(h]j{ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj{hM3hj{hhubj*)}(hhh]j/)}(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&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM hj}hhubah}(h]h ]h"]h$]h&]uh1j)hj{hhhj{hM3ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj}jNj}jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj}h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj}ubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM$hj}ubjs)}(hhh](jx)}(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&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM"hj}ubj)}(hhh]j/)}(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&]uh1j.hj~hM"hj ~ubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jwhj~hM"hj}ubjx)}(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&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM#hj&~ubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjE~hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjA~hM#hjB~ubah}(h]h ]h"]h$]h&]uh1jhj&~ubeh}(h]h ]h"]h$]h&]uh1jwhjA~hM#hj}ubjx)}(hQ``u16 *out_values`` pointer to return value, modified only if return value is 0. h](j~)}(h``u16 *out_values``h]j)}(hje~h]hu16 *out_values}(hjg~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjc~ubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM$hj_~ubj)}(hhh]j/)}(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&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM+hjubj)}(hhh]j/)}(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&]uh1j.hjhM+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM+hj~ubah}(h]h ]h"]h$]h&]uh1jrhj}ubj/)}(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&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM-hj}ubj/)}(h **Return**h]j])}(hjQh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjOubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM/hj}ubj/)}(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.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM-hj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_property_read_u32_array (C function)c.of_property_read_u32_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(hoint of_property_read_u32_array (const struct device_node *np, const char *propname, u32 *out_values, size_t sz)h]j)}(hnint of_property_read_u32_array(const struct device_node *np, const char *propname, u32 *out_values, size_t sz)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMQubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMQubj})}(hof_property_read_u32_arrayh]j1)}(hof_property_read_u32_arrayh]hof_property_read_u32_array}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMQubj)}(hP(const struct device_node *np, const char *propname, u32 *out_values, size_t sz)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_property_read_u32_arrayasbuh1hhjubj)}(h h]h }(hj,hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj:hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hjGhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\ubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubj)}(hcharh]hchar}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj\ubj1)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 *out_valuesh](h)}(hhh]j1)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj€modnameN classnameNjNjQ)}jT]j(c.of_property_read_u32_arrayasbuh1hhjubj)}(h h]h }(hjހhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t szh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j(c.of_property_read_u32_arrayasbuh1hhjubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hszh]hsz}(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMQubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMQubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMQhjhhubj*)}(hhh]j/)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM@hjhhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMQubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(hXz**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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMDhjubjs)}(hhh](jx)}(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&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMChjubj)}(hhh]j/)}(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&]uh1j.hjhMChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMChjubjx)}(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&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMDhj߁ubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMDhjubah}(h]h ]h"]h$]h&]uh1jhj߁ubeh}(h]h ]h"]h$]h&]uh1jwhjhMDhjubjx)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMEhjubj)}(hhh]j/)}(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&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMbhjVubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjqhMbhjrubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jwhjqhMbhjubjx)}(hQ``u64 *out_values`` pointer to return value, modified only if return value is 0. h](j~)}(h``u64 *out_values``h]j)}(hjh]hu64 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMchjubj)}(hhh]j/)}(hubah}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM/hhhhubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhM-hhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h1of_device_is_system_power_controller (C function)&c.of_device_is_system_power_controllerhNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hjȉhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjĉhhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hj։hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjĉhhhjՉhMubj})}(h$of_device_is_system_power_controllerh]j1)}(h$of_device_is_system_power_controllerh]h$of_device_is_system_power_controller}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjĉhhhjՉhMubj)}(h(const struct device_node *np)h]j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj,hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj?modnameN classnameNjNjQ)}jT]jW)}jJjsb&c.of_device_is_system_power_controllerasbuh1hhjubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjkhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjĉhhhjՉhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjՉhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjՉhMhjhhubj*)}(hhh]j/)}(h9Tells if system-power-controller is found for device_nodeh]h9Tells if system-power-controller is found for device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjՉhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(h**Parameters** ``const struct device_node *np`` Pointer to the given device_node **Return** true if present false otherwiseh](j/)}(h**Parameters**h]j])}(hjĊh]h Parameters}(hjƊhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjŠubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubjs)}(hhh]jx)}(hB``const struct device_node *np`` Pointer to the given device_node 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&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhj݊ubj)}(hhh]j/)}(h Pointer to the given device_nodeh]h Pointer to the given device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhj݊ubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjڊubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj/)}(htrue if present false otherwiseh]htrue if present false otherwise}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_have_populated_dt (C function)c.of_have_populated_dthNtauh1hhhhhhNhNubh)}(hhh](h)}(h bool of_have_populated_dt (void)h]j)}(hbool of_have_populated_dt(void)h](j)}(hj h]hbool}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj_hhhX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMubj)}(h h]h }(hjqhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj_hhhjphMubj})}(hof_have_populated_dth]j1)}(hof_have_populated_dth]hof_have_populated_dt}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj_hhhjphMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj_hhhjphMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj[hhhjphMubah}(h]jVah ](j!j"eh"]h$]h&]j&j')j(huh1hhjphMhjXhhubj*)}(hhh]j/)}(h#Has DT been populated by bootloaderh]h#Has DT been populated by bootloader}(hjɋhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjƋhhubah}(h]h ]h"]h$]h&]uh1j)hjXhhhjphMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubjs)}(hhh]jx)}(h``void`` no arguments h](j~)}(h``void``h]j)}(hj h]hvoid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj)}(hhh]j/)}(h no argumentsh]h no arguments}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjEh]hReturn}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjCubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubj/)}(hgTrue if a DTB has been populated by the bootloader and it isn't the empty builtin one. False otherwise.h]hiTrue if a DTB has been populated by the bootloader and it isn’t the empty builtin one. False otherwise.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hX/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:14: ./include/linux/of.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"of_property_read_bool (C function)c.of_property_read_boolhNtauh1hhhhhhNhNubh)}(hhh](h)}(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)}(hj h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK,ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhK,ubj})}(hof_property_read_boolh]j1)}(hof_property_read_boolh]hof_property_read_bool}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhK,ubj)}(h4(const struct device_node *np, const char *propname)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjƌhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjŒubj)}(h h]h }(hjӌhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjŒubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjŒubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjŒubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_property_read_boolasbuh1hhjŒubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjŒubjl)}(hjoh]h*}(hj-hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjŒubj1)}(hnph]hnp}(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjŒubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjOubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjOubj)}(hcharh]hchar}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjOubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjOubj1)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK,ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK,ubah}(h]j}ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhK,hjhhubj*)}(hhh]j/)}(hFind a propertyh]hFind a property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK#hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhK,ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjٍjNjٍjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK'hjݍubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK$hjubj)}(hhh]j/)}(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&]uh1j.hjhK$hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhK$hjubjx)}(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&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK%hj5ubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjPhK%hjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jwhjPhK%hjubeh}(h]h ]h"]h$]h&]uh1jrhjݍubj/)}(h**Description**h]j])}(hjvh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjtubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK'hjݍubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK'hjݍubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK*hjݍubj/)}(h,true if the property exists false otherwise.h]h,true if the property exists false otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK*hjݍubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h of_graph_is_present (C function)c.of_graph_is_presenthNtauh1hhhhhhNhNubh)}(hhh](h)}(h9bool of_graph_is_present (const struct device_node *node)h]j)}(h8bool of_graph_is_present(const struct device_node *node)h](j)}(hj h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjގhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKCubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjގhhhjhKCubj})}(hof_graph_is_presenth]j1)}(hof_graph_is_presenth]hof_graph_is_present}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjގhhhjhKCubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj+hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjFhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjYmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_graph_is_presentasbuh1hhjubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjގhhhjhKCubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjڎhhhjhKCubah}(h]jՎah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKChj׎hhubj*)}(hhh]j/)}(hcheck graph's presenceh]hcheck graph’s presence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK=hjhhubah}(h]h ]h"]h$]h&]uh1j)hj׎hhhjhKCubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjԏjNjԏjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjޏh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj܏ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKAhj؏ubjs)}(hhh]jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK>hjubj)}(hhh]j/)}(h,pointer to device_node containing graph porth]h,pointer to device_node containing graph port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhK>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhK>hjubah}(h]h ]h"]h$]h&]uh1jrhj؏ubj/)}(h **Return**h]j])}(hj8h]hReturn}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj6ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK@hj؏ubj/)}(hMTrue if **node** has a port or ports (with a port) sub-node, false otherwise.h](hTrue if }(hjNhhhNhNubj])}(h**node**h]hnode}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjNubh= has a port or ports (with a port) sub-node, false otherwise.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK@hj؏ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,of_property_count_elems_of_size (C function)!c.of_property_count_elems_of_sizehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chK^ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhK^ubj})}(hof_property_count_elems_of_sizeh]j1)}(hof_property_count_elems_of_sizeh]hof_property_count_elems_of_size}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhK^ubj)}(hC(const struct device_node *np, const char *propname, int elem_size)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hj̐hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjȐubj)}(h h]h }(hjِhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjȐubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjȐubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjȐubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsb!c.of_property_count_elems_of_sizeasbuh1hhjȐubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjȐubjl)}(hjoh]h*}(hj3hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjȐubj1)}(hnph]hnp}(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjȐubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjĐubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjUubj)}(h h]h }(hjfhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubj)}(hcharh]hchar}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjUubj1)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjĐubj)}(h int elem_sizeh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjđhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(h elem_sizeh]h elem_size}(hjґhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjĐubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK^ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK^ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhK^hjhhubj*)}(hhh]j/)}(h*Count the number of elements in a propertyh]h*Count the number of elements in a property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKQhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhK^ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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 sucess, -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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKUhjubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKShj7ubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjRhKShjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jwhjRhKShj4ubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjvh]hconst char *propname}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKThjpubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKThjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jwhjhKThj4ubjx)}(h1``int elem_size`` size of the individual element h](j~)}(h``int elem_size``h]j)}(hjh]h int elem_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKUhjubj)}(hhh]j/)}(hsize of the individual elementh]hsize of the individual element}(hjȒhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjĒhKUhjŒubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjĒhKUhj4ubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKWhjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKWhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKZhjubj/)}(hThe number of elements on sucess, -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 sucess, -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.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKZhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_property_read_u16_index (C function)c.of_property_read_u16_indexhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj)}(h h]h }(hjehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjRhhhjdhKubj})}(hof_property_read_u16_indexh]j1)}(hof_property_read_u16_indexh]hof_property_read_u16_index}(hjwhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjRhhhjdhKubj)}(hO(const struct device_node *np, const char *propname, u32 index, u16 *out_value)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj̓hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjɓubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjΓmodnameN classnameNjNjQ)}jT]jW)}jJjysbc.of_property_read_u16_indexasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjWhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 indexh](h)}(hhh]j1)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_property_read_u16_indexasbuh1hhjyubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjyubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu16 *out_valueh](h)}(hhh]j1)}(hu16h]hu16}(hjȔhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjŔubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjʔmodnameN classnameNjNjQ)}jT]jc.of_property_read_u16_indexasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjRhhhjdhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjNhhhjdhKubah}(h]jIah ](j!j"eh"]h$]h&]j&j')j(huh1hhjdhKhjKhhubj*)}(hhh]j/)}(h0Find and read a u16 from a multi-value property.h]h0Find and read a u16 from a multi-value property.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj(hhubah}(h]h ]h"]h$]h&]uh1j)hjKhhhjdhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjCjNjCjOjPjQuh1hhhhhhNhNubjS)}(hXv**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](j/)}(h**Parameters**h]j])}(hjMh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjKubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjGubjs)}(hhh](jx)}(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)}(hjlh]hconst struct device_node *np}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjfubj)}(hhh]j/)}(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&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjcubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjcubjx)}(h5``u32 index`` index of the u16 in the list of values h](j~)}(h ``u32 index``h]j)}(hjޕh]h u32 index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjܕubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjؕubj)}(hhh]j/)}(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&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjؕubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjcubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(h3pointer to return value, modified only if no error.h]h3pointer to return value, modified only if no error.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj,hKhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj,hKhjcubeh}(h]h ]h"]h$]h&]uh1jrhjGubj/)}(h**Description**h]j])}(hjRh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjPubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjGubj/)}(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.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjGubj/)}(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.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjGubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjGubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_property_read_u32_index (C function)c.of_property_read_u32_indexhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjɖhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj)}(h h]h }(hjܖhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjɖhhhjۖhKubj})}(hof_property_read_u32_indexh]j1)}(hof_property_read_u32_indexh]hof_property_read_u32_index}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjɖhhhjۖhKubj)}(hO(const struct device_node *np, const char *propname, u32 index, u32 *out_value)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjChhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjEmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_property_read_u32_indexasbuh1hhjubj)}(h h]h }(hjchhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjqhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hj~hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjΗhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hjۗhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 indexh](h)}(hhh]j1)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j_c.of_property_read_u32_indexasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hj#hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 *out_valueh](h)}(hhh]j1)}(hu32h]hu32}(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj<ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjAmodnameN classnameNjNjQ)}jT]j_c.of_property_read_u32_indexasbuh1hhj8ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj8ubjl)}(hjoh]h*}(hjkhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj8ubj1)}(h out_valueh]h out_value}(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjɖhhhjۖhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjŖhhhjۖhKubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjۖhKhj–hhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjhhubah}(h]h ]h"]h$]h&]uh1j)hj–hhhjۖhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(hXv**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](j/)}(h**Parameters**h]j])}(hjĘh]h Parameters}(hjƘhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj˜ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjݘubj)}(hhh]j/)}(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&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjݘubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjژubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj1hKhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj1hKhjژubjx)}(h5``u32 index`` index of the u32 in the list of values h](j~)}(h ``u32 index``h]j)}(hjUh]h u32 index}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjOubj)}(hhh]j/)}(h&index of the u32 in the list of valuesh]h&index of the u32 in the list of values}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjjhKhjkubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jwhjjhKhjژubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(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&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjژubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjəh]h Description}(hj˙hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjǙubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj/)}(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.}(hjߙhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_property_read_u64_index (C function)c.of_property_read_u64_indexhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKubj)}(h h]h }(hjShhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj@hhhjRhKubj})}(hof_property_read_u64_indexh]j1)}(hof_property_read_u64_indexh]hof_property_read_u64_index}(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjaubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj@hhhjRhKubj)}(hO(const struct device_node *np, const char *propname, u32 index, u64 *out_value)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj}ubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj}ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjgsbc.of_property_read_u64_indexasbuh1hhj}ubj)}(h h]h }(hjښhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj}ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj}ubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubj)}(hcharh]hchar}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjEhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hpropnameh]hpropname}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(h u32 indexh](h)}(hhh]j1)}(hu32h]hu32}(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjpmodnameN classnameNjNjQ)}jT]j֚c.of_property_read_u64_indexasbuh1hhjgubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjgubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjgubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubj)}(hu64 *out_valueh](h)}(hhh]j1)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j֚c.of_property_read_u64_indexasbuh1hhjubj)}(h h]h }(hjԛhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubeh}(h]h ]h"]h$]h&]hhuh1jhj@hhhjRhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj<hhhjRhKubah}(h]j7ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjRhKhj9hhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjhhubah}(h]h ]h"]h$]h&]uh1j)hj9hhhjRhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj1jNj1jOjPjQuh1hhhhhhNhNubjS)}(hXv**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](j/)}(h**Parameters**h]j])}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj9ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj5ubjs)}(hhh](jx)}(hZ``const struct device_node *np`` device node from which the property value is to be read. h](j~)}(h ``const struct device_node *np``h]j)}(hjZh]hconst struct device_node *np}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjTubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjohKhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jwhjohKhjQubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjQubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjƜubj)}(hhh]j/)}(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&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjƜubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjQubjx)}(hG``u64 *out_value`` pointer to return value, modified only if no error. h](j~)}(h``u64 *out_value``h]j)}(hjh]hu64 *out_value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(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&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjQubeh}(h]h ]h"]h$]h&]uh1jrhj5ubj/)}(h**Description**h]j])}(hj@h]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj>ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj5ubj/)}(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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj5ubj/)}(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.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj5ubj/)}(h **Return**h]j])}(hjvh]hReturn}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjtubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj5ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h/of_property_read_variable_u8_array (C function)$c.of_property_read_variable_u8_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjʝhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjɝhMubj})}(h"of_property_read_variable_u8_arrayh]j1)}(h"of_property_read_variable_u8_arrayh]h"of_property_read_variable_u8_array}(hjܝhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj؝ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjɝ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 )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj3modnameN classnameNjNjQ)}jT]jW)}jJjޝsb$c.of_property_read_variable_u8_arrayasbuh1hhjubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj_hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hjɞhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu8 *out_valuesh](h)}(hhh]j1)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jM$c.of_property_read_variable_u8_arrayasbuh1hhjޞubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjޞubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjޞubj1)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjޞubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t sz_minh](h)}(hhh]j1)}(hsize_th]hsize_t}(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj<modnameN classnameNjNjQ)}jT]jM$c.of_property_read_variable_u8_arrayasbuh1hhj3ubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj3ubj1)}(hsz_minh]hsz_min}(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t sz_maxh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jM$c.of_property_read_variable_u8_arrayasbuh1hhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj{ubj1)}(hsz_maxh]hsz_max}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjɝhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjɝhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjɝhMhjhhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhj՟hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjɝhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj.hKhj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj.hKhjubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hjRh]hconst char *propname}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chKhjLubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjghKhjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jwhjghKhjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(hpointer to found values.h]hpointer to found values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjݠhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj٠hMhjڠubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj٠hMhjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hj9h]h Description}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj7ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjs)}(hhh]jx)}(hMdts 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:}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjaubj)}(hhh]j/)}(h)``property = /bits/ 8 <0x50 0x60 0x70>;``h]j)}(hjyh]h%property = /bits/ 8 <0x50 0x60 0x70>;}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1j.hjshM hjtubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jwhjshM hj^ubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h0of_property_read_variable_u16_array (C function)%c.of_property_read_variable_u16_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMDubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMDubj})}(h#of_property_read_variable_u16_arrayh]j1)}(h#of_property_read_variable_u16_arrayh]h#of_property_read_variable_u16_array}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMDubj)}(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 )}(hjHh]hconst}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubj )}(hjh]hstruct}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/ubj)}(h h]h }(hj[hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjiubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjnmodnameN classnameNjNjQ)}jT]jW)}jJjsb%c.of_property_read_variable_u16_arrayasbuh1hhj/ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj/ubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj͢hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjۢhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(hu16 *out_valuesh](h)}(hhh]j1)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj"modnameN classnameNjNjQ)}jT]j%c.of_property_read_variable_u16_arrayasbuh1hhjubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjLhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(h out_valuesh]h out_values}(hjYhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(h size_t sz_minh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjwmodnameN classnameNjNjQ)}jT]j%c.of_property_read_variable_u16_arrayasbuh1hhjnubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjnubj1)}(hsz_minh]hsz_min}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(h size_t sz_maxh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j%c.of_property_read_variable_u16_arrayasbuh1hhjubj)}(h h]h }(hjۣhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hsz_maxh]hsz_max}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMDubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMDubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMDhjhhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM-hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMDubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj+jNj+jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj5h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj3ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM1hj/ubjs)}(hhh](jx)}(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)}(hjTh]hconst struct device_node *np}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM0hjNubj)}(hhh]j/)}(h8device node from which the property value is to be read.h]h8device node from which the property value is to be read.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjihM0hjjubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jwhjihM0hjKubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM1hjubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM1hjKubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM2hjubj)}(hhh]j/)}(hpointer to found values.h]hpointer to found values.}(hjߤhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjۤhM2hjܤubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjۤhM2hjKubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM3hjubj)}(hhh]j/)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM3hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM3hjKubjx)}(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)}(hj8h]h size_t sz_max}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM6hj2ubj)}(hhh]j/)}(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.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM4hjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jwhjMhM6hjKubeh}(h]h ]h"]h$]h&]uh1jrhj/ubj/)}(h**Description**h]j])}(hjth]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjrubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM8hj/ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM8hj/ubjs)}(hhh]jx)}(hTdts 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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM<hjubj)}(hhh]j/)}(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&]uh1j.hjhM<hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM<hjubah}(h]h ]h"]h$]h&]uh1jrhj/ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM>hj/ubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM@hj/ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM>hj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h0of_property_read_variable_u32_array (C function)%c.of_property_read_variable_u32_arrayhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMsubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-hhhj?hMsubj})}(h#of_property_read_variable_u32_arrayh]j1)}(h#of_property_read_variable_u32_arrayh]h#of_property_read_variable_u32_array}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj-hhhj?hMsubj)}(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 )}(hjHh]hconst}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjubj)}(h h]h }(hj{hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjTsb%c.of_property_read_variable_u32_arrayasbuh1hhjjubj)}(h h]h }(hjǦhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjjubjl)}(hjoh]h*}(hjզhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjjubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj$hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj2hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hj?hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(hu32 *out_valuesh](h)}(hhh]j1)}(hu32h]hu32}(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj]modnameN classnameNjNjQ)}jT]jæ%c.of_property_read_variable_u32_arrayasbuh1hhjTubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjTubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjTubj1)}(h out_valuesh]h out_values}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(h size_t sz_minh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jæ%c.of_property_read_variable_u32_arrayasbuh1hhjubj)}(h h]h }(hjΧhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hsz_minh]hsz_min}(hjܧhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(h size_t sz_maxh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jæ%c.of_property_read_variable_u32_arrayasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hsz_maxh]hsz_max}(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubeh}(h]h ]h"]h$]h&]hhuh1jhj-hhhj?hMsubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj)hhhj?hMsubah}(h]j$ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj?hMshj&hhubj*)}(hhh]j/)}(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.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM_hjKhhubah}(h]h ]h"]h$]h&]uh1j)hj&hhhj?hMsubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjfjNjfjOjPjQuh1hhhhhhNhNubjS)}(hXI**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](j/)}(h**Parameters**h]j])}(hjph]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjnubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMchjjubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMbhjubj)}(hhh]j/)}(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&]uh1j.hjhMbhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMbhjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMchj¨ubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjݨhMchjިubah}(h]h ]h"]h$]h&]uh1jhj¨ubeh}(h]h ]h"]h$]h&]uh1jwhjݨhMchjubjx)}(h4``u32 *out_values`` pointer to return found values. h](j~)}(h``u32 *out_values``h]j)}(hjh]hu32 *out_values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMdhjubj)}(hhh]j/)}(hpointer to return found values.h]hpointer to return found values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMdhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMdhjubjx)}(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&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMehj4ubj)}(hhh]j/)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjOhMehjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jwhjOhMehjubjx)}(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)}(hjsh]h size_t sz_max}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhhjmubj)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMfhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jwhjhMhhjubeh}(h]h ]h"]h$]h&]uh1jrhjjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMjhjjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMjhjjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMmhjjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMohjjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMmhjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_property_read_u64 (C function)c.of_property_read_u64hNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj&hhhj8hMubj})}(hof_property_read_u64h]j1)}(hof_property_read_u64h]hof_property_read_u64}(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj&hhhj8hMubj)}(hD(const struct device_node *np, const char *propname, u64 *out_value)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjcubj)}(h h]h }(hjthhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjcubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjcubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjcubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjMsbc.of_property_read_u64asbuh1hhjcubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjcubjl)}(hjoh]h*}(hjΪhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjcubj1)}(hnph]hnp}(hj۪hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj+hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubj)}(hu64 *out_valueh](h)}(hhh]j1)}(hu64h]hu64}(hjThhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjVmodnameN classnameNjNjQ)}jT]jc.of_property_read_u64asbuh1hhjMubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjMubj1)}(h out_valueh]h out_value}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjMubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj_ubeh}(h]h ]h"]h$]h&]hhuh1jhj&hhhj8hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj"hhhj8hMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj8hMhjhhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj8hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjϫjNjϫjOjPjQuh1hhhhhhNhNubjS)}(hXE**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](j/)}(h**Parameters**h]j])}(hj٫h]h Parameters}(hj۫hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj׫ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjӫubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(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&]uh1j.hj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj hMhjubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hj1h]hconst char *propname}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj+ubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjFhMhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jwhjFhMhjubjx)}(hP``u64 *out_value`` pointer to return value, modified only if return value is 0. h](j~)}(h``u64 *out_value``h]j)}(hjjh]hu64 *out_value}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjdubj)}(hhh]j/)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjЯhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj̯hMhjͯubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj̯hMhjuubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(hpointer to found values.h]hpointer to found values.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjuubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj#ubj)}(hhh]j/)}(h(minimum number of array elements to readh]h(minimum number of array elements to read}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj>hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jwhj>hMhjuubjx)}(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)}(hjbh]h size_t sz_max}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj\ubj)}(hhh]j/)}(hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.h]hmaximum number of array elements to read, if zero there is no upper limit on the number of elements in the dts entry but only sz_min will be read.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jwhjwhMhjuubeh}(h]h ]h"]h$]h&]uh1jrhjYubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj/)}(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.}(hjðhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj/)}(h **Return**h]j])}(hj԰h]hReturn}(hjְhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjҰubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_property_read_string (C function)c.of_property_read_stringhNtauh1hhhhhhNhNubh)}(hhh](h)}(hiint of_property_read_string (const struct device_node *np, const char *propname, const char **out_string)h]j)}(hhint of_property_read_string(const struct device_node *np, const char *propname, const char **out_string)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj'hMubj})}(hof_property_read_stringh]j1)}(hof_property_read_stringh]hof_property_read_string}(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhj'hMubj)}(hM(const struct device_node *np, const char *propname, const char **out_string)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjRubj)}(h h]h }(hjchhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjRubj )}(hjh]hstruct}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjRubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjRubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJj<sbc.of_property_read_stringasbuh1hhjRubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjRubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjRubj1)}(hnph]hnp}(hjʱhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj߱ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj߱ubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj߱ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj߱ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj߱ubj1)}(hpropnameh]hpropname}(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj߱ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubj)}(hconst char **out_stringh](j )}(hjHh]hconst}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj<ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj<ubj)}(hcharh]hchar}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj)}(h h]h }(hjihhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj<ubjl)}(hjoh]h*}(hjwhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj<ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj<ubj1)}(h out_stringh]h out_string}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj<ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj'hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj'hMubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj'hMhjhhubj*)}(hhh]j/)}(h&Find and read a string from a propertyh]h&Find and read a string from a property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj'hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjӲjNjӲjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjݲh]h Parameters}(hj߲hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj۲ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(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&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(h>``const char *propname`` name of the property to be searched. h](j~)}(h``const char *propname``h]j)}(hj5h]hconst char *propname}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj/ubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjJhMhjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jwhjJhMhjubjx)}(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)}(hjnh]hconst char **out_string}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhubj)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjײubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubj/)}(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.}(hjϳhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubj/)}(hIThe out_string pointer is modified only if a valid string can be decoded.h]hIThe out_string pointer is modified only if a valid string can be decoded.}(hj޳hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubj/)}(h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.h]h0 on success, -EINVAL if the property does not exist, -ENODATA if property does not have a value, and -EILSEQ if the string is not null-terminated within the length of the property data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjײubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_property_match_string (C function)c.of_property_match_stringhNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjChhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0hhhjBhMubj})}(hof_property_match_stringh]j1)}(hof_property_match_stringh]hof_property_match_string}(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj0hhhjBhMubj)}(hH(const struct device_node *np, const char *propname, const char *string)h](j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjmubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjmubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjmubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjmubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjWsbc.of_property_match_stringasbuh1hhjmubj)}(h h]h }(hjʴhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjmubjl)}(hjoh]h*}(hjشhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjmubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjmubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj5hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubj)}(hconst char *stringh](j )}(hjHh]hconst}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjWubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWubj)}(hcharh]hchar}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjWubj1)}(hstringh]hstring}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjiubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhjBhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj,hhhjBhMubah}(h]j'ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjBhMhj)hhubj*)}(hhh]j/)}(h&Find string in a list and return indexh]h&Find string in a list and return index}(hjɵhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjƵhhubah}(h]h ]h"]h$]h&]uh1j)hj)hhhjBhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjs)}(hhh](jx)}(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)}(hj h]hconst struct device_node *np}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(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&]uh1j.hjhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(h3``const char *propname`` string list property name h](j~)}(h``const char *propname``h]j)}(hjCh]hconst char *propname}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj=ubj)}(hhh]j/)}(hstring list property nameh]hstring list property name}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjXhMhjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jwhjXhMhjubjx)}(hN``const char *string`` pointer to the string to search for in the string list h](j~)}(h``const char *string``h]j)}(hj|h]hconst char *string}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjvubj)}(hhh]j/)}(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&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjvubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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.}(hjͶhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(h **Return**h]j])}(hj޶h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjܶubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h+of_property_read_string_helper (C function) c.of_property_read_string_helperhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM5ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj1hM5ubj})}(hof_property_read_string_helperh]j1)}(hof_property_read_string_helperh]hof_property_read_string_helper}(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhj1hM5ubj)}(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 )}(hjHh]hconst}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\ubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubj )}(hjh]hstruct}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjFsb c.of_property_read_string_helperasbuh1hhj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj\ubjl)}(hjoh]h*}(hjǷhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj\ubj1)}(hnph]hnp}(hjԷhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hconst char *propnameh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj$hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hpropnameh]hpropname}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hconst char **out_strsh](j )}(hjHh]hconst}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjFubj)}(h h]h }(hjWhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjFubj)}(hcharh]hchar}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubj)}(h h]h }(hjshhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjFubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjFubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjFubj1)}(hout_strsh]hout_strs}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(h size_t szh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j c.of_property_read_string_helperasbuh1hhjubj)}(h h]h }(hjոhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hszh]hsz}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubj)}(hint skiph](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hskiph]hskip}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjXubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj1hM5ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj1hM5ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj1hM5hjhhubj*)}(hhh]j/)}(h,Utility helper for parsing string propertiesh]h,Utility helper for parsing string properties}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM+hj?hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj1hM5ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjZjNjZjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjbubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM/hj^ubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM,hj}ubj)}(hhh]j/)}(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&]uh1j.hjhM,hjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jwhjhM,hjzubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM-hjubj)}(hhh]j/)}(h$name of the property to be searched.h]h$name of the property to be searched.}(hjչhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjѹhM-hjҹubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjѹhM-hjzubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM.hjubj)}(hhh]j/)}(h output array of string pointers.h]h output array of string pointers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hM.hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj hM.hjzubjx)}(h0``size_t sz`` number of array elements to read. h](j~)}(h ``size_t sz``h]j)}(hj.h]h size_t sz}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM/hj(ubj)}(hhh]j/)}(h!number of array elements to read.h]h!number of array elements to read.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjChM/hjDubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jwhjChM/hjzubjx)}(hB``int skip`` Number of strings to skip over at beginning of list. h](j~)}(h ``int skip``h]j)}(hjgh]hint skip}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM0hjaubj)}(hhh]j/)}(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&]uh1j.hj|hM0hj}ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jwhj|hM0hjzubeh}(h]h ]h"]h$]h&]uh1jrhj^ubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM2hj^ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM2hj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_graph_parse_endpoint (C function)c.of_graph_parse_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubj})}(hof_graph_parse_endpointh]j1)}(hof_graph_parse_endpointh]hof_graph_parse_endpoint}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h>(const struct device_node *node, struct of_endpoint *endpoint)h](j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubj )}(hjh]hstruct}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj_modnameN classnameNjNjQ)}jT]jW)}jJj sbc.of_graph_parse_endpointasbuh1hhj ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct of_endpoint *endpointh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h of_endpointh]h of_endpoint}(hjϻhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj̻ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjѻmodnameN classnameNjNjQ)}jT]jyc.of_graph_parse_endpointasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hendpointh]hendpoint}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjߺhhhjhMubah}(h]jںah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjܺhhubj*)}(hhh]j/)}(h%parse common endpoint node propertiesh]h%parse common endpoint node properties}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzhj/hhubah}(h]h ]h"]h$]h&]uh1j)hjܺhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjJjNjJjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjRubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM~hjNubjs)}(hhh](jx)}(hC``const struct device_node *node`` pointer to endpoint device_node h](j~)}(h"``const struct device_node *node``h]j)}(hjsh]hconst struct device_node *node}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM{hjmubj)}(hhh]j/)}(hpointer to endpoint device_nodeh]hpointer to endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM{hjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jwhjhM{hjjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM|hjubj)}(hhh]j/)}(h)pointer to the OF endpoint data structureh]h)pointer to the OF endpoint data structure}(hjżhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM|hj¼ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM|hjjubeh}(h]h ]h"]h$]h&]uh1jrhjNubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM~hjNubj/)}(h/The caller should hold a reference to **node**.h](h&The caller should hold a reference to }(hjhhhNhNubj])}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM~hjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_graph_get_port_by_id (C function)c.of_graph_get_port_by_idhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:hhhjKhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj_modnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_port_by_idsbc.of_graph_get_port_by_idasbuh1hhj:hhhjKhMubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:hhhjKhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj:hhhjKhMubj})}(hof_graph_get_port_by_idh]j1)}(hj{h]hof_graph_get_port_by_id}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj:hhhjKhMubj)}(h$(struct device_node *parent, u32 id)h](j)}(hstruct device_node *parenth](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjŽhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjֽhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjӽubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjؽmodnameN classnameNjNjQ)}jT]jyc.of_graph_get_port_by_idasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 idh](h)}(hhh]j1)}(hu32h]hu32}(hj+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj-modnameN classnameNjNjQ)}jT]jyc.of_graph_get_port_by_idasbuh1hhj$ubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$ubj1)}(hidh]hid}(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj:hhhjKhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj6hhhjKhMubah}(h]j1ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjKhMhj3hhubj*)}(hhh]j/)}(h get the port matching a given idh]h get the port matching a given id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj~hhubah}(h]h ]h"]h$]h&]uh1j)hj3hhhjKhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjs)}(hhh](jx)}(hA``struct device_node *parent`` pointer to the parent device node h](j~)}(h``struct device_node *parent``h]j)}(hj¾h]hstruct device_node *parent}(hjľhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(h!pointer to the parent device nodeh]h!pointer to the parent device node}(hj۾hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj׾hMhjؾubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj׾hMhjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(hid of the porth]hid of the port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hj6h]hReturn}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj4ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#of_graph_get_next_port (C function)c.of_graph_get_next_porthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjwhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjwhhhjhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_next_portsbc.of_graph_get_next_portasbuh1hhjwhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjwhhhjhMubjl)}(hjoh]h*}(hjɿhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjwhhhjhMubj})}(hof_graph_get_next_porth]j1)}(hjh]hof_graph_get_next_port}(hjڿhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjֿubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjwhhhjhMubj)}(h<(const struct device_node *parent, struct device_node *prev)h](j)}(h const struct device_node *parenth](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj0modnameN classnameNjNjQ)}jT]jc.of_graph_get_next_portasbuh1hhjubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjZhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hparenth]hparent}(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_graph_get_next_portasbuh1hhj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj|ubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjwhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjshhhjhMubah}(h]jnah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjphhubj*)}(hhh]j/)}(hget next port node.h]hget next port node.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjphhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj#h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj!ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjs)}(hhh](jx)}(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)}(hjBh]h const struct device_node *parent}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj<ubj)}(hhh]j/)}(h7pointer to the parent device node, or parent ports nodeh]h7pointer to the parent device node, or parent ports node}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjWhMhjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jwhjWhMhj9ubjx)}(hF``struct device_node *prev`` previous port node, or NULL to get first h](j~)}(h``struct device_node *prev``h]j)}(hj{h]hstruct device_node *prev}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjuubj)}(hhh]j/)}(h(previous port node, or NULL to get firsth]h(previous port node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jwhjhMhj9ubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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 }(hjhhhNhNubj])}(h **parent**h]hparent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubhQ whether device node has ports node or not. It will work same as ports**0** node.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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 }(hjhhhNhNubj])}(h**prev**h]hprev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh node is decremented.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,of_graph_get_next_port_endpoint (C function)!c.of_graph_get_next_port_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjBhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjThhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjBhhhjShMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjbubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjgmodnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_next_port_endpointsb!c.of_graph_get_next_port_endpointasbuh1hhjBhhhjShMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjBhhhjShMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjBhhhjShMubj})}(hof_graph_get_next_port_endpointh]j1)}(hjh]hof_graph_get_next_port_endpoint}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjBhhhjShMubj)}(h:(const struct device_node *port, struct device_node *prev)h](j)}(hconst struct device_node *porth](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j!c.of_graph_get_next_port_endpointasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj%hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hporth]hport}(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjGubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjGubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjkmodnameN classnameNjNjQ)}jT]j!c.of_graph_get_next_port_endpointasbuh1hhjGubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjGubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjGubj1)}(hprevh]hprev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjBhhhjShMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj>hhhjShMubah}(h]j9ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjShMhj;hhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hj;hhhjShMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubjs)}(hhh](jx)}(hC``const struct device_node *port`` pointer to the target port node h](j~)}(h"``const struct device_node *port``h]j)}(hj h]hconst struct device_node *port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(hpointer to the target port nodeh]hpointer to the target port node}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj"hMhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj"hMhjubjx)}(hJ``struct device_node *prev`` previous endpoint node, or NULL to get first h](j~)}(h``struct device_node *prev``h]j)}(hjFh]hstruct device_node *prev}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj@ubj)}(hhh]j/)}(h,previous endpoint node, or NULL to get firsth]h,previous endpoint node, or NULL to get first}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj[hMhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jwhj[hMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj/)}(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 }(hjhhhNhNubj])}(h**prev**h]hprev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh node is decremented.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'of_graph_get_next_endpoint (C function)c.of_graph_get_next_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_next_endpointsbc.of_graph_get_next_endpointasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubjl)}(hjoh]h*}(hj&hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMubj})}(hof_graph_get_next_endpointh]j1)}(hjh]hof_graph_get_next_endpoint}(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h<(const struct device_node *parent, struct device_node *prev)h](j)}(h const struct device_node *parenth](j )}(hjHh]hconst}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjNubj)}(h h]h }(hj_hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjNubj )}(hjh]hstruct}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjNubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjNubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_graph_get_next_endpointasbuh1hhjNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjNubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjNubj1)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hstruct device_node *prevh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_graph_get_next_endpointasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj'hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hprevh]hprev}(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(hget next endpoint nodeh]hget next endpoint node}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj[hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjvjNjvjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj~ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjzubjs)}(hhh](jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(h!pointer to the parent device nodeh]h!pointer to the parent device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(h,previous endpoint node, or NULL to get firsth]h,previous endpoint node, or NULL to get first}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjzubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjzubj/)}(hjAn 'endpoint' node pointer with refcount incremented. Refcount of the passed **prev** node is decremented.h](hQAn ‘endpoint’ node pointer with refcount incremented. Refcount of the passed }(hj)hhhNhNubj])}(h**prev**h]hprev}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj)ubh node is decremented.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*of_graph_get_endpoint_by_regs (C function)c.of_graph_get_endpoint_by_regshNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjfhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM7ubj)}(h h]h }(hjxhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjfhhhjwhM7ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_endpoint_by_regssbc.of_graph_get_endpoint_by_regsasbuh1hhjfhhhjwhM7ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjfhhhjwhM7ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjfhhhjwhM7ubj})}(hof_graph_get_endpoint_by_regsh]j1)}(hjh]hof_graph_get_endpoint_by_regs}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjfhhhjwhM7ubj)}(h9(const struct device_node *parent, int port_reg, int reg)h](j)}(h const struct device_node *parenth](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_graph_get_endpoint_by_regsasbuh1hhjubj)}(h h]h }(hj;hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjIhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hparenth]hparent}(hjVhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int port_regh](j)}(hinth]hint}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjkubj1)}(hport_regh]hport_reg}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint regh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hregh]hreg}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjfhhhjwhM7ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjbhhhjwhM7ubah}(h]j]ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjwhM7hj_hhubj*)}(hhh]j/)}(h)get endpoint node of specific identifiersh]h)get endpoint node of specific identifiers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM.hjhhubah}(h]h ]h"]h$]h&]uh1j)hj_hhhjwhM7ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM2hjubjs)}(hhh](jx)}(hG``const struct device_node *parent`` pointer to the parent device node h](j~)}(h$``const struct device_node *parent``h]j)}(hj+h]h const struct device_node *parent}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM/hj%ubj)}(hhh]j/)}(h!pointer to the parent device nodeh]h!pointer to the parent device node}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj@hM/hjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jwhj@hM/hj"ubjx)}(hL``int port_reg`` identifier (value of reg property) of the parent port node h](j~)}(h``int port_reg``h]j)}(hjdh]h int port_reg}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM0hj^ubj)}(hhh]j/)}(h:identifier (value of reg property) of the parent port nodeh]h:identifier (value of reg property) of the parent port node}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjyhM0hjzubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jwhjyhM0hj"ubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM1hjubj)}(hhh]j/)}(h7identifier (value of reg property) of the endpoint nodeh]h7identifier (value of reg property) of the endpoint node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM1hj"ubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM3hjubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM3hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)of_graph_get_remote_endpoint (C function)c.of_graph_get_remote_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMOubj)}(h h]h }(hj+hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj*hMOubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj>modnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_remote_endpointsbc.of_graph_get_remote_endpointasbuh1hhjhhhj*hMOubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj*hMOubjl)}(hjoh]h*}(hjkhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhj*hMOubj})}(hof_graph_get_remote_endpointh]j1)}(hjZh]hof_graph_get_remote_endpoint}(hj|hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjxubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhj*hMOubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jXc.of_graph_get_remote_endpointasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj*hMOubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj*hMOubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj*hMOhjhhubj*)}(hhh]j/)}(hget remote endpoint nodeh]hget remote endpoint node}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMIhj0hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj*hMOubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjKjNjKjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjUh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjSubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMMhjOubjs)}(hhh]jx)}(hK``const struct device_node *node`` pointer to a local endpoint device_node h](j~)}(h"``const struct device_node *node``h]j)}(hjth]hconst struct device_node *node}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMJhjnubj)}(hhh]j/)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMJhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jwhjhMJhjkubah}(h]h ]h"]h$]h&]uh1jrhjOubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMLhjOubjs)}(hhh]jx)}(hpRemote endpoint node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](j~)}(h@Remote endpoint node associated with remote endpoint node linkedh]h@Remote endpoint node associated with remote endpoint node linked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMLhjubj)}(hhh]j/)}(h/to **node**. Use of_node_put() on it when done.h](hto }(hjhhhNhNubj])}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh$. Use of_node_put() on it when done.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMLhjubah}(h]h ]h"]h$]h&]uh1jrhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_graph_get_port_parent (C function)c.of_graph_get_port_parenthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM]ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-hhhj>hM]ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjMubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjRmodnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_port_parentsbc.of_graph_get_port_parentasbuh1hhj-hhhj>hM]ubj)}(h h]h }(hjqhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-hhhj>hM]ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj-hhhj>hM]ubj})}(hof_graph_get_port_parenth]j1)}(hjnh]hof_graph_get_port_parent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj-hhhj>hM]ubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jlc.of_graph_get_port_parentasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj-hhhj>hM]ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj)hhhj>hM]ubah}(h]j$ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj>hM]hj&hhubj*)}(hhh]j/)}(hget port's parent nodeh]hget port’s parent node}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMWhj)hhubah}(h]h ]h"]h$]h&]uh1j)hj&hhhj>hM]ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjDjNjDjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjNh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjLubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM[hjHubjs)}(hhh]jx)}(hE``struct device_node *node`` pointer to a local endpoint device_node h](j~)}(h``struct device_node *node``h]j)}(hjmh]hstruct device_node *node}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMXhjgubj)}(hhh]j/)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMXhjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jwhjhMXhjdubah}(h]h ]h"]h$]h&]uh1jrhjHubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMZhjHubjs)}(hhh]jx)}(h`device node associated with endpoint node linked to **node**. Use of_node_put() on it when done.h](j~)}(h0device node associated with endpoint node linkedh]h0device node associated with endpoint node linked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMZhjubj)}(hhh]j/)}(h/to **node**. Use of_node_put() on it when done.h](hto }(hjhhhNhNubj])}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh$. Use of_node_put() on it when done.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/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&]uh1jwhjhMZhjubah}(h]h ]h"]h$]h&]uh1jrhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,of_graph_get_remote_port_parent (C function)!c.of_graph_get_remote_port_parenthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM}ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj&hhhj7hM}ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjIhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjFubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjKmodnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_remote_port_parentsb!c.of_graph_get_remote_port_parentasbuh1hhj&hhhj7hM}ubj)}(h h]h }(hjjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj&hhhj7hM}ubjl)}(hjoh]h*}(hjxhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj&hhhj7hM}ubj})}(hof_graph_get_remote_port_parenth]j1)}(hjgh]hof_graph_get_remote_port_parent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj&hhhj7hM}ubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]je!c.of_graph_get_remote_port_parentasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj&hhhj7hM}ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj"hhhj7hM}ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj7hM}hjhhubj*)}(hhh]j/)}(hget remote port's parent nodeh]hget remote port’s parent node}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMwhj=hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj7hM}ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjXjNjXjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjbh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj`ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chM{hj\ubjs)}(hhh]jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMxhj{ubj)}(hhh]j/)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMxhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jwhjhMxhjxubah}(h]h ]h"]h$]h&]uh1jrhj\ubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzhj\ubjs)}(hhh]jx)}(hnRemote device node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](j~)}(h>Remote device node associated with remote endpoint node linkedh]h>Remote device node associated with remote endpoint node linked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMzhjubj)}(hhh]j/)}(h/to **node**. Use of_node_put() on it when done.h](hto }(hjhhhNhNubj])}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh$. Use of_node_put() on it when done.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/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&]uh1jwhjhMzhjubah}(h]h ]h"]h$]h&]uh1jrhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_graph_get_remote_port (C function)c.of_graph_get_remote_porthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:hhhjKhMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj]hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjZubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj_modnameN classnameNjNjQ)}jT]jW)}jJof_graph_get_remote_portsbc.of_graph_get_remote_portasbuh1hhj:hhhjKhMubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:hhhjKhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj:hhhjKhMubj})}(hof_graph_get_remote_porth]j1)}(hj{h]hof_graph_get_remote_port}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj:hhhjKhMubj)}(h (const struct device_node *node)h]j)}(hconst struct device_node *nodeh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jyc.of_graph_get_remote_portasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnodeh]hnode}(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj:hhhjKhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj6hhhjKhMubah}(h]j1ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjKhMhj3hhubj*)}(hhh]j/)}(hget remote port nodeh]hget remote port node}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjQhhubah}(h]h ]h"]h$]h&]uh1j)hj3hhhjKhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjljNjljOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjvh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjtubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjpubjs)}(hhh]jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjubj)}(hhh]j/)}(h'pointer to a local endpoint device_nodeh]h'pointer to a local endpoint device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubah}(h]h ]h"]h$]h&]uh1jrhjpubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjpubj/)}(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 }(hjhhhNhNubj])}(h**node**h]hnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh$. Use of_node_put() on it when done.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjpubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(of_graph_get_endpoint_count (C function)c.of_graph_get_endpoint_counthNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMubj)}(h h]h }(hj6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj#hhhj5hMubj)}(hinth]hint}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhj5hMubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj#hhhj5hMubj})}(hof_graph_get_endpoint_counth]j1)}(hof_graph_get_endpoint_counth]hof_graph_get_endpoint_count}(hjdhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj#hhhj5hMubj)}(h(const struct device_node *np)h]j)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjfsbc.of_graph_get_endpoint_countasbuh1hhj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj|ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj|ubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubah}(h]h ]h"]h$]h&]hhuh1jhj#hhhj5hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj5hMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj5hMhjhhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj5hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj6jNj6jOjPjQuh1hhhhhhNhNubjS)}(h**Parameters** ``const struct device_node *np`` parent device node containing ports and endpoints **Return** count of endpoint of this device nodeh](j/)}(h**Parameters**h]j])}(hj@h]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj>ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj:ubjs)}(hhh]jx)}(hS``const struct device_node *np`` parent device node containing ports and endpoints h](j~)}(h ``const struct device_node *np``h]j)}(hj_h]hconst struct device_node *np}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhjYubj)}(hhh]j/)}(h1parent device node containing ports and endpointsh]h1parent device node containing ports and endpoints}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjthMhjuubah}(h]h ]h"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]uh1jwhjthMhjVubah}(h]h ]h"]h$]h&]uh1jrhj:ubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj:ubj/)}(h%count of endpoint of this device nodeh]h%count of endpoint of this device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_graph_get_port_count (C function)c.of_graph_get_port_counthNtauh1hhhhhhNhNubh)}(hhh](h)}(h=unsigned int of_graph_get_port_count (struct device_node *np)h]j)}(hubjs)}(hhh](jx)}(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)}(hjch]hconst struct device_node *node}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj]ubj)}(hhh]j/)}(hubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj>ubj/)}(hnRemote device node associated with remote endpoint node linked to **node**. Use of_node_put() on it when done.h](hBRemote device node associated with remote endpoint node linked to }(hj&hhhNhNubj])}(h**node**h]hnode}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj&ubh$. Use of_node_put() on it when done.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:17: ./drivers/of/property.chMhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_endpoint (C struct) c.of_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(h of_endpointh]j)}(hstruct of_endpointh](j )}(hjh]hstruct}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjchhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKubj)}(h h]h }(hjuhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjchhhjthKubj})}(h of_endpointh]j1)}(hjah]h of_endpoint}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjchhhjthKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj_hhhjthKubah}(h]jZah ](j!j"eh"]h$]h&]j&j')j(huh1hhjthKhj\hhubj*)}(hhh]j/)}(h$the OF graph endpoint data structureh]h$the OF graph endpoint data structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j)hj\hhhjthKubeh}(h]h ](jHstructeh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Definition**::h](j])}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubj;)}(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; };}hjsbah}(h]h ]h"]h$]h&]hhuh1j;h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubj/)}(h **Members**h]j])}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubjs)}(hhh](jx)}(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&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubj)}(hhh]j/)}(hEidentifier (value of reg property) of a port this endpoint belongs toh]hEidentifier (value of reg property) of a port this endpoint belongs to}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj+hKhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj+hKhj ubjx)}(h;``id`` identifier (value of reg property) of this endpoint h](j~)}(h``id``h]j)}(hjOh]hid}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjIubj)}(hhh]j/)}(h3identifier (value of reg property) of this endpointh]h3identifier (value of reg property) of this endpoint}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjdhKhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jwhjdhKhj ubjx)}(h6``local_node`` pointer to device_node of this endpointh](j~)}(h``local_node``h]j)}(hjh]h local_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubj)}(hhh]j/)}(h'pointer to device_node of this endpointh]h'pointer to device_node of this endpoint}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#for_each_endpoint_of_node (C macro)c.for_each_endpoint_of_nodehNtauh1hhhhhhNhNubh)}(hhh](h)}(hfor_each_endpoint_of_nodeh]j)}(hfor_each_endpoint_of_nodeh]j})}(hfor_each_endpoint_of_nodeh]j1)}(hjh]hfor_each_endpoint_of_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK%ubah}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK%ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhK%hjhhubj*)}(hhh]h}(h]h ]h"]h$]h&]uh1j)hjhhhjhK%ubeh}(h]h ](jHmacroeh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubj/)}(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&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK'hhhhubh block_quote)}(h-iterate over every endpoint in a device node h]j/)}(h,iterate over every endpoint in a device nodeh]h,iterate over every endpoint in a device node}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhKhj0ubah}(h]h ]h"]h$]h&]uh1j.hjBhKhhhhubjS)}(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](j/)}(h**Parameters**h]j])}(hjOh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjMubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK#hjIubjs)}(hhh](jx)}(h=``parent`` parent device node containing ports and endpoints h](j~)}(h ``parent``h]j)}(hjnh]hparent}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK hjhubj)}(hhh]j/)}(h1parent device node containing ports and endpointsh]h1parent device node containing ports and endpoints}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhK hjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jwhjhK hjeubjx)}(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&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK!hjubj)}(hhh]j/)}(h3loop variable pointing to the current endpoint nodeh]h3loop variable pointing to the current endpoint node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhK!hjeubeh}(h]h ]h"]h$]h&]uh1jrhjIubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK#hjIubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK#hjIubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h for_each_of_graph_port (C macro)c.for_each_of_graph_porthNtauh1hhhhhhNhNubh)}(hhh](h)}(hfor_each_of_graph_porth]j)}(hfor_each_of_graph_porth]j})}(hfor_each_of_graph_porth]j1)}(hj!h]hfor_each_of_graph_port}(hj+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj'ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj#hhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK1ubah}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj>hK1ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj>hK1hjhhubj*)}(hhh]h}(h]h ]h"]h$]h&]uh1j)hjhhhj>hK1ubeh}(h]h ](jHmacroeh"]h$]h&]jLjHjMjWjNjWjOjPjQuh1hhhhhhNhNubj/)}(h*``for_each_of_graph_port (parent, child)``h]j)}(hj]h]h&for_each_of_graph_port (parent, child)}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK3hhhhubj/)}(h2iterate over every port in a device or ports node h]j/)}(h1iterate over every port in a device or ports nodeh]h1iterate over every port in a device or ports node}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK*hjsubah}(h]h ]h"]h$]h&]uh1j.hjhK*hhhhubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK.hjubjs)}(hhh](jx)}(h7``parent`` parent device or ports node containing port h](j~)}(h ``parent``h]j)}(hjh]hparent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK+hjubj)}(hhh]j/)}(h+parent device or ports node containing porth]h+parent device or ports node containing port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhK+hjubjx)}(h:``child`` loop variable pointing to the current port node h](j~)}(h ``child``h]j)}(hjh]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK,hjubj)}(hhh]j/)}(h/loop variable pointing to the current port nodeh]h/loop variable pointing to the current port node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhK,hjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hj%h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj#ubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK.hjubj/)}(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 }(hj;hhhNhNubj])}(h **child**h]hchild}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj;ubh, you need to use return_ptr(}(hj;hhhNhNubj])}(h **child**h]hchild}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj;ubh) or no_free_ptr(}(hj;hhhNhNubj])}(h **child**h]hchild}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj;ubh) not to call __free() for it.}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK.hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)for_each_of_graph_port_endpoint (C macro)!c.for_each_of_graph_port_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(hfor_each_of_graph_port_endpointh]j)}(hfor_each_of_graph_port_endpointh]j})}(hfor_each_of_graph_port_endpointh]j1)}(hjh]hfor_each_of_graph_port_endpoint}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhh^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK=ubah}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK=ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhK=hjhhubj*)}(hhh]h}(h]h ]h"]h$]h&]uh1j)hjhhhjhK=ubeh}(h]h ](jHmacroeh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubj/)}(h3``for_each_of_graph_port_endpoint (parent, child)``h]j)}(hjh]h/for_each_of_graph_port_endpoint (parent, child)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK?hhhhubj/)}(h+iterate over every endpoint in a port node h]j/)}(h*iterate over every endpoint in a port nodeh]h*iterate over every endpoint in a port node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK6hjubah}(h]h ]h"]h$]h&]uh1j.hjhK6hhhhubjS)}(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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK:hjubjs)}(hhh](jx)}(h``parent`` parent port node h](j~)}(h ``parent``h]j)}(hj*h]hparent}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK7hj$ubj)}(hhh]j/)}(hparent port nodeh]hparent port node}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj?hK7hj@ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1jwhj?hK7hj!ubjx)}(h>``child`` loop variable pointing to the current endpoint node h](j~)}(h ``child``h]j)}(hjch]hchild}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1j}h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK8hj]ubj)}(hhh]j/)}(h3loop variable pointing to the current endpoint nodeh]h3loop variable pointing to the current endpoint node}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjxhK8hjyubah}(h]h ]h"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]uh1jwhjxhK8hj!ubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK:hjubj/)}(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 }(hjhhhNhNubj])}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh, you need to use return_ptr(}(hjhhhNhNubj])}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh) or no_free_ptr(}(hjhhhNhNubj])}(h **child**h]hchild}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh) not to call __free() for it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h^/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:20: ./include/linux/of_graph.hhK:hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$of_translate_dma_region (C function)c.of_translate_dma_regionhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj&hMubh)}(hhh]j1)}(h__be32h]h__be32}(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj:modnameN classnameNjNjQ)}jT]jW)}jJof_translate_dma_regionsbc.of_translate_dma_regionasbuh1hhjhhhj&hMubj)}(h h]h }(hjYhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj&hMubjl)}(hjoh]h*}(hjghhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhj&hMubj})}(hof_translate_dma_regionh]j1)}(hjVh]hof_translate_dma_region}(hjxhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjtubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhj&hMubj)}(hQ(struct device_node *dev, const __be32 *prop, phys_addr_t *start, size_t *length)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jTc.of_translate_dma_regionasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst __be32 *proph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h__be32h]h__be32}(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj#modnameN classnameNjNjQ)}jT]jTc.of_translate_dma_regionasbuh1hhjubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjMhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hproph]hprop}(hjZhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hphys_addr_t *starth](h)}(hhh]j1)}(h phys_addr_th]h phys_addr_t}(hjvhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjxmodnameN classnameNjNjQ)}jT]jTc.of_translate_dma_regionasbuh1hhjoubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjoubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjoubj1)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hsize_t *lengthh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jTc.of_translate_dma_regionasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hlengthh]hlength}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj&hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj&hMubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj&hMhjhhubj*)}(hhh]j/)}(h,Translate device tree address and size tupleh]h,Translate device tree address and size tuple}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhj+hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj&hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjFjNjFjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjPh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjJubjs)}(hhh](jx)}(hD``struct device_node *dev`` device tree node for which to translate h](j~)}(h``struct device_node *dev``h]j)}(hjoh]hstruct device_node *dev}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjiubj)}(hhh]j/)}(h'device tree node for which to translateh]h'device tree node for which to translate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjfubjx)}(h3``const __be32 *prop`` pointer into array of cells h](j~)}(h``const __be32 *prop``h]j)}(hjh]hconst __be32 *prop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]j/)}(hpointer into array of cellsh]hpointer into array of cells}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjfubjx)}(hC``phys_addr_t *start`` return value for the start of the DMA range h](j~)}(h``phys_addr_t *start``h]j)}(hjh]hphys_addr_t *start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]j/)}(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&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjfubjx)}(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&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]j/)}(h,return value for the length of the DMA rangeh]h,return value for the length of the DMA range}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj/hMhj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj/hMhjfubeh}(h]h ]h"]h$]h&]uh1jrhjJubj/)}(h**Description**h]j])}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjSubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjJubj/)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjJubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_property_read_reg (C function)c.of_property_read_reghNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubj})}(hof_property_read_regh]j1)}(hof_property_read_regh]hof_property_read_reg}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h7(struct device_node *np, int idx, u64 *addr, u64 *size)h](j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_property_read_regasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj#hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint idxh](j)}(hinth]hint}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(h h]h }(hjWhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjEubj1)}(hidxh]hidx}(hjehhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u64 *addrh](h)}(hhh]j1)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_property_read_regasbuh1hhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjzubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjzubj1)}(haddrh]haddr}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u64 *sizeh](h)}(hhh]j1)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_property_read_regasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(hhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj:hMhj;ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj:hMhjqubeh}(h]h ]h"]h$]h&]uh1jrhjUubj/)}(h**Description**h]j])}(hj`h]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj^ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjUubj/)}(h`Returns -EINVAL if "reg" is not found. Returns 0 on success with addr and size values filled in.h]hdReturns -EINVAL if “reg” is not found. Returns 0 on success with addr and size values filled in.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_dma_is_coherent (C function)c.of_dma_is_coherenthNtauh1hhhhhhNhNubh)}(hhh](h)}(h0bool of_dma_is_coherent (struct device_node *np)h]j)}(h/bool of_dma_is_coherent(struct device_node *np)h](j)}(hj h]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubj})}(hof_dma_is_coherenth]j1)}(hof_dma_is_coherenth]hof_dma_is_coherent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(h(struct device_node *np)h]j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_dma_is_coherentasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj-hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(hCheck if device is coherenth]hCheck if device is coherent}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjahhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj|jNj|jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubjs)}(hhh]jx)}(h'``struct device_node *np`` device node h](j~)}(h``struct device_node *np``h]j)}(hjh]hstruct device_node *np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj)}(hhh]j/)}(h device nodeh]h device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#of_address_to_resource (C function)c.of_address_to_resourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMGubj)}(h h]h }(hj4hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!hhhj3hMGubj})}(hof_address_to_resourceh]j1)}(hof_address_to_resourceh]hof_address_to_resource}(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj!hhhj3hMGubj)}(h8(struct device_node *dev, int index, struct resource *r)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj^ubj)}(h h]h }(hjohhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj^ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj}ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjHsbc.of_address_to_resourceasbuh1hhj^ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj^ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj^ubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubj)}(hstruct resource *rh](j )}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hresourceh]hresource}(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj)modnameN classnameNjNjQ)}jT]jc.of_address_to_resourceasbuh1hhjubj)}(h h]h }(hjEhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjShhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hrh]hr}(hj`hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjZubeh}(h]h ]h"]h$]h&]hhuh1jhj!hhhj3hMGubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj3hMGubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj3hMGhjhhubj*)}(hhh]j/)}(h4Translate device tree address and return as resourceh]h4Translate device tree address and return as resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM;hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj3hMGubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM?hjubjs)}(hhh](jx)}(h1``struct device_node *dev`` Caller's Device 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&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM<hjubj)}(hhh]j/)}(hCaller's Device Nodeh]hCaller’s Device Node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM<hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM<hjubjx)}(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&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM=hjubj)}(hhh]j/)}(hIndex into the arrayh]hIndex into the array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM=hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM=hjubjx)}(h1``struct resource *r`` Pointer to resource array h](j~)}(h``struct resource *r``h]j)}(hj=h]hstruct resource *r}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM>hj7ubj)}(hhh]j/)}(hPointer to resource arrayh]hPointer to resource array}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjRhM>hjSubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jwhjRhM>hjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjxh]h Description}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjvubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM@hjubj/)}(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&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM@hjubj/)}(hXNote that if your address is a PIO address, the conversion will fail if the physical address can't be internally converted to an IO token with pci_address_to_pio(), that is because it's either called too early or it can't be matched to any host bridge IO spaceh]hX Note that if your address is a PIO address, the conversion will fail if the physical address can’t be internally converted to an IO token with pci_address_to_pio(), that is because it’s either called too early or it can’t be matched to any host bridge IO space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMBhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_iomap (C function) c.of_iomaphNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhM`ubh__iomem}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhM`ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhM`ubj})}(hof_iomaph]j1)}(hof_iomaph]hof_iomap}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhM`ubj)}(h#(struct device_node *np, int index)h](j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjFhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjCubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjHmodnameN classnameNjNjQ)}jT]jW)}jJjsb c.of_iomapasbuh1hhj$ubj)}(h h]h }(hjfhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$ubjl)}(hjoh]h*}(hjthhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj$ubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM`ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhM`ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhM`hjhhubj*)}(hhh]j/)}(h1Maps the memory mapped IO for a given device_nodeh]h1Maps the memory mapped IO for a given device_node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chMZhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhM`ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM^hjubjs)}(hhh](jx)}(hD``struct device_node *np`` the device whose io range will be mapped h](j~)}(h``struct device_node *np``h]j)}(hj!h]hstruct device_node *np}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM[hjubj)}(hhh]j/)}(h(the device whose io range will be mappedh]h(the device whose io range will be mapped}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj6hM[hj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj6hM[hjubjx)}(h$``int index`` index of the io range h](j~)}(h ``int index``h]j)}(hjZh]h int index}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM\hjTubj)}(hhh]j/)}(hindex of the io rangeh]hindex of the io range}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjohM\hjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jwhjohM\hjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNh Nubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM^hjubj/)}(h&Returns a pointer to the mapped memoryh]h&Returns a pointer to the mapped memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:23: ./drivers/of/address.chM^hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!irq_of_parse_and_map (C function)c.irq_of_parse_and_maphNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK'ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhK'ubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK'ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhK'ubj})}(hirq_of_parse_and_maph]j1)}(hirq_of_parse_and_maph]hirq_of_parse_and_map}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhK'ubj)}(h$(struct device_node *dev, int index)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjNubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjSmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.irq_of_parse_and_mapasbuh1hhj/ubj)}(h h]h }(hjqhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj/ubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK'ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK'ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhK'hjhhubj*)}(hhh]j/)}(h0Parse and map an interrupt into linux virq spaceh]h0Parse and map an interrupt into linux virq space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhK'ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK$hjubjs)}(hhh](jx)}(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)}(hj,h]hstruct device_node *dev}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK!hj&ubj)}(hhh]j/)}(h9Device node of the device whose interrupt is to be mappedh]h9Device node of the device whose interrupt is to be mapped}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjAhK!hjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jwhjAhK!hj#ubjx)}(h,``int index`` Index of the interrupt to map h](j~)}(h ``int index``h]j)}(hjeh]h int index}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK"hj_ubj)}(hhh]j/)}(hIndex of the interrupt to maph]hIndex of the interrupt to map}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjzhK"hj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jwhjzhK"hj#ubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK$hjubj/)}(hvThis function is a wrapper that chains of_irq_parse_one() and irq_create_of_mapping() to make things easier to callersh]hvThis function is a wrapper that chains of_irq_parse_one() and irq_create_of_mapping() to make things easier to callers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK$hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_irq_find_parent (C function)c.of_irq_find_parenthNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK=ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhK=ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_irq_find_parentsbc.of_irq_find_parentasbuh1hhjhhhjhK=ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhK=ubjl)}(hjoh]h*}(hj3hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhK=ubj})}(hof_irq_find_parenth]j1)}(hj"h]hof_irq_find_parent}(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhK=ubj)}(h(struct device_node *child)h]j)}(hstruct device_node *childh](j )}(hjh]hstruct}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj[ubj)}(h h]h }(hjlhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj[ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjzubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j c.of_irq_find_parentasbuh1hhj[ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj[ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj[ubj1)}(hchildh]hchild}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjWubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK=ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhK=ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhK=hjhhubj*)}(hhh]j/)}(h3Given a device node, find its interrupt parent nodeh]h3Given a device node, find its interrupt parent node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK7hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhK=ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK;hjubjs)}(hhh]jx)}(h5``struct device_node *child`` pointer to device node h](j~)}(h``struct device_node *child``h]j)}(hj!h]hstruct device_node *child}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK8hjubj)}(hhh]j/)}(hpointer to device nodeh]hpointer to device node}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj6hK8hj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj6hK8hjubah}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hj\h]hReturn}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjZubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK:hjubj/)}(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.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chK:hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_irq_parse_raw (C function)c.of_irq_parse_rawhNtauh1hhhhhhNhNubh)}(hhh](h)}(hJint of_irq_parse_raw (const __be32 *addr, struct of_phandle_args *out_irq)h]j)}(hIint of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubj})}(hof_irq_parse_rawh]j1)}(hof_irq_parse_rawh]hof_irq_parse_raw}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhKubj)}(h5(const __be32 *addr, struct of_phandle_args *out_irq)h](j)}(hconst __be32 *addrh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h__be32h]h__be32}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_irq_parse_rawasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj*hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(haddrh]haddr}(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct of_phandle_args *out_irqh](j )}(hjh]hstruct}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjLubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjLubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjpmodnameN classnameNjNjQ)}jT]jc.of_irq_parse_rawasbuh1hhjLubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjLubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjLubj1)}(hout_irqh]hout_irq}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKhjhhubj*)}(hhh]j/)}(h Low level interrupt tree parsingh]h Low level interrupt tree parsing}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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 synthetized 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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubjs)}(hhh](jx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhj ubj)}(hhh]j/)}(hHaddress specifier (start of "reg" property of the device) in be32 formath]hLaddress specifier (start of “reg” property of the device) in be32 format}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj'hKhj(ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj'hKhj ubjx)}(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)}(hjKh]hstruct of_phandle_args *out_irq}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjEubj)}(hhh]j/)}(h2structure of_phandle_args updated by this functionh]h2structure of_phandle_args updated by this function}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj`hKhjaubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jwhj`hKhj ubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubj/)}(hXThis function is a low-level interrupt tree walking function. It can be used to do a partial walk with synthetized 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 synthetized reg and interrupts properties, for example when resolving PCI interrupts when no device node exist for the parent. It takes an interrupt specifier structure as input, walks the tree looking for any interrupt-map properties, translates the specifier for each map, and then returns the translated map.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubj/)}(h+0 on success and a negative number on errorh]h+0 on success and a negative number on error}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubj/)}(h**Note**h]j])}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubj/)}(h>refcount of node **out_irq->np** is increased by 1 on success.h](hrefcount of node }(hjhhhNhNubj])}(h**out_irq->np**h]h out_irq->np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh is increased by 1 on success.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_irq_parse_one (C function)c.of_irq_parse_onehNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMfubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj'hhhj9hMfubj})}(hof_irq_parse_oneh]j1)}(hof_irq_parse_oneh]hof_irq_parse_one}(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjHubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj'hhhj9hMfubj)}(hH(struct device_node *device, int index, struct of_phandle_args *out_irq)h](j)}(hstruct device_node *deviceh](j )}(hjh]hstruct}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjdubj)}(h h]h }(hjuhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjdubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjNsbc.of_irq_parse_oneasbuh1hhjdubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjdubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjdubj1)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubj)}(hstruct of_phandle_args *out_irqh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(hof_phandle_argsh]hof_phandle_args}(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj*ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj/modnameN classnameNjNjQ)}jT]jc.of_irq_parse_oneasbuh1hhj ubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjYhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hout_irqh]hout_irq}(hjfhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubeh}(h]h ]h"]h$]h&]hhuh1jhj'hhhj9hMfubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj#hhhj9hMfubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj9hMfhj hhubj*)}(hhh]j/)}(h!Resolve an interrupt for a deviceh]h!Resolve an interrupt for a device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM[hjhhubah}(h]h ]h"]h$]h&]uh1j)hj hhhj9hMfubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM_hjubjs)}(hhh](jx)}(hL``struct device_node *device`` the device whose interrupt is to be resolved h](j~)}(h``struct device_node *device``h]j)}(hjh]hstruct device_node *device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM\hjubj)}(hhh]j/)}(h,the device whose interrupt is to be resolvedh]h,the device whose interrupt is to be resolved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM\hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM\hjubjx)}(h0``int index`` index of the interrupt to resolve h](j~)}(h ``int index``h]j)}(hj h]h int index}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM]hjubj)}(hhh]j/)}(h!index of the interrupt to resolveh]h!index of the interrupt to resolve}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhM]hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhM]hjubjx)}(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)}(hjCh]hstruct of_phandle_args *out_irq}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM^hj=ubj)}(hhh]j/)}(h1structure of_phandle_args filled by this functionh]h1structure of_phandle_args filled by this function}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjXhM^hjYubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jwhjXhM^hjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hj~h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj|ubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM`hjubj/)}(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&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM`hjubj/)}(h**Note**h]j])}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMdhjubj/)}(h>refcount of node **out_irq->np** is increased by 1 on success.h](hrefcount of node }(hjhhhNhNubj])}(h**out_irq->np**h]h out_irq->np}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh is increased by 1 on success.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMdhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_irq_to_resource (C function)c.of_irq_to_resourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj hMubj})}(hof_irq_to_resourceh]j1)}(hof_irq_to_resourceh]hof_irq_to_resource}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhj hMubj)}(h8(struct device_node *dev, int index, struct resource *r)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj5ubj)}(h h]h }(hjFhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj5ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjWhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjYmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_irq_to_resourceasbuh1hhj5ubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj5ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj5ubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1ubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1ubj)}(hstruct resource *rh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jsc.of_irq_to_resourceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj*hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hjbh]hr}(hj7hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj hMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj hMhjhhubj*)}(hhh]j/)}(h/Decode a node's IRQ and return it as a resourceh]h1Decode a node’s IRQ and return it as a resource}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/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 ](jHfunctioneh"]h$]h&]jLjHjMjxjNjxjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj|ubjs)}(hhh](jx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hpointer to device tree nodeh]hpointer to device tree node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(h*``int index`` zero-based index of the irq h](j~)}(h ``int index``h]j)}(hjh]h int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hzero-based index of the irqh]hzero-based index of the irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj ubj)}(hhh]j/)}(h4pointer to resource structure to return result into.h]h4pointer to resource structure to return result into.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj(hMhjubeh}(h]h ]h"]h$]h&]uh1jrhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_irq_get (C function) c.of_irq_gethNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjihhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjihhhj{hMubj})}(h of_irq_geth]j1)}(h of_irq_geth]h of_irq_get}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjihhhj{hMubj)}(h$(struct device_node *dev, int index)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsb c.of_irq_getasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int indexh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hindexh]hindex}(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjihhhj{hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjehhhj{hMubah}(h]j`ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj{hMhjbhhubj*)}(hhh]j/)}(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}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj_hhubah}(h]h ]h"]h$]h&]uh1j)hjbhhhj{hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjzjNjzjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj~ubjs)}(hhh](jx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hpointer to device tree nodeh]hpointer to device tree node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(h*``int index`` zero-based index of the IRQ h](j~)}(h ``int index``h]j)}(hjh]h int index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hzero-based index of the IRQh]hzero-based index of the IRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhj~ubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj~ubj/)}(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&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_irq_get_byname (C function)c.of_irq_get_bynamehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjXhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjXhhhjjhMubj})}(hof_irq_get_bynameh]j1)}(hof_irq_get_bynameh]hof_irq_get_byname}(hj}hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjyubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjXhhhjjhMubj)}(h+(struct device_node *dev, const char *name)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_irq_get_bynameasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst char *nameh](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj4hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjBhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnameh]hname}(hjOhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjXhhhjjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjThhhjjhMubah}(h]jOah ](j!j"eh"]h$]h&]j&j')j(huh1hhjjhMhjQhhubj*)}(hhh]j/)}(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}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjvhhubah}(h]h ]h"]h$]h&]uh1j)hjQhhhjjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubjs)}(hhh](jx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hpointer to device tree nodeh]hpointer to device tree node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(h``const char *name`` IRQ name h](j~)}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hIRQ nameh]hIRQ name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hj.h]hReturn}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj,ubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj/)}(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.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_irq_to_resource_table (C function)c.of_irq_to_resource_tablehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjohhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjohhhjhMubj})}(hof_irq_to_resource_tableh]j1)}(hof_irq_to_resource_tableh]hof_irq_to_resource_table}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjohhhjhMubj)}(h<(struct device_node *dev, struct resource *res, int nr_irqs)h](j)}(hstruct device_node *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_irq_to_resource_tableasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct resource *resh](j )}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj/hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hresourceh]hresource}(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjBmodnameN classnameNjNjQ)}jT]jc.of_irq_to_resource_tableasbuh1hhjubj)}(h h]h }(hj^hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjlhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hresh]hres}(hjyhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int nr_irqsh](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hnr_irqsh]hnr_irqs}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjkhhhjhMubah}(h]jfah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhhubj*)}(hhh]j/)}(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&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubjs)}(hhh](jx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chM hjubj)}(hhh]j/)}(hpointer to device tree nodeh]hpointer to device tree node}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj.hM hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj.hM hjubjx)}(h7``struct resource *res`` array of resources to fill in h](j~)}(h``struct resource *res``h]j)}(hjRh]hstruct resource *res}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjLubj)}(hhh]j/)}(harray of resources to fill inh]harray of resources to fill in}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjghMhjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jwhjghMhjubjx)}(hQ``int nr_irqs`` the number of IRQs (and upper bound for num of **res** elements) h](j~)}(h``int nr_irqs``h]j)}(hjh]h int nr_irqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(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 }(hjhhhNhNubj])}(h**res**h]hres}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh elements)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj/)}(h4The size of the filled in table (up to **nr_irqs**).h](h'The size of the filled in table (up to }(hjhhhNhNubj])}(h **nr_irqs**h]hnr_irqs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_msi_get_domain (C function)c.of_msi_get_domainhNtauh1hhhhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj+hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj+hhhj<hMubh)}(hhh]j1)}(h irq_domainh]h irq_domain}(hjNhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjPmodnameN classnameNjNjQ)}jT]jW)}jJof_msi_get_domainsbc.of_msi_get_domainasbuh1hhj+hhhj<hMubj)}(h h]h }(hjohhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj+hhhj<hMubjl)}(hjoh]h*}(hj}hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj+hhhj<hMubj})}(hof_msi_get_domainh]j1)}(hjlh]hof_msi_get_domain}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj+hhhj<hMubj)}(hS(struct device *dev, const struct device_node *np, enum irq_domain_bus_token token)h](j)}(hstruct device *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jjc.of_msi_get_domainasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjOubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjTmodnameN classnameNjNjQ)}jT]jjc.of_msi_get_domainasbuh1hhjubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj~hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum irq_domain_bus_token tokenh](j )}(henumh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hirq_domain_bus_tokenh]hirq_domain_bus_token}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jjc.of_msi_get_domainasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(htokenh]htoken}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj<hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj'hhhj<hMubah}(h]j"ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj<hMhj$hhubj*)}(hhh]j/)}(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&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hj$hhhj<hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj1jNj1jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj9ubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj5ubjs)}(hhh](jx)}(h@``struct device *dev`` device for which the domain is requested h](j~)}(h``struct device *dev``h]j)}(hjZh]hstruct device *dev}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjTubj)}(hhh]j/)}(h(device for which the domain is requestedh]h(device for which the domain is requested}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjohMhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jwhjohMhjQubjx)}(h9``const struct device_node *np`` device node for **dev** 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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hdevice node for **dev**h](hdevice node for }(hjhhhNhNubj])}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubeh}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjQubjx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(hbus type for this domainh]hbus type for this domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjQubeh}(h]h ]h"]h$]h&]uh1jrhj5ubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj5ubj/)}(hGParse the msi-parent property and returns the corresponding MSI domain.h]hGParse the msi-parent property and returns the corresponding MSI domain.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj5ubj/)}(h **Return**h]j])}(hj<h]hReturn}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj:ubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj5ubj/)}(h4the MSI domain for this device (or NULL on failure).h]h4the MSI domain for this device (or NULL on failure).}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_msi_configure (C function)c.of_msi_configurehNtauh1hhhhhhNhNubh)}(hhh](h)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}hhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj}hhhjhMubj})}(hof_msi_configureh]j1)}(hof_msi_configureh]hof_msi_configure}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj}hhhjhMubj)}(h2(struct device *dev, const struct device_node *np)h](j)}(hstruct device *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_msi_configureasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct device_node *nph](j )}(hjHh]hconst}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj,ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj,ubj )}(hjh]hstruct}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj,ubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj,ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjfubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjkmodnameN classnameNjNjQ)}jT]jc.of_msi_configureasbuh1hhj,ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj,ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj,ubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj}hhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjyhhhjhMubah}(h]jtah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjvhhubj*)}(hhh]j/)}(h$Set the msi_domain field of a deviceh]h$Set the msi_domain field of a device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjvhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhhhNhNubjS)}(h**Parameters** ``struct device *dev`` device structure to associate with an MSI irq domain ``const struct device_node *np`` device node for that deviceh](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubjs)}(hhh](jx)}(hL``struct device *dev`` device structure to associate with an MSI irq domain h](j~)}(h``struct device *dev``h]j)}(hj h]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhjubj)}(hhh]j/)}(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&]uh1j.hj"hMhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj"hMhjubjx)}(h<``const struct device_node *np`` device node for that deviceh](j~)}(h ``const struct device_node *np``h]j)}(hjFh]hconst struct device_node *np}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj@ubj)}(hhh]j/)}(hdevice node for that deviceh]hdevice node for that device}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:26: ./drivers/of/irq.chMhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jwhj[hMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"of_fdt_unflatten_tree (C function)c.of_fdt_unflatten_treehNtauh1hhhhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhhV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhMubj})}(hof_fdt_unflatten_treeh]j1)}(hof_fdt_unflatten_treeh]hof_fdt_unflatten_tree}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(hR(const unsigned long *blob, struct device_node *dad, struct device_node **mynodes)h](j)}(hconst unsigned long *blobh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hlongh]hlong}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj/hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj=hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hblobh]hblob}(hjJhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node *dadh](j )}(hjh]hstruct}(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj_ubj)}(h h]h }(hjphhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj_ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_fdt_unflatten_treeasbuh1hhj_ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj_ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj_ubj1)}(hdadh]hdad}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj_ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct device_node **mynodesh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_fdt_unflatten_treeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubjl)}(hjoh]h*}(hj,hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hmynodesh]hmynodes}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(h*create tree of device_nodes from flat blobh]h*create tree of device_nodes from flat blob}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhj`hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj{jNj{jOjPjQuh1hhhhhhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubjs)}(hhh](jx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj)}(hhh]j/)}(hFlat device tree blobh]hFlat device tree blob}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj)}(hhh]j/)}(hParent device nodeh]hParent device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(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&]uh1j}hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj)}(hhh]j/)}(h#The device tree created by the callh]h#The device tree created by the call}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj+hMhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj+hMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hjQh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjOubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj/)}(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.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj/)}(h **Return**h]j])}(hjxh]hReturn}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjvubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hV/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:29: ./drivers/of/fdt.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhhhhhNhNubeh}(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](h#of_driver_match_device (C function)c.of_driver_match_devicehNtauh1hhjhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhjhhh_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubj})}(hof_driver_match_deviceh]j1)}(hof_driver_match_deviceh]hof_driver_match_device}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhKubj)}(h5(struct device *dev, const struct device_driver *drv)h](j)}(hstruct device *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hdeviceh]hdevice}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj3modnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_driver_match_deviceasbuh1hhjubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj_hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hjlhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hconst struct device_driver *drvh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_driverh]h device_driver}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jMc.of_driver_match_deviceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdrvh]hdrv}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKhjhhubj*)}(hhh]j/)}(h3Tell if a driver's of_match_table matches a device.h]h5Tell if a driver’s of_match_table matches a device.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj9jNj9jOjPjQuh1hhhhjhNhNubjS)}(h**Parameters** ``struct device *dev`` the device structure to match against ``const struct device_driver *drv`` the device_driver structure to testh](j/)}(h**Parameters**h]j])}(hjCh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjAubah}(h]h ]h"]h$]h&]uh1j.h_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhj=ubjs)}(hhh](jx)}(h=``struct device *dev`` the device structure to match against h](j~)}(h``struct device *dev``h]j)}(hjbh]hstruct device *dev}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j}h_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhj\ubj)}(hhh]j/)}(h%the device structure to match againsth]h%the device structure to match against}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjwhKhjxubah}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]uh1jwhjwhKhjYubjx)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjubj)}(hhh]j/)}(h#the device_driver structure to testh]h#the device_driver structure to test}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h_/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:35: ./include/linux/of_device.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjYubeh}(h]h ]h"]h$]h&]uh1jrhj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_match_device (C function)c.of_match_devicehNtauh1hhjhhhNhNubh)}(hhh](h)}(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 )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj,ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj1modnameN classnameNjNjQ)}jT]jW)}jJof_match_devicesbc.of_match_deviceasbuh1hhjhhhjhKubj)}(h h]h }(hjPhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubjl)}(hjoh]h*}(hj^hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhKubj})}(hof_match_deviceh]j1)}(hjMh]hof_match_device}(hjohhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjkubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhKubj)}(h>(const struct of_device_id *matches, const struct device *dev)h](j)}(h"const struct of_device_id *matchesh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jKc.of_match_deviceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hmatchesh]hmatches}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst struct device *devh](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj" hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubj )}(hjh]hstruct}(hj0 hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj= hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(hdeviceh]hdevice}(hjN hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjK ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjP modnameN classnameNjNjQ)}jT]jKc.of_match_deviceasbuh1hhj ubj)}(h h]h }(hjl hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjz hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKhjhhubj*)}(hhh]j/)}(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&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj hhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj jNj jOjPjQuh1hhhhjhNhNubjS)}(hX4**Parameters** ``const struct of_device_id *matches`` array of of device 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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubjs)}(hhh](jx)}(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)}(hj h]h"const struct of_device_id *matches}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubj)}(hhh]j/)}(h0array of of device match structures to search inh]h0array of of device match structures to search in}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj hKhj ubjx)}(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&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj% ubj)}(hhh]j/)}(h(the of device structure to match againsth]h(the of device structure to match against}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj@ hKhjA ubah}(h]h ]h"]h$]h&]uh1jhj% ubeh}(h]h ]h"]h$]h&]uh1jwhj@ hKhj ubeh}(h]h ]h"]h$]h&]uh1jrhj ubj/)}(h**Description**h]j])}(hjf h]h Description}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjd ubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubj/)}(hoUsed by a driver to check whether an platform_device present in the system is in its list of supported devices.h]hoUsed by a driver to check whether an platform_device present in the system is in its list of supported devices.}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h of_dma_configure_id (C function)c.of_dma_configure_idhNtauh1hhjhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhj hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chK]ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhj hK]ubj})}(hof_dma_configure_idh]j1)}(hof_dma_configure_idh]hof_dma_configure_id}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj hhhj hK]ubj)}(hK(struct device *dev, struct device_node *np, bool force_dma, const u32 *id)h](j)}(hstruct device *devh](j )}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(hdeviceh]hdevice}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj modnameN classnameNjNjQ)}jT]jW)}jJj sbc.of_dma_configure_idasbuh1hhj ubj)}(h h]h }(hj& hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hj4 hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hdevh]hdev}(hjA hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjZ hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjV ubj)}(h h]h }(hjg hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjV ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjx hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hju ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjz modnameN classnameNjNjQ)}jT]j" c.of_dma_configure_idasbuh1hhjV ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjV ubjl)}(hjoh]h*}(hj hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjV ubj1)}(hnph]hnp}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjV ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hbool force_dmah](j)}(hj h]hbool}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubj1)}(h force_dmah]h force_dma}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h const u32 *idh](j )}(hjHh]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(hu32h]hu32}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj modnameN classnameNjNjQ)}jT]j" c.of_dma_configure_idasbuh1hhj ubj)}(h h]h }(hj: hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjH hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hidh]hid}(hjU hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hK]ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj hK]ubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj hK]hj hhubj*)}(hhh]j/)}(hSetup DMA configurationh]hSetup DMA configuration}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKOhj| hhubah}(h]h ]h"]h$]h&]uh1j)hj hhhj hK]ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj jNj jOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKShj ubjs)}(hhh](jx)}(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&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKPhj ubj)}(hhh]j/)}(h!Device to apply DMA configurationh]h!Device to apply DMA configuration}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hKPhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj hKPhj ubjx)}(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&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKQhj ubj)}(hhh]j/)}(h+Pointer to OF node having DMA configurationh]h+Pointer to OF node having DMA configuration}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hKQhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj hKQhj ubjx)}(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)}(hj2 h]hbool force_dma}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0 ubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKShj, ubj)}(hhh]j/)}(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.}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKRhjH ubah}(h]h ]h"]h$]h&]uh1jhj, ubeh}(h]h ]h"]h$]h&]uh1jwhjG hKShj ubjx)}(h8``const u32 *id`` Optional const pointer value input id h](j~)}(h``const u32 *id``h]j)}(hjl h]h const u32 *id}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj ubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKThjf ubj)}(hhh]j/)}(h%Optional const pointer value input idh]h%Optional const pointer value input id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj hKThj ubah}(h]h ]h"]h$]h&]uh1jhjf ubeh}(h]h ]h"]h$]h&]uh1jwhj hKThj ubeh}(h]h ]h"]h$]h&]uh1jrhj ubj/)}(h**Description**h]j])}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKVhj ubj/)}(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&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKVhj ubj/)}(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&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKYhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_device_modalias (C function)c.of_device_modaliashNtauh1hhjhhhNhNubh)}(hhh](h)}(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]j1)}(hssize_th]hssize_t}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_device_modaliassbc.of_device_modaliasasbuh1hhj hhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhjhKubj})}(hof_device_modaliash]j1)}(hjh]hof_device_modalias}(hj2hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj hhhjhKubj)}(h,(struct device *dev, char *str, ssize_t len)h](j)}(hstruct device *devh](j )}(hjh]hstruct}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjIubj)}(h h]h }(hjZhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjIubh)}(hhh]j1)}(hdeviceh]hdevice}(hjkhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjhubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmmodnameN classnameNjNjQ)}jT]jc.of_device_modaliasasbuh1hhjIubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjIubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjIubj1)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjIubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubj)}(h char *strh](j)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hstrh]hstr}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubj)}(h ssize_t lenh](h)}(hhh]j1)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jc.of_device_modaliasasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj1)}(hlenh]hlen}(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhjhKubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKhj hhubj*)}(hhh]j/)}(h3Fill buffer with newline terminated modalias stringh]h3Fill buffer with newline terminated modalias string}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjUhhubah}(h]h ]h"]h$]h&]uh1j)hj hhhjhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjpjNjpjOjPjQuh1hhhhjhNhNubjS)}(h{**Parameters** ``struct device *dev`` Calling device ``char *str`` Modalias string ``ssize_t len`` Size of **str**h](j/)}(h**Parameters**h]j])}(hjzh]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjxubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjtubjs)}(hhh](jx)}(h&``struct device *dev`` Calling device h](j~)}(h``struct device *dev``h]j)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjubj)}(hhh]j/)}(hCalling deviceh]hCalling device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubjx)}(h``char *str`` Modalias string h](j~)}(h ``char *str``h]j)}(hjh]h char *str}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjubj)}(hhh]j/)}(hModalias stringh]hModalias string}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubjx)}(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&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjubj)}(hhh]j/)}(hSize of **str**h](hSize of }(hj$hhhNhNubj])}(h**str**h]hstr}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj$ubeh}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj hKhjubeh}(h]h ]h"]h$]h&]uh1jrhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_device_uevent (C function)c.of_device_ueventhNtauh1hhjhhhNhNubh)}(hhh](h)}(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}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjohhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjohhhjhKubj})}(hof_device_ueventh]j1)}(hof_device_ueventh]hof_device_uevent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjohhhjhKubj)}(h7(const struct device *dev, struct kobj_uevent_env *env)h](j)}(hconst struct device *devh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_device_ueventasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct kobj_uevent_env *envh](j )}(hjh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9ubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubh)}(hhh]j1)}(hkobj_uevent_envh]hkobj_uevent_env}(hj[hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj]modnameN classnameNjNjQ)}jT]jc.of_device_ueventasbuh1hhj9ubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj9ubj1)}(henvh]henv}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjkhhhjhKubah}(h]jfah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKhjhhhubj*)}(hhh]j/)}(h%Display OF related uevent informationh]h%Display OF related uevent information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhhjhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjubjs)}(hhh](jx)}(hJ``const struct device *dev`` Device to display the uevent information for h](j~)}(h``const struct device *dev``h]j)}(hjh]hconst struct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjubj)}(hhh]j/)}(h,Device to display the uevent information forh]h,Device to display the uevent information for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubjx)}(hT``struct kobj_uevent_env *env`` Kernel object's userspace event reference to fill uph](j~)}(h``struct kobj_uevent_env *env``h]j)}(hj8h]hstruct kobj_uevent_env *env}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhj2ubj)}(hhh]j/)}(h4Kernel object's userspace event reference to fill uph]h6Kernel object’s userspace event reference to fill up}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chKhjNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jwhjMhKhjubeh}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"of_device_make_bus_id (C function)c.of_device_make_bus_idhNtauh1hhjhhhNhNubh)}(hhh](h)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chM%ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhM%ubj})}(hof_device_make_bus_idh]j1)}(hof_device_make_bus_idh]hof_device_make_bus_id}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhM%ubj)}(h(struct device *dev)h]j)}(hstruct device *devh](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_device_make_bus_idasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hdevh]hdev}(hj(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM%ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhM%ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhM%hjhhubj*)}(hhh]j/)}(h0Use the device node data to assign a unique nameh]h0Use the device node data to assign a unique name}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhjOhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhM%ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjjNjjjOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjth]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjrubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chM"hjnubjs)}(hhh]jx)}(hX``struct device *dev`` pointer to device structure that is linked to a device tree node h](j~)}(h``struct device *dev``h]j)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chMhjubj)}(hhh]j/)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubah}(h]h ]h"]h$]h&]uh1jrhjnubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chM!hjnubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hY/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:38: ./drivers/of/device.chM!hjnubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_dev_auxdata (C struct)c.of_dev_auxdatahNtauh1hhjhhha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhNubh)}(hhh](h)}(hof_dev_auxdatah]j)}(hstruct of_dev_auxdatah](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhj!hKubj})}(hof_dev_auxdatah]j1)}(hjh]hof_dev_auxdata}(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhj!hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj!hKubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj!hKhj hhubj*)}(hhh]j/)}(h3lookup table entry for device names & platform_datah]h3lookup table entry for device names & platform_data}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjShhubah}(h]h ]h"]h$]h&]uh1j)hj hhhj!hKubeh}(h]h ](jHstructeh"]h$]h&]jLjHjMjnjNjnjOjPjQuh1hhhhjhjhNubjS)}(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](j/)}(h**Definition**::h](j])}(h**Definition**h]h Definition}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjvubh:}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjrubj;)}(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; };}hjsbah}(h]h ]h"]h$]h&]hhuh1j;ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjrubj/)}(h **Members**h]j])}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjrubjs)}(hhh](jx)}(h>``compatible`` compatible value of node to match against node h](j~)}(h``compatible``h]j)}(hjh]h compatible}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjubj)}(hhh]j/)}(h.compatible value of node to match against nodeh]h.compatible value of node to match against node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubjx)}(h?``phys_addr`` Start address of registers to match against node h](j~)}(h ``phys_addr``h]j)}(hjh]h phys_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjubj)}(hhh]j/)}(h0Start address of registers to match against nodeh]h0Start address of registers to match against node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubjx)}(h+``name`` Name to assign for matching nodes h](j~)}(h``name``h]j)}(hj5h]hname}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j}ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhj/ubj)}(hhh]j/)}(h!Name to assign for matching nodesh]h!Name to assign for matching nodes}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjJhKhjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jwhjJhKhjubjx)}(h<``platform_data`` platform_data to assign for matching nodesh](j~)}(h``platform_data``h]j)}(hjnh]h platform_data}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j}ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjhubj)}(hhh]j/)}(h*platform_data to assign for matching nodesh]h*platform_data to assign for matching nodes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubeh}(h]h ]h"]h$]h&]uh1jrhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhjhNubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjhhubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjhhubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhKhjhhubj/)}(h**Note**h]j])}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhK!hjhhubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.ha/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:41: ./include/linux/of_platform.hhK!hjhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#of_find_device_by_node (C function)c.of_find_device_by_nodehNtauh1hhjhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK$ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!hhhj2hK$ubh)}(hhh]j1)}(hplatform_deviceh]hplatform_device}(hjDhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjFmodnameN classnameNjNjQ)}jT]jW)}jJof_find_device_by_nodesbc.of_find_device_by_nodeasbuh1hhj!hhhj2hK$ubj)}(h h]h }(hjehhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!hhhj2hK$ubjl)}(hjoh]h*}(hjshhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj!hhhj2hK$ubj})}(hof_find_device_by_nodeh]j1)}(hjbh]hof_find_device_by_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj!hhhj2hK$ubj)}(h(struct device_node *np)h]j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]j`c.of_find_device_by_nodeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj!hhhj2hK$ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj2hK$ubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhj2hK$hjhhubj*)}(hhh]j/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhj2hK$ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj8jNj8jOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjBh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj@ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK hj<ubjs)}(hhh]jx)}(h7``struct device_node *np`` Pointer to device tree node h](j~)}(h``struct device_node *np``h]j)}(hjah]hstruct device_node *np}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj[ubj)}(hhh]j/)}(hPointer to device tree nodeh]hPointer to device tree node}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjvhKhjwubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1jwhjvhKhjXubah}(h]h ]h"]h$]h&]uh1jrhj<ubj/)}(h**Description**h]j])}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj<ubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhj<ubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK"hj<ubj/)}(h-platform_device pointer, or NULL if not foundh]h-platform_device pointer, or NULL if not found}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK"hj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_device_alloc (C function)c.of_device_allochNtauh1hhjhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKaubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKaubh)}(hhh]j1)}(hplatform_deviceh]hplatform_device}(hj'hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj)modnameN classnameNjNjQ)}jT]jW)}jJof_device_allocsbc.of_device_allocasbuh1hhjhhhjhKaubj)}(h h]h }(hjHhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKaubjl)}(hjoh]h*}(hjVhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhKaubj})}(hof_device_alloch]j1)}(hjEh]hof_device_alloc}(hjghhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjcubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhKaubj)}(hC(struct device_node *np, const char *bus_id, struct device *parent)h](j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj~ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj~ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jCc.of_device_allocasbuh1hhj~ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj~ubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj~ubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj~ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzubj)}(hconst char *bus_idh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj)hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hbus_idh]hbus_id}(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzubj)}(hstruct device *parenth](j )}(hjh]hstruct}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjKubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjKubh)}(hhh]j1)}(hdeviceh]hdevice}(hjmhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjomodnameN classnameNjNjQ)}jT]jCc.of_device_allocasbuh1hhjKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjKubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjKubj1)}(hparenth]hparent}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKaubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKaubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKahjhhubj*)}(hhh]j/)}(h$Allocate and initialize an of_deviceh]h$Allocate and initialize an of_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK\hjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhKaubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK`hjubjs)}(hhh](jx)}(h;``struct device_node *np`` device node to assign to device 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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK]hj ubj)}(hhh]j/)}(hdevice node to assign to deviceh]hdevice node to assign to device}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj&hK]hj'ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj&hK]hjubjx)}(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)}(hjJh]hconst char *bus_id}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK^hjDubj)}(hhh]j/)}(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.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj_hK^hj`ubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jwhj_hK^hjubjx)}(h(``struct device *parent`` Parent device.h](j~)}(h``struct device *parent``h]j)}(hjh]hstruct device *parent}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK`hj}ubj)}(hhh]j/)}(hParent device.h]hParent device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chK_hjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jwhjhK`hjubeh}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&of_platform_device_create (C function)c.of_platform_device_createhNtauh1hhjhhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubh)}(hhh]j1)}(hplatform_deviceh]hplatform_device}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jW)}jJof_platform_device_createsbc.of_platform_device_createasbuh1hhjhhhjhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhKubjl)}(hjoh]h*}(hj+hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjhhhjhKubj})}(hof_platform_device_createh]j1)}(hjh]hof_platform_device_create}(hj<hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhKubj)}(hC(struct device_node *np, const char *bus_id, struct device *parent)h](j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjSubj)}(h h]h }(hjdhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjSubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjuhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjrubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjwmodnameN classnameNjNjQ)}jT]jc.of_platform_device_createasbuh1hhjSubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjSubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjSubj1)}(hnph]hnp}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOubj)}(hconst char *bus_idh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hbus_idh]hbus_id}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOubj)}(hstruct device *parenth](j )}(hjh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(hdeviceh]hdevice}(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj?ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjDmodnameN classnameNjNjQ)}jT]jc.of_platform_device_createasbuh1hhj ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjnhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hparenth]hparent}(hj{hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhKhjhhubj*)}(hhh]j/)}(h+Alloc, initialize and register an of_deviceh]h+Alloc, initialize and register an of_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjubjs)}(hhh](jx)}(h@``struct device_node *np`` pointer to node to create device for 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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjubj)}(hhh]j/)}(h$pointer to node to create device forh]h$pointer to node to create device for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhKhjubjx)}(h-``const char *bus_id`` name to assign device h](j~)}(h``const char *bus_id``h]j)}(hjh]hconst char *bus_id}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjubj)}(hhh]j/)}(hname to assign deviceh]hname to assign device}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj4hKhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhj4hKhjubjx)}(h<``struct device *parent`` Linux device model parent device. h](j~)}(h``struct device *parent``h]j)}(hjXh]hstruct device *parent}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjRubj)}(hhh]j/)}(h!Linux device model parent device.h]h!Linux device model parent device.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjmhKhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jwhjmhKhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h **Return**h]j])}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjubj/)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"of_platform_bus_probe (C function)c.of_platform_bus_probehNtauh1hhjhhhNhNubh)}(hhh](h)}(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}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjhhhjhMubj})}(hof_platform_bus_probeh]j1)}(hof_platform_bus_probeh]hof_platform_bus_probe}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjhhhjhMubj)}(hU(struct device_node *root, const struct of_device_id *matches, struct device *parent)h](j)}(hstruct device_node *rooth](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj5modnameN classnameNjNjQ)}jT]jW)}jJjsbc.of_platform_bus_probeasbuh1hhjubj)}(h h]h }(hjShhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjahhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hrooth]hroot}(hjnhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h"const struct of_device_id *matchesh](j )}(hjHh]hconst}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubj )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjmodnameN classnameNjNjQ)}jT]jOc.of_platform_bus_probeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hjhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hmatchesh]hmatches}(hjhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hstruct device *parenth](j )}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubh)}(hhh]j1)}(hdeviceh]hdevice}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj2modnameN classnameNjNjQ)}jT]jOc.of_platform_bus_probeasbuh1hhjubj)}(h h]h }(hjNhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjubjl)}(hjoh]h*}(hj\hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjubj1)}(hparenth]hparent}(hjihhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhMubah}(h]jah ](j!j"eh"]h$]h&]j&j')j(huh1hhjhMhjhhubj*)}(hhh]j/)}(h(Probe the device-tree for platform busesh]h(Probe the device-tree for platform buses}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjhhubah}(h]h ]h"]h$]h&]uh1j)hjhhhjhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjjNjjOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjubjs)}(hhh](jx)}(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)}(hjh]hstruct device_node *root}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjubj)}(hhh]j/)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jwhjhMhjubjx)}(hA``const struct of_device_id *matches`` match table for bus nodes 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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj ubj)}(hhh]j/)}(hmatch table for bus nodesh]hmatch table for bus nodes}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj" hMhj# ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jwhj" hMhjubjx)}(hI``struct device *parent`` parent to hook devices from, NULL for toplevel h](j~)}(h``struct device *parent``h]j)}(hjF h]hstruct device *parent}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj@ ubj)}(hhh]j/)}(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&]uh1j.hj[ hMhj\ ubah}(h]h ]h"]h$]h&]uh1jhj@ ubeh}(h]h ]h"]h$]h&]uh1jwhj[ hMhjubeh}(h]h ]h"]h$]h&]uh1jrhjubj/)}(h**Description**h]j])}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjubj/)}(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 hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_platform_populate (C function)c.of_platform_populatehNtauh1hhjhhhNhNubh)}(hhh](h)}(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}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj hhhj hMubj})}(hof_platform_populateh]j1)}(hof_platform_populateh]hof_platform_populate}(hj hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj hhhj hMubj)}(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 )}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj!!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj#!modnameN classnameNjNjQ)}jT]jW)}jJj sbc.of_platform_populateasbuh1hhj ubj)}(h h]h }(hjA!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj ubjl)}(hjoh]h*}(hjO!hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj ubj1)}(hrooth]hroot}(hj\!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h"const struct of_device_id *matchesh](j )}(hjHh]hconst}(hju!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjq!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjq!ubj )}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjq!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjq!ubh)}(hhh]j1)}(h of_device_idh]h of_device_id}(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj!modnameN classnameNjNjQ)}jT]j=!c.of_platform_populateasbuh1hhjq!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjq!ubjl)}(hjoh]h*}(hj!hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjq!ubj1)}(hmatchesh]hmatches}(hj!hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjq!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h#const struct of_dev_auxdata *lookuph](j )}(hjHh]hconst}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubj)}(h h]h }(hj "hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!ubj )}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubj)}(h h]h }(hj("hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!ubh)}(hhh]j1)}(hof_dev_auxdatah]hof_dev_auxdata}(hj9"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6"ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj;"modnameN classnameNjNjQ)}jT]j=!c.of_platform_populateasbuh1hhj!ubj)}(h h]h }(hjW"hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!ubjl)}(hjoh]h*}(hje"hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj!ubj1)}(hlookuph]hlookup}(hjr"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hstruct device *parenth](j )}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj"ubh)}(hhh]j1)}(hdeviceh]hdevice}(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj"modnameN classnameNjNjQ)}jT]j=!c.of_platform_populateasbuh1hhj"ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj"ubjl)}(hjoh]h*}(hj"hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj"ubj1)}(hparenth]hparent}(hj"hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj hhhj hMubah}(h]j ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj hMhj hhubj*)}(hhh]j/)}(h/Populate platform_devices from device tree datah]h/Populate platform_devices from device tree data}(hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/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 ](jHfunctioneh"]h$]h&]jLjHjMj$#jNj$#jOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj.#h]h Parameters}(hj0#hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj,#ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(#ubjs)}(hhh](jx)}(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)}(hjM#h]hstruct device_node *root}(hjO#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK#ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhjG#ubj)}(hhh]j/)}(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}(hjf#hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjb#hMhjc#ubah}(h]h ]h"]h$]h&]uh1jhjG#ubeh}(h]h ]h"]h$]h&]uh1jwhjb#hMhjD#ubjx)}(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)}(hj#h]h"const struct of_device_id *matches}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj#ubj)}(hhh]j/)}(h$match table, NULL to use the defaulth]h$match table, NULL to use the default}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj#hMhj#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jwhj#hMhjD#ubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj#ubj)}(hhh]j/)}(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&]uh1j.hj#hMhj#ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jwhj#hMhjD#ubjx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj#ubj)}(hhh]j/)}(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&]uh1j.hj $hMhj$ubah}(h]h ]h"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]uh1jwhj $hMhjD#ubeh}(h]h ]h"]h$]h&]uh1jrhj(#ubj/)}(h**Description**h]j])}(hj3$h]h Description}(hj5$hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj1$ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(#ubj/)}(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 }(hjI$hhhNhNubj])}(h **matches**h]hmatches}(hjQ$hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjI$ubh argument).}(hjI$hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(#ubj/)}(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().}(hjj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(#ubj/)}(h **Return**h]j])}(hj{$h]hReturn}(hj}$hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjy$ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(#ubj/)}(h0 on success, < 0 on failure.h]h0 on success, < 0 on failure.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(#ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#of_platform_depopulate (C function)c.of_platform_depopulatehNtauh1hhjhhhNhNubh)}(hhh](h)}(h3void of_platform_depopulate (struct device *parent)h]j)}(h2void of_platform_depopulate(struct device *parent)h](j)}(hvoidh]hvoid}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj)}(h h]h }(hj$hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$hhhj$hMubj})}(hof_platform_depopulateh]j1)}(hof_platform_depopulateh]hof_platform_depopulate}(hj$hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj$hhhj$hMubj)}(h(struct device *parent)h]j)}(hstruct device *parenth](j )}(hjh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj)}(h h]h }(hj %hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$ubh)}(hhh]j1)}(hdeviceh]hdevice}(hj%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj%ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj%modnameN classnameNjNjQ)}jT]jW)}jJj$sbc.of_platform_depopulateasbuh1hhj$ubj)}(h h]h }(hj;%hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj$ubjl)}(hjoh]h*}(hjI%hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj$ubj1)}(hparenth]hparent}(hjV%hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubah}(h]h ]h"]h$]h&]hhuh1jhj$hhhj$hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj$hhhj$hMubah}(h]j$ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj$hMhj$hhubj*)}(hhh]j/)}(h)Remove devices populated from device treeh]h)Remove devices populated from device tree}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMyhj}%hhubah}(h]h ]h"]h$]h&]uh1j)hj$hhhj$hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj%jNj%jOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj%ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chM}hj%ubjs)}(hhh]jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMzhj%ubj)}(hhh]j/)}(h%device which children will be removedh]h%device which children will be removed}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj%hMzhj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jwhj%hMzhj%ubah}(h]h ]h"]h$]h&]uh1jrhj%ubj/)}(h**Description**h]j])}(hj%h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj%ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chM|hj%ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chM|hj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&devm_of_platform_populate (C function)c.devm_of_platform_populatehNtauh1hhjhhhNhNubh)}(hhh](h)}(h2int devm_of_platform_populate (struct device *dev)h]j)}(h1int devm_of_platform_populate(struct device *dev)h](j)}(hinth]hint}(hjA&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=&hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj)}(h h]h }(hjP&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj=&hhhjO&hMubj})}(hdevm_of_platform_populateh]j1)}(hdevm_of_platform_populateh]hdevm_of_platform_populate}(hjb&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj^&ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj=&hhhjO&hMubj)}(h(struct device *dev)h]j)}(hstruct device *devh](j )}(hjh]hstruct}(hj~&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjz&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjz&ubh)}(hhh]j1)}(hdeviceh]hdevice}(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj&modnameN classnameNjNjQ)}jT]jW)}jJjd&sbc.devm_of_platform_populateasbuh1hhjz&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjz&ubjl)}(hjoh]h*}(hj&hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjz&ubj1)}(hdevh]hdev}(hj&hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjz&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjv&ubah}(h]h ]h"]h$]h&]hhuh1jhj=&hhhjO&hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj9&hhhjO&hMubah}(h]j4&ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjO&hMhj6&hhubj*)}(hhh]j/)}(h/Populate platform_devices from device tree datah]h/Populate platform_devices from device tree data}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj&hhubah}(h]h ]h"]h$]h&]uh1j)hj6&hhhjO&hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj'jNj'jOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj#'h]h Parameters}(hj%'hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj!'ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj'ubjs)}(hhh]jx)}(hO``struct device *dev`` device that requested to populate from device tree data h](j~)}(h``struct device *dev``h]j)}(hjB'h]hstruct device *dev}(hjD'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@'ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj<'ubj)}(hhh]j/)}(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&]uh1j.hjW'hMhjX'ubah}(h]h ]h"]h$]h&]uh1jhj<'ubeh}(h]h ]h"]h$]h&]uh1jwhjW'hMhj9'ubah}(h]h ]h"]h$]h&]uh1jrhj'ubj/)}(h**Description**h]j])}(hj}'h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj{'ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj'ubj/)}(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.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj'ubj/)}(h **Return**h]j])}(hj'h]hReturn}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj'ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj'ubj/)}(h0 on success, < 0 on failure.h]h0 on success, < 0 on failure.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(devm_of_platform_depopulate (C function)c.devm_of_platform_depopulatehNtauh1hhjhhhNhNubh)}(hhh](h)}(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 ]jah"]h$]h&]uh1jhj'hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj'hhhj'hMubj})}(hdevm_of_platform_depopulateh]j1)}(hdevm_of_platform_depopulateh]hdevm_of_platform_depopulate}(hj (hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj(ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj'hhhj'hMubj)}(h(struct device *dev)h]j)}(hstruct device *devh](j )}(hjh]hstruct}(hj&(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"(ubj)}(h h]h }(hj3(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj"(ubh)}(hhh]j1)}(hdeviceh]hdevice}(hjD(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjA(ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjF(modnameN classnameNjNjQ)}jT]jW)}jJj (sbc.devm_of_platform_depopulateasbuh1hhj"(ubj)}(h h]h }(hjd(hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj"(ubjl)}(hjoh]h*}(hjr(hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj"(ubj1)}(hdevh]hdev}(hj(hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj"(ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubah}(h]h ]h"]h$]h&]hhuh1jhj'hhhj'hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj'hhhj'hMubah}(h]j'ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj'hMhj'hhubj*)}(hhh]j/)}(h)Remove devices populated from device treeh]h)Remove devices populated from device tree}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/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 ](jHfunctioneh"]h$]h&]jLjHjMj(jNj(jOjPjQuh1hhhhjhNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj(ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(ubjs)}(hhh]jx)}(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&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(ubj)}(hhh]j/)}(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&]uh1j.hj(hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]uh1jwhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1jrhj(ubj/)}(h**Description**h]j])}(hj%)h]h Description}(hj')hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj#)ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(ubj/)}(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&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:44: ./drivers/of/platform.chMhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjhhhNhNubeh}(h]driver-model-functionsah ]h"]driver model functionsah$]h&]uh1hhhhhhhhK!ubh)}(hhh](h)}(h Overlay and Dynamic DT functionsh]h Overlay and Dynamic DT functions}(hj\)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY)hhhhhK0ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h of_resolve_phandles (C function)c.of_resolve_phandleshNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h5int of_resolve_phandles (struct device_node *overlay)h]j)}(h4int of_resolve_phandles(struct device_node *overlay)h](j)}(hinth]hint}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)hhh[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj)hhhj)hKubj})}(hof_resolve_phandlesh]j1)}(hof_resolve_phandlesh]hof_resolve_phandles}(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj)hhhj)hKubj)}(h(struct device_node *overlay)h]j)}(hstruct device_node *overlayh](j )}(hjh]hstruct}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj)ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj)hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj)modnameN classnameNjNjQ)}jT]jW)}jJj)sbc.of_resolve_phandlesasbuh1hhj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj)ubjl)}(hjoh]h*}(hj *hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj)ubj1)}(hoverlayh]hoverlay}(hj*hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubah}(h]h ]h"]h$]h&]hhuh1jhj)hhhj)hKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj{)hhhj)hKubah}(h]jv)ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj)hKhjx)hhubj*)}(hhh]j/)}(h.Relocate and resolve overlay against live treeh]h.Relocate and resolve overlay against live tree}(hjC*hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj@*hhubah}(h]h ]h"]h$]h&]uh1j)hjx)hhhj)hKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj[*jNj[*jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hje*h]h Parameters}(hjg*hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjc*ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubjs)}(hhh]jx)}(hV``struct device_node *overlay`` Pointer to devicetree overlay to relocate and resolve h](j~)}(h``struct device_node *overlay``h]j)}(hj*h]hstruct device_node *overlay}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1j}h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj~*ubj)}(hhh]j/)}(h5Pointer to devicetree overlay to relocate and resolveh]h5Pointer to devicetree overlay to relocate and resolve}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj*hKhj*ubah}(h]h ]h"]h$]h&]uh1jhj~*ubeh}(h]h ]h"]h$]h&]uh1jwhj*hKhj{*ubah}(h]h ]h"]h$]h&]uh1jrhj_*ubj/)}(h**Description**h]j])}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj*ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(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 }(hj*hhhNhNubj])}(h **overlay**h]hoverlay}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj*ubhr to a range that does not conflict with the live expanded devicetree. Update references to the local phandles in }(hj*hhhNhNubj])}(h **overlay**h]hoverlay}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj*ubh*. Update (resolve) phandle references in }(hj*hhhNhNubj])}(h **overlay**h]hoverlay}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj*ubh, that refer to the live expanded devicetree.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(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.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(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.}(hj)+hhhNhNubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(h**overlay** must be detached.h](j])}(h **overlay**h]hoverlay}(hj<+hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj8+ubh must be detached.}(hj8+hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(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 }(hjU+hhhNhNubj])}(h **overlay**h]hoverlay}(hj]+hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjU+ubhX 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.}(hjU+hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(h **Return**h]j])}(hjx+h]hReturn}(hjz+hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjv+ubah}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubj/)}(h4``0`` on success or a negative error value on error.h](j)}(h``0``h]h0}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubh/ on success or a negative error value on error.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1j.h[/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:50: ./drivers/of/resolver.chKhj_*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_node_get (C function) c.of_node_gethNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj+hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK"ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj+hhhj+hK"ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj+hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj+modnameN classnameNjNjQ)}jT]jW)}jJ of_node_getsb c.of_node_getasbuh1hhj+hhhj+hK"ubj)}(h h]h }(hj ,hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj+hhhj+hK"ubjl)}(hjoh]h*}(hj,hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj+hhhj+hK"ubj})}(h of_node_geth]j1)}(hj,h]h of_node_get}(hj*,hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj&,ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj+hhhj+hK"ubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j )}(hjh]hstruct}(hjE,hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjA,ubj)}(h h]h }(hjR,hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjA,ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjc,hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj`,ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetje,modnameN classnameNjNjQ)}jT]j, c.of_node_getasbuh1hhjA,ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjA,ubjl)}(hjoh]h*}(hj,hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjA,ubj1)}(hnodeh]hnode}(hj,hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjA,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj=,ubah}(h]h ]h"]h$]h&]hhuh1jhj+hhhj+hK"ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj+hhhj+hK"ubah}(h]j+ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj+hK"hj+hhubj*)}(hhh]j/)}(hIncrement refcount of a nodeh]hIncrement refcount of a node}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhj,hhubah}(h]h ]h"]h$]h&]uh1j)hj+hhhj+hK"ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj,jNj,jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj,h]h Parameters}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj,ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK hj,ubjs)}(hhh]jx)}(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)}(hj-h]hstruct device_node *node}(hj -hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhj-ubj)}(hhh]j/)}(hFNode to inc refcount, NULL is supported to simplify writing of callersh]hFNode to inc refcount, NULL is supported to simplify writing of callers}(hj -hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chKhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jwhj-hKhj,ubah}(h]h ]h"]h$]h&]uh1jrhj,ubj/)}(h **Return**h]j])}(hjC-h]hReturn}(hjE-hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjA-ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK hj,ubj/)}(h#The node with refcount incremented.h]h#The node with refcount incremented.}(hjY-hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK hj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_node_put (C function) c.of_node_puthNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h+void of_node_put (struct device_node *node)h]j)}(h*void of_node_put(struct device_node *node)h](j)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK/ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-hhhj-hK/ubj})}(h of_node_puth]j1)}(h of_node_puth]h of_node_put}(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj-hhhj-hK/ubj)}(h(struct device_node *node)h]j)}(hstruct device_node *nodeh](j )}(hjh]hstruct}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj-hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj-modnameN classnameNjNjQ)}jT]jW)}jJj-sb c.of_node_putasbuh1hhj-ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj-ubjl)}(hjoh]h*}(hj.hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj-ubj1)}(hnodeh]hnode}(hj.hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj-ubah}(h]h ]h"]h$]h&]hhuh1jhj-hhhj-hK/ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj-hhhj-hK/ubah}(h]j{-ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj-hK/hj}-hhubj*)}(hhh]j/)}(hDecrement refcount of a nodeh]hDecrement refcount of a node}(hjH.hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK+hjE.hhubah}(h]h ]h"]h$]h&]uh1j)hj}-hhhj-hK/ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj`.jNj`.jOjPjQuh1hhhhjY)hNhNubjS)}(hw**Parameters** ``struct device_node *node`` Node to dec refcount, NULL is supported to simplify writing of callersh](j/)}(h**Parameters**h]j])}(hjj.h]h Parameters}(hjl.hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjh.ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK/hjd.ubjs)}(hhh]jx)}(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)}(hj.h]hstruct device_node *node}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chK,hj.ubj)}(hhh]j/)}(hFNode to dec refcount, NULL is supported to simplify writing of callersh]hFNode to dec refcount, NULL is supported to simplify writing of callers}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj.hK,hj.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jwhj.hK,hj.ubah}(h]h ]h"]h$]h&]uh1jrhjd.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_detach_node (C function)c.of_detach_nodehNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h+int of_detach_node (struct device_node *np)h]j)}(h*int of_detach_node(struct device_node *np)h](j)}(hinth]hint}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM%ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj.hhhj.hM%ubj})}(hof_detach_nodeh]j1)}(hof_detach_nodeh]hof_detach_node}(hj/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj.ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj.hhhj.hM%ubj)}(h(struct device_node *np)h]j)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj/ubj)}(h h]h }(hj,/hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj=/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:/ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj?/modnameN classnameNjNjQ)}jT]jW)}jJj/sbc.of_detach_nodeasbuh1hhj/ubj)}(h h]h }(hj]/hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj/ubjl)}(hjoh]h*}(hjk/hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj/ubj1)}(hnph]hnp}(hjx/hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj/ubah}(h]h ]h"]h$]h&]hhuh1jhj.hhhj.hM%ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj.hhhj.hM%ubah}(h]j.ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj.hM%hj.hhubj*)}(hhh]j/)}(h%"Unplug" a node from the device tree.h]h)“Unplug” a node from the device tree.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM"hj/hhubah}(h]h ]h"]h$]h&]uh1j)hj.hhhj.hM%ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj/jNj/jOjPjQuh1hhhhjY)hNhNubjS)}(hP**Parameters** ``struct device_node *np`` Pointer to the caller's Device Nodeh](j/)}(h**Parameters**h]j])}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj/ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM&hj/ubjs)}(hhh]jx)}(h>``struct device_node *np`` Pointer to the caller's Device Nodeh](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&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM(hj/ubj)}(hhh]j/)}(h#Pointer to the caller's Device Nodeh]h%Pointer to the caller’s Device Node}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM#hj/ubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jwhj/hM(hj/ubah}(h]h ]h"]h$]h&]uh1jrhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%of_changeset_create_node (C function)c.of_changeset_create_nodehNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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 )}(hjh]hstruct}(hj=0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj90hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj)}(h h]h }(hjK0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj90hhhjJ0hMubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj\0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjY0ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj^0modnameN classnameNjNjQ)}jT]jW)}jJof_changeset_create_nodesbc.of_changeset_create_nodeasbuh1hhj90hhhjJ0hMubj)}(h h]h }(hj}0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj90hhhjJ0hMubjl)}(hjoh]h*}(hj0hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj90hhhjJ0hMubj})}(hof_changeset_create_nodeh]j1)}(hjz0h]hof_changeset_create_node}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj90hhhjJ0hMubj)}(hM(struct of_changeset *ocs, struct device_node *parent, const char *full_name)h](j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj0hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj0modnameN classnameNjNjQ)}jT]jx0c.of_changeset_create_nodeasbuh1hhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj0ubjl)}(hjoh]h*}(hj1hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj0ubj1)}(hocsh]hocs}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hstruct device_node *parenth](j )}(hjh]hstruct}(hj'1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj#1ubj)}(h h]h }(hj41hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj#1ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjE1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjB1ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjG1modnameN classnameNjNjQ)}jT]jx0c.of_changeset_create_nodeasbuh1hhj#1ubj)}(h h]h }(hjc1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj#1ubjl)}(hjoh]h*}(hjq1hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj#1ubj1)}(hparenth]hparent}(hj~1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj#1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hconst char *full_nameh](j )}(hjHh]hconst}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj1ubj)}(hcharh]hchar}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj1ubjl)}(hjoh]h*}(hj1hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj1ubj1)}(h full_nameh]h full_name}(hj1hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhj90hhhjJ0hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj50hhhjJ0hMubah}(h]j00ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjJ0hMhj20hhubj*)}(hhh]j/)}(hADynamically create a device node and attach to a given changeset.h]hADynamically create a device node and attach to a given changeset.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj2hhubah}(h]h ]h"]h$]h&]uh1j)hj20hhhjJ0hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj2jNj2jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj'2h]h Parameters}(hj)2hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj%2ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj!2ubjs)}(hhh](jx)}(h2``struct of_changeset *ocs`` Pointer to changeset h](j~)}(h``struct of_changeset *ocs``h]j)}(hjF2h]hstruct of_changeset *ocs}(hjH2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD2ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj@2ubj)}(hhh]j/)}(hPointer to changeseth]hPointer to changeset}(hj_2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj[2hMhj\2ubah}(h]h ]h"]h$]h&]uh1jhj@2ubeh}(h]h ]h"]h$]h&]uh1jwhj[2hMhj=2ubjx)}(h=``struct device_node *parent`` Pointer to parent device node h](j~)}(h``struct device_node *parent``h]j)}(hj2h]hstruct device_node *parent}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}2ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjy2ubj)}(hhh]j/)}(hPointer to parent device nodeh]hPointer to parent device node}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj2hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjy2ubeh}(h]h ]h"]h$]h&]uh1jwhj2hMhj=2ubjx)}(h)``const char *full_name`` Node full name h](j~)}(h``const char *full_name``h]j)}(hj2h]hconst char *full_name}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj2ubj)}(hhh]j/)}(hNode full nameh]hNode full name}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj2hMhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jwhj2hMhj=2ubeh}(h]h ]h"]h$]h&]uh1jrhj!2ubj/)}(h **Return**h]j])}(hj2h]hReturn}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj2ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj!2ubj/)}(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.}(hj 3hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj!2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_changeset_init (C function)c.of_changeset_inithNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h1void of_changeset_init (struct of_changeset *ocs)h]j)}(h0void of_changeset_init(struct of_changeset *ocs)h](j)}(hvoidh]hvoid}(hj83hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj43hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj)}(h h]h }(hjG3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj43hhhjF3hMubj})}(hof_changeset_inith]j1)}(hof_changeset_inith]hof_changeset_init}(hjY3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjU3ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj43hhhjF3hMubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hju3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjq3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjq3ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj3ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj3modnameN classnameNjNjQ)}jT]jW)}jJj[3sbc.of_changeset_initasbuh1hhjq3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjq3ubjl)}(hjoh]h*}(hj3hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjq3ubj1)}(hocsh]hocs}(hj3hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjq3ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjm3ubah}(h]h ]h"]h$]h&]hhuh1jhj43hhhjF3hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj03hhhjF3hMubah}(h]j+3ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjF3hMhj-3hhubj*)}(hhh]j/)}(hInitialize a changeset for useh]hInitialize a changeset for use}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj3hhubah}(h]h ]h"]h$]h&]uh1j)hj-3hhhjF3hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj4jNj4jOjPjQuh1hhhhjY)hNhNubjS)}(hs**Parameters** ``struct of_changeset *ocs`` changeset pointer **Description** Initialize a changeset structureh](j/)}(h**Parameters**h]j])}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj4ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj4ubjs)}(hhh]jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hj94h]hstruct of_changeset *ocs}(hj;4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj74ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj34ubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hjR4hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjN4hMhjO4ubah}(h]h ]h"]h$]h&]uh1jhj34ubeh}(h]h ]h"]h$]h&]uh1jwhjN4hMhj04ubah}(h]h ]h"]h$]h&]uh1jrhj4ubj/)}(h**Description**h]j])}(hjt4h]h Description}(hjv4hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjr4ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj4ubj/)}(h Initialize a changeset structureh]h Initialize a changeset structure}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_changeset_destroy (C function)c.of_changeset_destroyhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h4void of_changeset_destroy (struct of_changeset *ocs)h]j)}(h3void of_changeset_destroy(struct of_changeset *ocs)h](j)}(hvoidh]hvoid}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj)}(h h]h }(hj4hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj4hhhj4hMubj})}(hof_changeset_destroyh]j1)}(hof_changeset_destroyh]hof_changeset_destroy}(hj4hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj4hhhj4hMubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj4ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj4ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj5modnameN classnameNjNjQ)}jT]jW)}jJj4sbc.of_changeset_destroyasbuh1hhj4ubj)}(h h]h }(hj45hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj4ubjl)}(hjoh]h*}(hjB5hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj4ubj1)}(hocsh]hocs}(hjO5hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj4ubah}(h]h ]h"]h$]h&]hhuh1jhj4hhhj4hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj4hhhj4hMubah}(h]j4ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj4hMhj4hhubj*)}(hhh]j/)}(hDestroy a changeseth]hDestroy a changeset}(hjy5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjv5hhubah}(h]h ]h"]h$]h&]uh1j)hj4hhhj4hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj5jNj5jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj5h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj5ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj5ubjs)}(hhh]jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hj5h]hstruct of_changeset *ocs}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj5ubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj5hMhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jwhj5hMhj5ubah}(h]h ]h"]h$]h&]uh1jrhj5ubj/)}(h**Description**h]j])}(hj5h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj5ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj5ubj/)}(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.}(hj 6hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_changeset_apply (C function)c.of_changeset_applyhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h1int of_changeset_apply (struct of_changeset *ocs)h]j)}(h0int of_changeset_apply(struct of_changeset *ocs)h](j)}(hinth]hint}(hj:6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj66hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM ubj)}(h h]h }(hjI6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj66hhhjH6hM ubj})}(hof_changeset_applyh]j1)}(hof_changeset_applyh]hof_changeset_apply}(hj[6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjW6ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj66hhhjH6hM ubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hjw6hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjs6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjs6ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj6modnameN classnameNjNjQ)}jT]jW)}jJj]6sbc.of_changeset_applyasbuh1hhjs6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjs6ubjl)}(hjoh]h*}(hj6hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjs6ubj1)}(hocsh]hocs}(hj6hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjs6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjo6ubah}(h]h ]h"]h$]h&]hhuh1jhj66hhhjH6hM ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj26hhhjH6hM ubah}(h]j-6ah ](j!j"eh"]h$]h&]j&j')j(huh1hhjH6hM hj/6hhubj*)}(hhh]j/)}(hApplies a changeseth]hApplies a changeset}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj6hhubah}(h]h ]h"]h$]h&]uh1j)hj/6hhhjH6hM ubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj7jNj7jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj7h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj7ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj7ubjs)}(hhh]jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hj;7h]hstruct of_changeset *ocs}(hj=7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj97ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj57ubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hjT7hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjP7hMhjQ7ubah}(h]h ]h"]h$]h&]uh1jhj57ubeh}(h]h ]h"]h$]h&]uh1jwhjP7hMhj27ubah}(h]h ]h"]h$]h&]uh1jrhj7ubj/)}(h**Description**h]j])}(hjv7h]h Description}(hjx7hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjt7ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj7ubj/)}(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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj7ubj/)}(h **Return**h]j])}(hj7h]hReturn}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj7ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hj7ubj/)}(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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h of_changeset_revert (C function)c.of_changeset_reverthNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h2int of_changeset_revert (struct of_changeset *ocs)h]j)}(h1int of_changeset_revert(struct of_changeset *ocs)h](j)}(hinth]hint}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMjubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj7hhhj7hMjubj})}(hof_changeset_reverth]j1)}(hof_changeset_reverth]hof_changeset_revert}(hj8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj7ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj7hhhj7hMjubj)}(h(struct of_changeset *ocs)h]j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubj)}(h h]h }(hj,8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj8ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj=8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:8ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj?8modnameN classnameNjNjQ)}jT]jW)}jJj8sbc.of_changeset_revertasbuh1hhj8ubj)}(h h]h }(hj]8hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj8ubjl)}(hjoh]h*}(hjk8hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj8ubj1)}(hocsh]hocs}(hjx8hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj8ubah}(h]h ]h"]h$]h&]hhuh1jhj7hhhj7hMjubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj7hhhj7hMjubah}(h]j7ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj7hMjhj7hhubj*)}(hhh]j/)}(hReverts an applied changeseth]hReverts an applied changeset}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM_hj8hhubah}(h]h ]h"]h$]h&]uh1j)hj7hhhj7hMjubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj8jNj8jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj8ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMchj8ubjs)}(hhh]jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hj8h]hstruct of_changeset *ocs}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMahj8ubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj8hMahj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jwhj8hMahj8ubah}(h]h ]h"]h$]h&]uh1jrhj8ubj/)}(h**Description**h]j])}(hj9h]h Description}(hj 9hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj9ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMchj8ubj/)}(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.}(hj49hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMchj8ubj/)}(h **Return**h]j])}(hjE9h]hReturn}(hjG9hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjC9ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhhj8ubj/)}(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[9hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h of_changeset_action (C function)c.of_changeset_actionhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9hhhj9hMubj})}(hof_changeset_actionh]j1)}(hof_changeset_actionh]hof_changeset_action}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj9hhhj9hMubj)}(h_(struct of_changeset *ocs, unsigned long action, struct device_node *np, struct property *prop)h](j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj9ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj9hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj9modnameN classnameNjNjQ)}jT]jW)}jJj9sbc.of_changeset_actionasbuh1hhj9ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj9ubjl)}(hjoh]h*}(hj:hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj9ubj1)}(hocsh]hocs}(hj :hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(hunsigned long actionh](j)}(hunsignedh]hunsigned}(hj9:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5:ubj)}(h h]h }(hjG:hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj5:ubj)}(hlongh]hlong}(hjU:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5:ubj)}(h h]h }(hjc:hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj5:ubj1)}(hactionh]haction}(hjq:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj5:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj:modnameN classnameNjNjQ)}jT]j:c.of_changeset_actionasbuh1hhj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:ubjl)}(hjoh]h*}(hj:hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj:ubj1)}(hnph]hnp}(hj:hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubj)}(hstruct property *proph](j )}(hjh]hstruct}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj:ubj)}(h h]h }(hj;hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:ubh)}(hhh]j1)}(hpropertyh]hproperty}(hj;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj;ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj;modnameN classnameNjNjQ)}jT]j:c.of_changeset_actionasbuh1hhj:ubj)}(h h]h }(hj6;hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj:ubjl)}(hjoh]h*}(hjD;hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj:ubj1)}(hproph]hprop}(hjQ;hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubeh}(h]h ]h"]h$]h&]hhuh1jhj9hhhj9hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj9hhhj9hMubah}(h]j}9ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj9hMhj9hhubj*)}(hhh]j/)}(h/Add an action to the tail of the changeset listh]h/Add an action to the tail of the changeset list}(hj{;hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMwhjx;hhubah}(h]h ]h"]h$]h&]uh1j)hj9hhhj9hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMj;jNj;jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj;h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj;ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM{hj;ubjs)}(hhh](jx)}(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&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMyhj;ubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj;hMyhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jwhj;hMyhj;ubjx)}(h+``unsigned long action`` action to perform h](j~)}(h``unsigned long action``h]j)}(hj;h]hunsigned long action}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMzhj;ubj)}(hhh]j/)}(haction to performh]haction to perform}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj <hMzhj <ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jwhj <hMzhj;ubjx)}(h2``struct device_node *np`` Pointer to device node h](j~)}(h``struct device_node *np``h]j)}(hj.<h]hstruct device_node *np}(hj0<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,<ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM{hj(<ubj)}(hhh]j/)}(hPointer to device nodeh]hPointer to device node}(hjG<hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjC<hM{hjD<ubah}(h]h ]h"]h$]h&]uh1jhj(<ubeh}(h]h ]h"]h$]h&]uh1jwhjC<hM{hj;ubjx)}(h.``struct property *prop`` Pointer to property h](j~)}(h``struct property *prop``h]j)}(hjg<h]hstruct property *prop}(hji<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje<ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM|hja<ubj)}(hhh]j/)}(hPointer to propertyh]hPointer to property}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj|<hM|hj}<ubah}(h]h ]h"]h$]h&]uh1jhja<ubeh}(h]h ]h"]h$]h&]uh1jwhj|<hM|hj;ubeh}(h]h ]h"]h$]h&]uh1jrhj;ubj/)}(h**Description**h]j])}(hj<h]h Description}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj<ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM~hj;ubj/)}(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}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM~hj;ubj/)}(h **Return**h]j])}(hj<h]hReturn}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj<ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj;ubj/)}(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<hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)of_changeset_add_prop_string (C function)c.of_changeset_add_prop_stringhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj =hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj =hhhj=hMubj})}(hof_changeset_add_prop_stringh]j1)}(hof_changeset_add_prop_stringh]hof_changeset_add_prop_string}(hj/=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj+=ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj =hhhj=hMubj)}(hZ(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h](j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hjK=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjG=ubj)}(h h]h }(hjX=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjG=ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hji=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjf=ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjk=modnameN classnameNjNjQ)}jT]jW)}jJj1=sbc.of_changeset_add_prop_stringasbuh1hhjG=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjG=ubjl)}(hjoh]h*}(hj=hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjG=ubj1)}(hocsh]hocs}(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjG=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjC=ubj)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj=ubh)}(hhh]j1)}(h device_nodeh]h device_node}(hj=hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj=modnameN classnameNjNjQ)}jT]j=c.of_changeset_add_prop_stringasbuh1hhj=ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj=ubjl)}(hjoh]h*}(hj>hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj=ubj1)}(hnph]hnp}(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjC=ubj)}(hconst char *prop_nameh](j )}(hjHh]hconst}(hj->hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)>ubj)}(h h]h }(hj:>hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj)>ubj)}(hcharh]hchar}(hjH>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)>ubj)}(h h]h }(hjV>hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj)>ubjl)}(hjoh]h*}(hjd>hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj)>ubj1)}(h prop_nameh]h prop_name}(hjq>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj)>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjC=ubj)}(hconst char *strh](j )}(hjHh]hconst}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj>ubj)}(hcharh]hchar}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj>ubjl)}(hjoh]h*}(hj>hhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj>ubj1)}(hstrh]hstr}(hj>hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjC=ubeh}(h]h ]h"]h$]h&]hhuh1jhj =hhhj=hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj=hhhj=hMubah}(h]j=ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj=hMhj=hhubj*)}(hhh]j/)}(h$Add a string property to a changeseth]h$Add a string property to a changeset}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/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 ](jHfunctioneh"]h$]h&]jLjHjMj?jNj?jOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hj?h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj?ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubjs)}(hhh](jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hj9?h]hstruct of_changeset *ocs}(hj;?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7?ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj3?ubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hjR?hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjN?hMhjO?ubah}(h]h ]h"]h$]h&]uh1jhj3?ubeh}(h]h ]h"]h$]h&]uh1jwhjN?hMhj0?ubjx)}(h/``struct device_node *np`` device node pointer h](j~)}(h``struct device_node *np``h]j)}(hjr?h]hstruct device_node *np}(hjt?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp?ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjl?ubj)}(hhh]j/)}(hdevice node pointerh]hdevice node pointer}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhjl?ubeh}(h]h ]h"]h$]h&]uh1jwhj?hMhj0?ubjx)}(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&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubj)}(hhh]j/)}(h name of the property to be addedh]h name of the property to be added}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jwhj?hMhj0?ubjx)}(h6``const char *str`` pointer to null terminated string h](j~)}(h``const char *str``h]j)}(hj?h]hconst char *str}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubj)}(hhh]j/)}(h!pointer to null terminated stringh]h!pointer to null terminated string}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jwhj?hMhj0?ubeh}(h]h ]h"]h$]h&]uh1jrhj?ubj/)}(h**Description**h]j])}(hj@h]h Description}(hj!@hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj@ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubj/)}(h3Create a string property and add it to a changeset.h]h3Create a string property and add it to a changeset.}(hj5@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubj/)}(h **Return**h]j])}(hjF@h]hReturn}(hjH@hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjD@ubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubj/)}(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\@hhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h/of_changeset_add_prop_string_array (C function)$c.of_changeset_add_prop_string_arrayhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@hhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj@hhhj@hMubj})}(h"of_changeset_add_prop_string_arrayh]j1)}(h"of_changeset_add_prop_string_arrayh]h"of_changeset_add_prop_string_array}(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj@hhhj@hMubj)}(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 )}(hjh]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj@ubj)}(h hY]h }(hj@hhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj@ubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hj@hhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj@modnameN classnameNjNjQ)}jT]jW)}jJj@sb$c.of_changeset_add_prop_string_arrayasbuh1hhj@ubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj@ubjl)}(hjoh]h*}(hjAhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj@ubj1)}(hocsh]hocs}(hj!AhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubj)}(hstruct device_node *nph](j )}(hjh]hstruct}(hj:AhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj6Aubj)}(h h]h }(hjGAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6Aubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjXAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUAubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjZAmodnameN classnameNjNjQ)}jT]jA$c.of_changeset_add_prop_string_arrayasbuh1hhj6Aubj)}(h h]h }(hjvAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj6Aubjl)}(hjoh]h*}(hjAhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj6Aubj1)}(hnph]hnp}(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj6Aubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubj)}(hconst char *prop_nameh](j )}(hjHh]hconst}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjAubj)}(hcharh]hchar}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjAubjl)}(hjoh]h*}(hjAhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjAubj1)}(h prop_nameh]h prop_name}(hjAhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubj)}(hconst char *const *str_arrayh](j )}(hjHh]hconst}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjBubj)}(h h]h }(hjBhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjBubj)}(hcharh]hchar}(hj"BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj)}(h h]h }(hj0BhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjBubjl)}(hjoh]h*}(hj>BhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjBubj )}(hjHh]hconst}(hjKBhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjBubj)}(h h]h }(hjXBhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjBubjl)}(hjoh]h*}(hjfBhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjBubj1)}(h str_arrayh]h str_array}(hjsBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubj)}(h size_t szh](h)}(hhh]j1)}(hsize_th]hsize_t}(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjBmodnameN classnameNjNjQ)}jT]jA$c.of_changeset_add_prop_string_arrayasbuh1hhjBubj)}(h h]h }(hjBhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjBubj1)}(hszh]hsz}(hjBhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj@ubeh}(h]h ]h"]h$]h&]hhuh1jhj@hhhj@hMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj@hhhj@hMubah}(h]j~@ah ](j!j"eh"]h$]h&]j&j')j(huh1hhj@hMhj@hhubj*)}(hhh]j/)}(h)Add a string list property to a changeseth]h)Add a string list property to a changeset}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjBhhubah}(h]h ]h"]h$]h&]uh1j)hj@hhhj@hMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjBjNjBjOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjCh]h Parameters}(hj ChhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjCubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjCubjs)}(hhh](jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hj&Ch]hstruct of_changeset *ocs}(hj(ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$Cubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhj Cubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hj?ChhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj;ChMhj**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](j/)}(h**Parameters**h]j])}(hjqJh]h Parameters}(hjsJhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjoJubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjkJubjs)}(hhh](jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hjJh]hstruct of_changeset *ocs}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMhjJubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjJhMhjJubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jwhjJhMhjJubjx)}(h/``struct device_node *np`` device node pointer h](j~)}(h``struct device_node *np``h]j)}(hjJh]hstruct device_node *np}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM hjJubj)}(hhh]j/)}(hdevice node pointerh]hdevice node pointer}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjJhM hjJubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jwhjJhM hjJubjx)}(h;``const char *prop_name`` name of the property to be added h](j~)}(h``const char *prop_name``h]j)}(hjKh]hconst char *prop_name}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM!hjJubj)}(hhh]j/)}(h name of the property to be addedh]h name of the property to be added}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjKhM!hjKubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jwhjKhM!hjJubeh}(h]h ]h"]h$]h&]uh1jrhjkJubj/)}(h**Description**h]j])}(hj=Kh]h Description}(hj?KhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj;Kubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM#hjkJubj/)}(h4Create a boolean property and add it to a changeset.h]h4Create a boolean property and add it to a changeset.}(hjSKhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM#hjkJubj/)}(h **Return**h]j])}(hjdKh]hReturn}(hjfKhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjbKubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM%hjkJubj/)}(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.}(hjzKhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chM%hjkJubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,of_changeset_update_prop_string (C function)!c.of_changeset_update_prop_stringhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMRubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjKhhhjKhMRubj})}(hof_changeset_update_prop_stringh]j1)}(hof_changeset_update_prop_stringh]hof_changeset_update_prop_string}(hjKhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjKhhhjKhMRubj)}(hZ(struct of_changeset *ocs, struct device_node *np, const char *prop_name, const char *str)h](j)}(hstruct of_changeset *ocsh](j )}(hjh]hstruct}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjKubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjKubh)}(hhh]j1)}(h of_changeseth]h of_changeset}(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjLmodnameN classnameNjNjQ)}jT]jW)}jJjKsb!c.of_changeset_update_prop_stringasbuh1hhjKubj)}(h h]h }(hj$LhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjKubjl)}(hjoh]h*}(hj2LhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjKubj1)}(hocsh]hocs}(hj?LhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubj)}(hstruct device_node *nph](j )}(hjh]hstruct}(hjXLhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjTLubj)}(h h]h }(hjeLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjTLubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjvLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjsLubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjxLmodnameN classnameNjNjQ)}jT]j L!c.of_changeset_update_prop_stringasbuh1hhjTLubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjTLubjl)}(hjoh]h*}(hjLhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjTLubj1)}(hnph]hnp}(hjLhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjTLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubj)}(hconst char *prop_nameh](j )}(hjHh]hconst}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjLubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjLubj)}(hcharh]hchar}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjLubjl)}(hjoh]h*}(hjLhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjLubj1)}(h prop_nameh]h prop_name}(hj MhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubj)}(hconst char *strh](j )}(hjHh]hconst}(hj%MhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!Mubj)}(h h]h }(hj2MhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!Mubj)}(hcharh]hchar}(hj@MhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!Mubj)}(h h]h }(hjNMhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj!Mubjl)}(hjoh]h*}(hj\MhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhj!Mubj1)}(hstrh]hstr}(hjiMhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj!Mubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjKubeh}(h]h ]h"]h$]h&]hhuh1jhjKhhhjKhMRubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjKhhhjKhMRubah}(h]jKah ](j!j"eh"]h$]h&]j&j')j(huh1hhjKhMRhjKhhubj*)}(hhh]j/)}(h+Add a string property update to a changeseth]h+Add a string property update to a changeset}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMGhjMhhubah}(h]h ]h"]h$]h&]uh1j)hjKhhhjKhMRubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjMjNjMjOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjMh]h Parameters}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjMubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMKhjMubjs)}(hhh](jx)}(h/``struct of_changeset *ocs`` changeset pointer h](j~)}(h``struct of_changeset *ocs``h]j)}(hjMh]hstruct of_changeset *ocs}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMIhjMubj)}(hhh]j/)}(hchangeset pointerh]hchangeset pointer}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjMhMIhjMubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jwhjMhMIhjMubjx)}(h/``struct device_node *np`` device node pointer h](j~)}(h``struct device_node *np``h]j)}(hj Nh]hstruct device_node *np}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Nubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMJhjNubj)}(hhh]j/)}(hdevice node pointerh]hdevice node pointer}(hj&NhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj"NhMJhj#Nubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1jwhj"NhMJhjMubjx)}(h=``const char *prop_name`` name of the property to be updated h](j~)}(h``const char *prop_name``h]j)}(hjFNh]hconst char *prop_name}(hjHNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDNubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMKhj@Nubj)}(hhh]j/)}(h"name of the property to be updatedh]h"name of the property to be updated}(hj_NhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hj[NhMKhj\Nubah}(h]h ]h"]h$]h&]uh1jhj@Nubeh}(h]h ]h"]h$]h&]uh1jwhj[NhMKhjMubjx)}(h6``const char *str`` pointer to null terminated string h](j~)}(h``const char *str``h]j)}(hjNh]hconst char *str}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Nubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMLhjyNubj)}(hhh]j/)}(h!pointer to null terminated stringh]h!pointer to null terminated string}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjNhMLhjNubah}(h]h ]h"]h$]h&]uh1jhjyNubeh}(h]h ]h"]h$]h&]uh1jwhjNhMLhjMubeh}(h]h ]h"]h$]h&]uh1jrhjMubj/)}(h**Description**h]j])}(hjNh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMNhjMubj/)}(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.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMNhjMubj/)}(h **Return**h]j])}(hjNh]hReturn}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMPhjMubj/)}(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.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:53: ./drivers/of/dynamic.chMPhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)of_overlay_notifier_register (C function)c.of_overlay_notifier_registerhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(hint of_overlay_notifier_unregister (struct notifier_block *nb)h]j)}(h=int of_overlay_notifier_unregister(struct notifier_block *nb)h](j)}(hinth]hint}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKubj)}(h h]h }(hjPhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjPhhhjPhKubj})}(hof_overlay_notifier_unregisterh]j1)}(hof_overlay_notifier_unregisterh]hof_overlay_notifier_unregister}(hjPhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjPubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjPhhhjPhKubj)}(h(struct notifier_block *nb)h]j)}(hstruct notifier_block *nbh](j )}(hjh]hstruct}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQubj)}(h h]h }(hj$QhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjQubh)}(hhh]j1)}(hnotifier_blockh]hnotifier_block}(hj5QhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hj2Qubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetj7QmodnameN classnameNjNjQ)}jT]jW)}jJjPsb c.of_overlay_notifier_unregisterasbuh1hhjQubj)}(h h]h }(hjUQhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjQubjl)}(hjoh]h*}(hjcQhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjQubj1)}(hnbh]hnb}(hjpQhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjQubah}(h]h ]h"]h$]h&]hhuh1jhjPhhhjPhKubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjPhhhjPhKubah}(h]jPah ](j!j"eh"]h$]h&]j&j')j(huh1hhjPhKhjPhhubj*)}(hhh]j/)}(h*Unregister notifier for overlay operationsh]h*Unregister notifier for overlay operations}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjQhhubah}(h]h ]h"]h$]h&]uh1j)hjPhhhjPhKubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjQjNjQjOjPjQuh1hhhhjY)hNhNubjS)}(hL**Parameters** ``struct notifier_block *nb`` Notifier block to unregisterh](j/)}(h**Parameters**h]j])}(hjQh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjQubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjQubjs)}(hhh]jx)}(h:``struct notifier_block *nb`` Notifier block to unregisterh](j~)}(h``struct notifier_block *nb``h]j)}(hjQh]hstruct notifier_block *nb}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjQubj)}(hhh]j/)}(hNotifier block to unregisterh]hNotifier block to unregister}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chKhjQubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jwhjQhKhjQubah}(h]h ]h"]h$]h&]uh1jrhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!of_overlay_fdt_apply (C function)c.of_overlay_fdt_applyhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(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}(hj5RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1RhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj)}(h h]h }(hjDRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhj1RhhhjCRhMubj})}(hof_overlay_fdt_applyh]j1)}(hof_overlay_fdt_applyh]hof_overlay_fdt_apply}(hjVRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRRubah}(h]h ](jjeh"]h$]h&]hhuh1j|hj1RhhhjCRhMubj)}(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 )}(hjHh]hconst}(hjrRhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjnRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjnRubj)}(hvoidh]hvoid}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjnRubjl)}(hjoh]h*}(hjRhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjnRubj1)}(h overlay_fdth]h overlay_fdt}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjnRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjRubj)}(hu32 overlay_fdt_sizeh](h)}(hhh]j1)}(hu32h]hu32}(hjRhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjRmodnameN classnameNjNjQ)}jT]jW)}jJjXRsbc.of_overlay_fdt_applyasbuh1hhjRubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjRubj1)}(hoverlay_fdt_sizeh]hoverlay_fdt_size}(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjRubj)}(hint *ret_ovcs_idh](j)}(hinth]hint}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj)}(h h]h }(hj'ShhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjSubjl)}(hjoh]h*}(hj5ShhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjSubj1)}(h ret_ovcs_idh]h ret_ovcs_id}(hjBShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjRubj)}(hconst struct device_node *baseh](j )}(hjHh]hconst}(hj[ShhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjWSubj)}(h h]h }(hjhShhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWSubj )}(hjh]hstruct}(hjvShhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjWSubj)}(h h]h }(hjShhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWSubh)}(hhh]j1)}(h device_nodeh]h device_node}(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjSubah}(h]h ]h"]h$]h&] refdomainjHreftypejJ reftargetjSmodnameN classnameNjNjQ)}jT]jRc.of_overlay_fdt_applyasbuh1hhjWSubj)}(h h]h }(hjShhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjWSubjl)}(hjoh]h*}(hjShhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjWSubj1)}(hbaseh]hbase}(hjShhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjWSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjRubeh}(h]h ]h"]h$]h&]hhuh1jhj1RhhhjCRhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhj-RhhhjCRhMubah}(h]j(Rah ](j!j"eh"]h$]h&]j&j')j(huh1hhjCRhMhj*Rhhubj*)}(hhh]j/)}(h%Create and apply an overlay changeseth]h%Create and apply an overlay changeset}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjShhubah}(h]h ]h"]h$]h&]uh1j)hj*RhhhjCRhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjTjNjTjOjPjQuh1hhhhjY)hNhNubjS)}(hX2**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](j/)}(h**Parameters**h]j])}(hjTh]h Parameters}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjTubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubjs)}(hhh](jx)}(h3``const void *overlay_fdt`` pointer to overlay FDT h](j~)}(h``const void *overlay_fdt``h]j)}(hj8Th]hconst void *overlay_fdt}(hj:ThhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6Tubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj2Tubj)}(hhh]j/)}(hpointer to overlay FDTh]hpointer to overlay FDT}(hjQThhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjMThMhjNTubah}(h]h ]h"]h$]h&]uh1jhj2Tubeh}(h]h ]h"]h$]h&]uh1jwhjMThMhj/Tubjx)}(h<``u32 overlay_fdt_size`` number of bytes in **overlay_fdt** h](j~)}(h``u32 overlay_fdt_size``h]j)}(hjqTh]hu32 overlay_fdt_size}(hjsThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoTubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjkTubj)}(hhh]j/)}(h"number of bytes in **overlay_fdt**h](hnumber of bytes in }(hjThhhNhNubj])}(h**overlay_fdt**h]h overlay_fdt}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjTubeh}(h]h ]h"]h$]h&]uh1j.hjThMhjTubah}(h]h ]h"]h$]h&]uh1jhjkTubeh}(h]h ]h"]h$]h&]uh1jwhjThMhj/Tubjx)}(h@``int *ret_ovcs_id`` pointer for returning created changeset id h](j~)}(h``int *ret_ovcs_id``h]j)}(hjTh]hint *ret_ovcs_id}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj)}(hhh]j/)}(h*pointer for returning created changeset idh]h*pointer for returning created changeset id}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjThMhjTubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jwhjThMhj/Tubjx)}(hP``const struct device_node *base`` pointer for the target node to apply overlay h](j~)}(h"``const struct device_node *base``h]j)}(hjTh]hconst struct device_node *base}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj)}(hhh]j/)}(h,pointer for the target node to apply overlayh]h,pointer for the target node to apply overlay}(hj UhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjUhMhjUubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jwhjUhMhj/Tubeh}(h]h ]h"]h$]h&]uh1jrhjTubj/)}(h**Description**h]j])}(hj,Uh]h Description}(hj.UhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj*Uubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj/)}(h)Creates and applies an overlay changeset.h]h)Creates and applies an overlay changeset.}(hjBUhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj/)}(h:See of_overlay_apply() for important behavior information.h]h:See of_overlay_apply() for important behavior information.}(hjQUhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj/)}(hOn error return, the changeset may be partially applied. This is especially likely if an OF_OVERLAY_POST_APPLY notifier returns an error. In this case the caller should call of_overlay_remove() with the value in ***ret_ovcs_id**.h](hOn error return, the changeset may be partially applied. This is especially likely if an OF_OVERLAY_POST_APPLY notifier returns an error. In this case the caller should call of_overlay_remove() with the value in }(hj`UhhhNhNubj])}(h***ret_ovcs_id**h]h *ret_ovcs_id}(hjhUhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj`Uubh.}(hj`UhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj/)}(h **Return**h]j])}(hjUh]hReturn}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjUubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubj/)}(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. }(hjUhhhNhNubj])}(h***ret_ovcs_id**h]h *ret_ovcs_id}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjUubho is set to the value of overlay changeset id, which can be passed to of_overlay_remove() to remove the overlay.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjTubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hof_overlay_remove (C function)c.of_overlay_removehNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h$int of_overlay_remove (int *ovcs_id)h]j)}(h#int of_overlay_remove(int *ovcs_id)h](j)}(hinth]hint}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjUhhhjUhMubj})}(hof_overlay_removeh]j1)}(hof_overlay_removeh]hof_overlay_remove}(hjUhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjUubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjUhhhjUhMubj)}(h(int *ovcs_id)h]j)}(h int *ovcs_idh](j)}(hinth]hint}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(h h]h }(hj%VhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjVubjl)}(hjoh]h*}(hj3VhhhNhNubah}(h]h ]jxah"]h$]h&]uh1jkhjVubj1)}(hovcs_idh]hovcs_id}(hj@VhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjVubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubah}(h]h ]h"]h$]h&]hhuh1jhjUhhhjUhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjUhhhjUhMubah}(h]jUah ](j!j"eh"]h$]h&]j&j')j(huh1hhjUhMhjUhhubj*)}(hhh]j/)}(h$Revert and free an overlay changeseth]h$Revert and free an overlay changeset}(hjjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjgVhhubah}(h]h ]h"]h$]h&]uh1j)hjUhhhjUhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjVjNjVjOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjVh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjVubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubjs)}(hhh]jx)}(h1``int *ovcs_id`` Pointer to overlay changeset id h](j~)}(h``int *ovcs_id``h]j)}(hjVh]h int *ovcs_id}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.c<hMhjVubj)}(hhh]j/)}(hPointer to overlay changeset idh]hPointer to overlay changeset id}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjVhMhjVubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jwhjVhMhjVubah}(h]h ]h"]h$]h&]uh1jrhjVubj/)}(h**Description**h]j])}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjVubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubj/)}(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. }(hjVhhhNhNubj])}(h **ovcs_id**h]hovcs_id}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjVubh3 was previously returned by of_overlay_fdt_apply().}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubj/)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubjs)}(hhh]jx)}(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:}(hj3WhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj/Wubj)}(hhh]j")}(hhh](j")}(hparameter checksh]j/)}(hjJWh]hparameter checks}(hjLWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjHWubah}(h]h ]h"]h$]h&]uh1j"hjEWubj")}(h%overlay changeset pre-remove notifierh]j/)}(hjbWh]h%overlay changeset pre-remove notifier}(hjdWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj`Wubah}(h]h ]h"]h$]h&]uh1j"hjEWubj")}(hoverlay changeset entry revert h]j/)}(hoverlay changeset entry reverth]hoverlay changeset entry revert}(hj|WhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjAWhMhjxWubah}(h]h ]h"]h$]h&]uh1j"hjEWubeh}(h]h ]h"]h$]h&]j"-uh1j"hjYWhMhjBWubah}(h]h ]h"]h$]h&]uh1jhj/Wubeh}(h]h ]h"]h$]h&]uh1jwhjAWhMhj,Wubah}(h]h ]h"]h$]h&]uh1jrhjVubj/)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubj/)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubjs)}(hhh]jx)}(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:}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjWubj)}(hhh]j")}(hhh](j")}(h overlay changeset entry notifierh]j/)}(hjWh]h overlay changeset entry notifier}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjWubah}(h]h ]h"]h$]h&]uh1j"hjWubj")}(h'overlay changeset post-remove notifier h]j/)}(h&overlay changeset post-remove notifierh]h&overlay changeset post-remove notifier}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjWhMhjWubah}(h]h ]h"]h$]h&]uh1j"hjWubeh}(h]h ]h"]h$]h&]j"jWuh1j"hjWhMhjWubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jwhjWhMhjWubah}(h]h ]h"]h$]h&]uh1jrhjVubj/)}(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.}(hj+XhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubj/)}(h **Return**h]j])}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hj:Xubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubj/)}(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. }(hjRXhhhNhNubj])}(h ***ovcs_id**h]h*ovcs_id}(hjZXhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjRXubhQ is set to zero after reverting the changeset, even if a subsequent error occurs.}(hjRXhhhNhNubeh}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"of_overlay_remove_all (C function)c.of_overlay_remove_allhNtauh1hhjY)hhhNhNubh)}(hhh](h)}(h int of_overlay_remove_all (void)h]j)}(hint of_overlay_remove_all(void)h](j)}(hinth]hint}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXhhhZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j)ah"]h$]h&]uh1jhjXhhhjXhMubj})}(hof_overlay_remove_allh]j1)}(hof_overlay_remove_allh]hof_overlay_remove_all}(hjXhhhNhNubah}(h]h ]j=ah"]h$]h&]uh1j0hjXubah}(h]h ](jjeh"]h$]h&]hhuh1j|hjXhhhjXhMubj)}(h(void)h]j)}(hvoidh]j)}(hvoidh]hvoid}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]noemphhhuh1jhjXubah}(h]h ]h"]h$]h&]hhuh1jhjXhhhjXhMubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjXhhhjXhMubah}(h]jXah ](j!j"eh"]h$]h&]j&j')j(huh1hhjXhMhjXhhubj*)}(hhh]j/)}(h(Reverts and frees all overlay changesetsh]h(Reverts and frees all overlay changesets}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjXhhubah}(h]h ]h"]h$]h&]uh1j)hjXhhhjXhMubeh}(h]h ](jHfunctioneh"]h$]h&]jLjHjMjYjNjYjOjPjQuh1hhhhjY)hNhNubjS)}(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](j/)}(h**Parameters**h]j])}(hjYh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjYubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjYubjs)}(hhh]jx)}(h``void`` no arguments h](j~)}(h``void``h]j)}(hj;Yh]hvoid}(hj=YhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9Yubah}(h]h ]h"]h$]h&]uh1j}hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhj5Yubj)}(hhh]j/)}(h no argumentsh]h no arguments}(hjTYhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hjPYhMhjQYubah}(h]h ]h"]h$]h&]uh1jhj5Yubeh}(h]h ]h"]h$]h&]uh1jwhjPYhMhj2Yubah}(h]h ]h"]h$]h&]uh1jrhjYubj/)}(h**Description**h]j])}(hjvYh]h Description}(hjxYhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjtYubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjYubj/)}(h:Removes all overlays from the system in the correct order.h]h:Removes all overlays from the system in the correct order.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjYubj/)}(h **Return**h]j])}(hjYh]hReturn}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hjYubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjYubj/)}(h(0 on success, or a negative error numberh]h(0 on success, or a negative error number}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j.hZ/var/lib/git/docbuild/linux/Documentation/devicetree/kernel-api:56: ./drivers/of/overlay.chMhjYubeh}(h]h ] kernelindentah"]h$]h&]uh1jRhjY)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}jYhsexpect_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_handlerjZerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _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}(jYhjYjYjjjV)jS)jYjYu nametypes}(jYjYjjV)jYuh}(hhjYhjhhjjjjjjWj\j?jDj j j j jyj~jjj6j;jjjjj-j2jjjU jZ j<#jA#j%j%j'j'j*j*j1-j6-j/j/j93j>3j 6j6j7j7j <j<j>j>j@j@jCjCjYEj^EjFjFjpIjuIjZNj_NjOjOjXQj]Qj4Tj9TjXjXj\j\j`j`jbjbjRejWejgjgjjj jj]ljbljojojErjJrjujujxjxj{j{jjjjjwj|jjjjjVj[j}jjՎjڎjjjIjNjjŖj7j<jjjjj$j)jj"jjj jj'j,jjjںjߺj1j6jnjsj9j>jjj]jbjjj$j)jj"j1j6jjjjjojtjZj_jjjjjjj jjjjjjjjjjjjjjjjj#jjj`jejOjTjfjkj"j'jtjyjjjS)jjjjjj j j j jfjkjjjj jjjjjjjjj j j$j$j4&j9&j'j'jYjY)jv)j{)j+j+j{-j-j.j.j00j50j+3j03j4j4j-6j26j7j7j}9j9j=j=j~@j@jDjDjHjHjKjKjOjOjPjPj(Rj-RjUjUjXjXu 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]j/)}(hhh]h0Hyperlink target "devicetree" is not referenced.}hjkZsbah}(h]h ]h"]h$]h&]uh1j.hjhZubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1jfZuba transformerN include_log] decorationNhhub.