€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/driver-api/infrastructure”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒDevice drivers infrastructure”h]”hŒDevice drivers infrastructure”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒG/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ(The Basic Device Driver-Model Structures”h]”hŒ(The Basic Device Driver-Model Structures”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œsubsys_interface (C struct)”Œc.subsys_interface”hNt”auh1hÜhhËh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒsubsys_interface”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct subsys_interface”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1hþhhúh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jhhúh²hh³jh´KubhŒ desc_name”“”)�”}”(hŒsubsys_interface”h]”hŒ desc_sig_name”“”)�”}”(hhöh]”hŒsubsys_interface”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j'hj#ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j!hhúh²hh³jh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@Œ add_permalink”ˆuh1høŒsphinx_line_type”Œ declarator”hhôh²hh³jh´Kubah}”(h]”hëah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1hòh³jh´Khhïh²hubhŒ desc_content”“”)�”}”(hhh]”hŒ paragraph”“”)�”}”(hŒinterfaces to device functions”h]”hŒinterfaces to device functions”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K2hjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhhïh²hh³jh´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jtŒobjtype”juŒdesctype”juŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1híh²hhhËh³Nh´NubhŒ container”“”)�”}”(hX:**Definition**:: struct subsys_interface { const char *name; const struct bus_type *subsys; struct list_head node; int (*add_dev)(struct device *dev, struct subsys_interface *sif); void (*remove_dev)(struct device *dev, struct subsys_interface *sif); }; **Members** ``name`` name of the device function ``subsys`` subsystem of the devices to attach to ``node`` the list of functions registered at the subsystem ``add_dev`` device hookup to device function handler ``remove_dev`` device hookup to device function handler”h]”(j[)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj…ubhŒ:”…”�”}”(hj…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K6hj�ubhŒ literal_block”“”)�”}”(hXstruct subsys_interface { const char *name; const struct bus_type *subsys; struct list_head node; int (*add_dev)(struct device *dev, struct subsys_interface *sif); void (*remove_dev)(struct device *dev, struct subsys_interface *sif); };”h]”hXstruct subsys_interface { const char *name; const struct bus_type *subsys; struct list_head node; int (*add_dev)(struct device *dev, struct subsys_interface *sif); void (*remove_dev)(struct device *dev, struct subsys_interface *sif); };”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K8hj�ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj·h]”hŒMembers”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K@hj�ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ%``name`` name of the device function ”h]”(hŒterm”“”)�”}”(hŒ``name``”h]”hŒliteral”“”)�”}”(hjÜh]”hŒname”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K4hjÔubhŒ definition”“”)�”}”(hhh]”j[)�”}”(hŒname of the device function”h]”hŒname of the device function”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jóh´K4hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jóh´K4hjÏubjÓ)�”}”(hŒ1``subsys`` subsystem of the devices to attach to ”h]”(jÙ)�”}”(hŒ ``subsys``”h]”jß)�”}”(hjh]”hŒsubsys”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K5hjubjõ)�”}”(hhh]”j[)�”}”(hŒ%subsystem of the devices to attach to”h]”hŒ%subsystem of the devices to attach to”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j.h´K5hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j.h´K5hjÏubjÓ)�”}”(hŒ;``node`` the list of functions registered at the subsystem ”h]”(jÙ)�”}”(hŒ``node``”h]”jß)�”}”(hjRh]”hŒnode”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K6hjLubjõ)�”}”(hhh]”j[)�”}”(hŒ1the list of functions registered at the subsystem”h]”hŒ1the list of functions registered at the subsystem”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jgh´K6hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jgh´K6hjÏubjÓ)�”}”(hŒ5``add_dev`` device hookup to device function handler ”h]”(jÙ)�”}”(hŒ ``add_dev``”h]”jß)�”}”(hj‹h]”hŒadd_dev”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K7hj…ubjõ)�”}”(hhh]”j[)�”}”(hŒ(device hookup to device function handler”h]”hŒ(device hookup to device function handler”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´K7hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´K7hjÏubjÓ)�”}”(hŒ7``remove_dev`` device hookup to device function handler”h]”(jÙ)�”}”(hŒ``remove_dev``”h]”jß)�”}”(hjÄh]”hŒ remove_dev”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K7hj¾ubjõ)�”}”(hhh]”j[)�”}”(hŒ(device hookup to device function handler”h]”hŒ(device hookup to device function handler”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K8hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÙh´K7hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´Nubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K;hhËh²hubj[)�”}”(hXSimple interfaces attached to a subsystem. Multiple interfaces can attach to a subsystem and its devices. Unlike drivers, they do not exclusively claim or control devices. Interfaces usually represent a specific functionality of a subsystem/class of devices.”h]”hXSimple interfaces attached to a subsystem. Multiple interfaces can attach to a subsystem and its devices. Unlike drivers, they do not exclusively claim or control devices. Interfaces usually represent a specific functionality of a subsystem/class of devices.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K8hhËh²hubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_attribute (C struct)”Œc.device_attribute”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevice_attribute”h]”hù)�”}”(hŒstruct device_attribute”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjAh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K@ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAh²hh³jRh´K@ubj")�”}”(hŒdevice_attribute”h]”j()�”}”(hj?h]”hŒdevice_attribute”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjAh²hh³jRh´K@ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj=h²hh³jRh´K@ubah}”(h]”j8ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jRh´K@hj:h²hubjV)�”}”(hhh]”j[)�”}”(hŒ*Interface for exporting device attributes.”h]”hŒ*Interface for exporting device attributes.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kchj„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj:h²hh³jRh´K@ubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjŸj{jŸj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX1**Definition**:: struct device_attribute { struct attribute attr; union { ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf); ssize_t (*show_const)(struct device *dev, const struct device_attribute *attr, char *buf); }; union { ssize_t (*store)(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t (*store_const)(struct device *dev, const struct device_attribute *attr, const char *buf, size_t count); }; }; **Members** ``attr`` sysfs attribute definition. ``{unnamed_union}`` anonymous ``show`` Show handler. ``show_const`` Show handler (read-only). ``{unnamed_union}`` anonymous ``store`` Store handler. ``store_const`` Store handler (read-only).”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj§ubhŒ:”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kghj£ubj¥)�”}”(hXstruct device_attribute { struct attribute attr; union { ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf); ssize_t (*show_const)(struct device *dev, const struct device_attribute *attr, char *buf); }; union { ssize_t (*store)(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t (*store_const)(struct device *dev, const struct device_attribute *attr, const char *buf, size_t count); }; };”h]”hXstruct device_attribute { struct attribute attr; union { ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf); ssize_t (*show_const)(struct device *dev, const struct device_attribute *attr, char *buf); }; union { ssize_t (*store)(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t (*store_const)(struct device *dev, const struct device_attribute *attr, const char *buf, size_t count); }; };”…”�”}”hjÄsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kihj£ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hjÕh]”hŒMembers”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kuhj£ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ%``attr`` sysfs attribute definition. ”h]”(jÙ)�”}”(hŒ``attr``”h]”jß)�”}”(hjôh]”hŒattr”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kehjîubjõ)�”}”(hhh]”j[)�”}”(hŒsysfs attribute definition.”h]”hŒsysfs attribute definition.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´Kehj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´KehjëubjÓ)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jÙ)�”}”(hŒ``{unnamed_union}``”h]”jß)�”}”(hj-h]”hŒ{unnamed_union}”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Khj'ubjõ)�”}”(hhh]”j[)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jBh´KhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jBh´KhjëubjÓ)�”}”(hŒ``show`` Show handler. ”h]”(jÙ)�”}”(hŒ``show``”h]”jß)�”}”(hjfh]”hŒshow”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kfhj`ubjõ)�”}”(hhh]”j[)�”}”(hŒ Show handler.”h]”hŒ Show handler.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j{h´Kfhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j{h´KfhjëubjÓ)�”}”(hŒ)``show_const`` Show handler (read-only). ”h]”(jÙ)�”}”(hŒ``show_const``”h]”jß)�”}”(hjŸh]”hŒ show_const”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kghj™ubjõ)�”}”(hhh]”j[)�”}”(hŒShow handler (read-only).”h]”hŒShow handler (read-only).”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j´h´Kghjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j´h´KghjëubjÓ)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jÙ)�”}”(hŒ``{unnamed_union}``”h]”jß)�”}”(hjØh]”hŒ{unnamed_union}”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KhjÒubjõ)�”}”(hhh]”j[)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jíh´Khjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jíh´KhjëubjÓ)�”}”(hŒ``store`` Store handler. ”h]”(jÙ)�”}”(hŒ ``store``”h]”jß)�”}”(hjh]”hŒstore”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Khhj ubjõ)�”}”(hhh]”j[)�”}”(hŒStore handler.”h]”hŒStore handler.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j&h´Khhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j&h´KhhjëubjÓ)�”}”(hŒ*``store_const`` Store handler (read-only).”h]”(jÙ)�”}”(hŒ``store_const``”h]”jß)�”}”(hjJh]”hŒ store_const”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KhhjDubjõ)�”}”(hhh]”j[)�”}”(hŒStore handler (read-only).”h]”hŒStore handler (read-only).”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kihj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j_h´Khhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_ext_attribute (C struct)”Œc.dev_ext_attribute”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdev_ext_attribute”h]”hù)�”}”(hŒstruct dev_ext_attribute”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Koubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj h²hh³j±h´Koubj")�”}”(hŒdev_ext_attribute”h]”j()�”}”(hjžh]”hŒdev_ext_attribute”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÀubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj h²hh³j±h´Koubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjœh²hh³j±h´Koubah}”(h]”j—ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j±h´Kohj™h²hubjV)�”}”(hhh]”j[)�”}”(hŒ-Exported device attribute with extra context.”h]”hŒ-Exported device attribute with extra context.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K{hjãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj™h²hh³j±h´Koubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjþj{jþj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒ»**Definition**:: struct dev_ext_attribute { struct device_attribute attr; void *var; }; **Members** ``attr`` Exported device attribute. ``var`` Pointer to context.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Khjubj¥)�”}”(hŒNstruct dev_ext_attribute { struct device_attribute attr; void *var; };”h]”hŒNstruct dev_ext_attribute { struct device_attribute attr; void *var; };”…”�”}”hj#sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K�hjubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj4h]”hŒMembers”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K†hjubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ$``attr`` Exported device attribute. ”h]”(jÙ)�”}”(hŒ``attr``”h]”jß)�”}”(hjSh]”hŒattr”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K}hjMubjõ)�”}”(hhh]”j[)�”}”(hŒExported device attribute.”h]”hŒExported device attribute.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jhh´K}hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jhh´K}hjJubjÓ)�”}”(hŒ``var`` Pointer to context.”h]”(jÙ)�”}”(hŒ``var``”h]”jß)�”}”(hjŒh]”hŒvar”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K}hj†ubjõ)�”}”(hhh]”j[)�”}”(hŒPointer to context.”h]”hŒPointer to context.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´K~hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡h´K}hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR (C macro)”Œ c.DEVICE_ATTR”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ DEVICE_ATTR”h]”hù)�”}”(hŒ DEVICE_ATTR”h]”j")�”}”(hŒ DEVICE_ATTR”h]”j()�”}”(hjàh]”hŒ DEVICE_ATTR”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjæubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjâh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KÛubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÞh²hh³jýh´KÛubah}”(h]”jÙah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jýh´KÛhjÛh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÛh²hh³jýh´KÛubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjj{jj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ-``DEVICE_ATTR (_name, _mode, _show, _store)``”h]”jß)�”}”(hjh]”hŒ)DEVICE_ATTR (_name, _mode, _show, _store)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KÝhhËh²hubhŒ block_quote”“”)�”}”(hŒDefine a device attribute. ”h]”j[)�”}”(hŒDefine a device attribute.”h]”hŒDefine a device attribute.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KÛhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jFh´KÛhhËh²hubj€)�”}”(hX;**Parameters** ``_name`` Attribute name. ``_mode`` File mode. ``_show`` Show handler. Optional, but mandatory if attribute is readable. ``_store`` Store handler. Optional, but mandatory if attribute is writable. **Description** Convenience macro for defining a struct device_attribute. For example, ``DEVICE_ATTR(foo, 0644, foo_show, foo_store);`` expands to: .. code-block:: c struct device_attribute dev_attr_foo = { .attr = { .name = "foo", .mode = 0644 }, .show = foo_show, .store = foo_store, };”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KßhjMubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjrh]”hŒ_name”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KÜhjlubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‡h´KÜhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‡h´KÜhjiubjÓ)�”}”(hŒ``_mode`` File mode. ”h]”(jÙ)�”}”(hŒ ``_mode``”h]”jß)�”}”(hj«h]”hŒ_mode”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KÝhj¥ubjõ)�”}”(hhh]”j[)�”}”(hŒ File mode.”h]”hŒ File mode.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÀh´KÝhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÀh´KÝhjiubjÓ)�”}”(hŒJ``_show`` Show handler. Optional, but mandatory if attribute is readable. ”h]”(jÙ)�”}”(hŒ ``_show``”h]”jß)�”}”(hjäh]”hŒ_show”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KÞhjÞubjõ)�”}”(hhh]”j[)�”}”(hŒ?Show handler. Optional, but mandatory if attribute is readable.”h]”hŒ?Show handler. Optional, but mandatory if attribute is readable.”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jùh´KÞhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jùh´KÞhjiubjÓ)�”}”(hŒL``_store`` Store handler. Optional, but mandatory if attribute is writable. ”h]”(jÙ)�”}”(hŒ ``_store``”h]”jß)�”}”(hjh]”hŒ_store”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kßhjubjõ)�”}”(hhh]”j[)�”}”(hŒ@Store handler. Optional, but mandatory if attribute is writable.”h]”hŒ@Store handler. Optional, but mandatory if attribute is writable.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j2h´Kßhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j2h´Kßhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjMubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjXh]”hŒ Description”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KáhjMubj[)�”}”(hŒ9Convenience macro for defining a struct device_attribute.”h]”hŒ9Convenience macro for defining a struct device_attribute.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KàhjMubj[)�”}”(hŒIFor example, ``DEVICE_ATTR(foo, 0644, foo_show, foo_store);`` expands to:”h]”(hŒ For example, ”…”�”}”(hj}h²hh³Nh´Nubjß)�”}”(hŒ0``DEVICE_ATTR(foo, 0644, foo_show, foo_store);``”h]”hŒ,DEVICE_ATTR(foo, 0644, foo_show, foo_store);”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj}ubhŒ expands to:”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KâhjMubj¥)�”}”(hŒ—struct device_attribute dev_attr_foo = { .attr = { .name = "foo", .mode = 0644 }, .show = foo_show, .store = foo_store, };”h]”hŒ—struct device_attribute dev_attr_foo = { .attr = { .name = "foo", .mode = 0644 }, .show = foo_show, .store = foo_store, };”…”�”}”hjžsbah}”(h]”h ]”h"]”h$]”h&]”j?j@Œforce”‰Œlanguage”jtŒhighlight_args”}”uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KähjMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_RW (C macro)”Œc.DEVICE_ATTR_RW”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_RW”h]”hù)�”}”(hŒDEVICE_ATTR_RW”h]”j")�”}”(hŒDEVICE_ATTR_RW”h]”j()�”}”(hjËh]”hŒDEVICE_ATTR_RW”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÑubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÍh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kñubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÉh²hh³jèh´Kñubah}”(h]”jÄah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jèh´KñhjÆh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÆh²hh³jèh´Kñubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzj j{j j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ``DEVICE_ATTR_RW (_name)``”h]”jß)�”}”(hj h]”hŒDEVICE_ATTR_RW (_name)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KóhhËh²hubj3)�”}”(hŒ&Define a read-write device attribute. ”h]”j[)�”}”(hŒ%Define a read-write device attribute.”h]”hŒ%Define a read-write device attribute.”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kñhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j/ h´KñhhËh²hubj€)�”}”(hŒ¤**Parameters** ``_name`` Attribute name. **Description** Like DEVICE_ATTR(), but **_mode** is 0644, **_show** is <_name>_show, and **_store** is <_name>_store.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj< h]”hŒ Parameters”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kõhj6 ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hj[ h]”hŒ_name”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KòhjU ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jp h´Kòhjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjU ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jp h´KòhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj6 ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj– h]”hŒ Description”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kôhj6 ubj[)�”}”(hŒfLike DEVICE_ATTR(), but **_mode** is 0644, **_show** is <_name>_show, and **_store** is <_name>_store.”h]”(hŒLike DEVICE_ATTR(), but ”…”�”}”(hj¬ h²hh³Nh´NubjŠ)�”}”(hŒ **_mode**”h]”hŒ_mode”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ ubhŒ is 0644, ”…”�”}”(hj¬ h²hh³Nh´NubjŠ)�”}”(hŒ **_show**”h]”hŒ_show”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ ubhŒ is <_name>_show, and ”…”�”}”(hj¬ h²hh³Nh´NubjŠ)�”}”(hŒ **_store**”h]”hŒ_store”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ ubhŒ is <_name>_store.”…”�”}”(hj¬ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kóhj6 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_ADMIN_RW (C macro)”Œc.DEVICE_ATTR_ADMIN_RW”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_ADMIN_RW”h]”hù)�”}”(hŒDEVICE_ATTR_ADMIN_RW”h]”j")�”}”(hŒDEVICE_ATTR_ADMIN_RW”h]”j()�”}”(hj h]”hŒDEVICE_ATTR_ADMIN_RW”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kûubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj h²hh³j( h´Kûubah}”(h]”j ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j( h´Kûhj h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj h²hh³j( h´Kûubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjA j{jA j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ ``DEVICE_ATTR_ADMIN_RW (_name)``”h]”jß)�”}”(hjG h]”hŒDEVICE_ATTR_ADMIN_RW (_name)”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´KýhhËh²hubj3)�”}”(hŒ2Define an admin-only read-write device attribute. ”h]”j[)�”}”(hŒ1Define an admin-only read-write device attribute.”h]”hŒ1Define an admin-only read-write device attribute.”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kûhj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jo h´KûhhËh²hubj€)�”}”(hŒk**Parameters** ``_name`` Attribute name. **Description** Like DEVICE_ATTR_RW(), but **_mode** is 0600.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj| h]”hŒ Parameters”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kÿhjv ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hj› h]”hŒ_name”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kühj• ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j° h´Kühj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj• ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j° h´Kühj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjv ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÖ h]”hŒ Description”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kþhjv ubj[)�”}”(hŒ-Like DEVICE_ATTR_RW(), but **_mode** is 0600.”h]”(hŒLike DEVICE_ATTR_RW(), but ”…”�”}”(hjì h²hh³Nh´NubjŠ)�”}”(hŒ **_mode**”h]”hŒ_mode”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjì ubhŒ is 0600.”…”�”}”(hjì h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Kýhjv ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_RW_NAMED (C macro)”Œc.DEVICE_ATTR_RW_NAMED”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_RW_NAMED”h]”hù)�”}”(hŒDEVICE_ATTR_RW_NAMED”h]”j")�”}”(hŒDEVICE_ATTR_RW_NAMED”h]”j()�”}”(hj' h]”hŒDEVICE_ATTR_RW_NAMED”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj- ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj) h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj% h²hh³jD h´Mubah}”(h]”j ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jD h´Mhj" h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj" h²hh³jD h´Mubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzj] j{j] j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ+``DEVICE_ATTR_RW_NAMED (_name, _attrname)``”h]”jß)�”}”(hjc h]”hŒ'DEVICE_ATTR_RW_NAMED (_name, _attrname)”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhhËh²hubj3)�”}”(hŒ\Define a read-write device attribute with a sysfs name that differs from the function name. ”h]”j[)�”}”(hŒ[Define a read-write device attribute with a sysfs name that differs from the function name.”h]”hŒ[Define a read-write device attribute with a sysfs name that differs from the function name.”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j‹ h´MhhËh²hubj€)�”}”(hŒè**Parameters** ``_name`` Attribute function preface ``_attrname`` Attribute name as it wil be exposed in the sysfs. **Description** Like DEVICE_ATTR_RW(), but allows for reusing names under separate paths in the same driver.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj˜ h]”hŒ Parameters”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj’ ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ%``_name`` Attribute function preface ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hj· h]”hŒ_name”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjµ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj± ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute function preface”h]”hŒAttribute function preface”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÌ h´MhjÍ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj± ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÌ h´Mhj® ubjÓ)�”}”(hŒ@``_attrname`` Attribute name as it wil be exposed in the sysfs. ”h]”(jÙ)�”}”(hŒ ``_attrname``”h]”jß)�”}”(hjð h]”hŒ _attrname”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjê ubjõ)�”}”(hhh]”j[)�”}”(hŒ1Attribute name as it wil be exposed in the sysfs.”h]”hŒ1Attribute name as it wil be exposed in the sysfs.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjê ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´Mhj® ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj’ ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj+ h]”hŒ Description”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M hj’ ubj[)�”}”(hŒ\Like DEVICE_ATTR_RW(), but allows for reusing names under separate paths in the same driver.”h]”hŒ\Like DEVICE_ATTR_RW(), but allows for reusing names under separate paths in the same driver.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj’ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_RO (C macro)”Œc.DEVICE_ATTR_RO”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_RO”h]”hù)�”}”(hŒDEVICE_ATTR_RO”h]”j")�”}”(hŒDEVICE_ATTR_RO”h]”j()�”}”(hjj h]”hŒDEVICE_ATTR_RO”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjp ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjl h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjh h²hh³j‡ h´Mubah}”(h]”jc ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j‡ h´Mhje h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhje h²hh³j‡ h´Mubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzj  j{j  j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ``DEVICE_ATTR_RO (_name)``”h]”jß)�”}”(hj¦ h]”hŒDEVICE_ATTR_RO (_name)”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhhËh²hubj3)�”}”(hŒ$Define a readable device attribute. ”h]”j[)�”}”(hŒ#Define a readable device attribute.”h]”hŒ#Define a readable device attribute.”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jÎ h´MhhËh²hubj€)�”}”(hŒ†**Parameters** ``_name`` Attribute name. **Description** Like DEVICE_ATTR(), but **_mode** is 0444 and **_show** is <_name>_show.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÛ h]”hŒ Parameters”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjÕ ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjú h]”hŒ_name”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjô ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´Mhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÕ ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj5 h]”hŒ Description”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjÕ ubj[)�”}”(hŒHLike DEVICE_ATTR(), but **_mode** is 0444 and **_show** is <_name>_show.”h]”(hŒLike DEVICE_ATTR(), but ”…”�”}”(hjK h²hh³Nh´NubjŠ)�”}”(hŒ **_mode**”h]”hŒ_mode”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjK ubhŒ is 0444 and ”…”�”}”(hjK h²hh³Nh´NubjŠ)�”}”(hŒ **_show**”h]”hŒ_show”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjK ubhŒ is <_name>_show.”…”�”}”(hjK h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjÕ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_ADMIN_RO (C macro)”Œc.DEVICE_ATTR_ADMIN_RO”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_ADMIN_RO”h]”hù)�”}”(hŒDEVICE_ATTR_ADMIN_RO”h]”j")�”}”(hŒDEVICE_ATTR_ADMIN_RO”h]”j()�”}”(hj˜ h]”hŒDEVICE_ATTR_ADMIN_RO”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjž ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjš h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj– h²hh³jµ h´Mubah}”(h]”j‘ ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jµ h´Mhj“ h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj“ h²hh³jµ h´Mubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjÎ j{jÎ j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ ``DEVICE_ATTR_ADMIN_RO (_name)``”h]”jß)�”}”(hjÔ h]”hŒDEVICE_ATTR_ADMIN_RO (_name)”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhhËh²hubj3)�”}”(hŒ0Define an admin-only readable device attribute. ”h]”j[)�”}”(hŒ/Define an admin-only readable device attribute.”h]”hŒ/Define an admin-only readable device attribute.”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjê ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jü h´MhhËh²hubj€)�”}”(hŒk**Parameters** ``_name`` Attribute name. **Description** Like DEVICE_ATTR_RO(), but **_mode** is 0400.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M hjubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hj(h]”hŒ_name”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj"ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j=h´Mhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j=h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjch]”hŒ Description”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjubj[)�”}”(hŒ-Like DEVICE_ATTR_RO(), but **_mode** is 0400.”h]”(hŒLike DEVICE_ATTR_RO(), but ”…”�”}”(hjyh²hh³Nh´NubjŠ)�”}”(hŒ **_mode**”h]”hŒ_mode”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjyubhŒ is 0400.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_RO_NAMED (C macro)”Œc.DEVICE_ATTR_RO_NAMED”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_RO_NAMED”h]”hù)�”}”(hŒDEVICE_ATTR_RO_NAMED”h]”j")�”}”(hŒDEVICE_ATTR_RO_NAMED”h]”j()�”}”(hj´h]”hŒDEVICE_ATTR_RO_NAMED”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjºubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¶h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M%ubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj²h²hh³jÑh´M%ubah}”(h]”j­ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÑh´M%hj¯h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¯h²hh³jÑh´M%ubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjêj{jêj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ+``DEVICE_ATTR_RO_NAMED (_name, _attrname)``”h]”jß)�”}”(hjðh]”hŒ'DEVICE_ATTR_RO_NAMED (_name, _attrname)”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M'hhËh²hubj3)�”}”(hŒ[Define a read-only device attribute with a sysfs name that differs from the function name. ”h]”j[)�”}”(hŒZDefine a read-only device attribute with a sysfs name that differs from the function name.”h]”hŒZDefine a read-only device attribute with a sysfs name that differs from the function name.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M%hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jh´M%hhËh²hubj€)�”}”(hŒè**Parameters** ``_name`` Attribute function preface ``_attrname`` Attribute name as it wil be exposed in the sysfs. **Description** Like DEVICE_ATTR_RO(), but allows for reusing names under separate paths in the same driver.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj%h]”hŒ Parameters”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M)hjubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ%``_name`` Attribute function preface ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjDh]”hŒ_name”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M'hj>ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute function preface”h]”hŒAttribute function preface”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jYh´M'hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jYh´M'hj;ubjÓ)�”}”(hŒ@``_attrname`` Attribute name as it wil be exposed in the sysfs. ”h]”(jÙ)�”}”(hŒ ``_attrname``”h]”jß)�”}”(hj}h]”hŒ _attrname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M(hjwubjõ)�”}”(hhh]”j[)�”}”(hŒ1Attribute name as it wil be exposed in the sysfs.”h]”hŒ1Attribute name as it wil be exposed in the sysfs.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j’h´M(hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j’h´M(hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¸h]”hŒ Description”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M*hjubj[)�”}”(hŒ\Like DEVICE_ATTR_RO(), but allows for reusing names under separate paths in the same driver.”h]”hŒ\Like DEVICE_ATTR_RO(), but allows for reusing names under separate paths in the same driver.”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M)hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_WO (C macro)”Œc.DEVICE_ATTR_WO”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_WO”h]”hù)�”}”(hŒDEVICE_ATTR_WO”h]”j")�”}”(hŒDEVICE_ATTR_WO”h]”j()�”}”(hj÷h]”hŒDEVICE_ATTR_WO”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjýubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjùh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M4ubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjõh²hh³jh´M4ubah}”(h]”jðah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jh´M4hjòh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjòh²hh³jh´M4ubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzj-j{j-j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ``DEVICE_ATTR_WO (_name)``”h]”jß)�”}”(hj3h]”hŒDEVICE_ATTR_WO (_name)”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M6hhËh²hubj3)�”}”(hŒ0Define an admin-only writable device attribute. ”h]”j[)�”}”(hŒ/Define an admin-only writable device attribute.”h]”hŒ/Define an admin-only writable device attribute.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M4hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j[h´M4hhËh²hubj€)�”}”(hŒˆ**Parameters** ``_name`` Attribute name. **Description** Like DEVICE_ATTR(), but **_mode** is 0200 and **_store** is <_name>_store.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M8hjbubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hj‡h]”hŒ_name”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M5hj�ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jœh´M5hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jœh´M5hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjbubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÂh]”hŒ Description”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M7hjbubj[)�”}”(hŒJLike DEVICE_ATTR(), but **_mode** is 0200 and **_store** is <_name>_store.”h]”(hŒLike DEVICE_ATTR(), but ”…”�”}”(hjØh²hh³Nh´NubjŠ)�”}”(hŒ **_mode**”h]”hŒ_mode”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjØubhŒ is 0200 and ”…”�”}”(hjØh²hh³Nh´NubjŠ)�”}”(hŒ **_store**”h]”hŒ_store”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjØubhŒ is <_name>_store.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M6hjbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ATTR_WO_NAMED (C macro)”Œc.DEVICE_ATTR_WO_NAMED”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ATTR_WO_NAMED”h]”hù)�”}”(hŒDEVICE_ATTR_WO_NAMED”h]”j")�”}”(hŒDEVICE_ATTR_WO_NAMED”h]”j()�”}”(hj%h]”hŒDEVICE_ATTR_WO_NAMED”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj+ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj'h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M=ubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj#h²hh³jBh´M=ubah}”(h]”jah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jBh´M=hj h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj h²hh³jBh´M=ubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzj[j{j[j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ+``DEVICE_ATTR_WO_NAMED (_name, _attrname)``”h]”jß)�”}”(hjah]”hŒ'DEVICE_ATTR_WO_NAMED (_name, _attrname)”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M?hhËh²hubj3)�”}”(hŒ[Define a read-only device attribute with a sysfs name that differs from the function name. ”h]”j[)�”}”(hŒZDefine a read-only device attribute with a sysfs name that differs from the function name.”h]”hŒZDefine a read-only device attribute with a sysfs name that differs from the function name.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M=hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j‰h´M=hhËh²hubj€)�”}”(hŒè**Parameters** ``_name`` Attribute function preface ``_attrname`` Attribute name as it wil be exposed in the sysfs. **Description** Like DEVICE_ATTR_WO(), but allows for reusing names under separate paths in the same driver.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj–h]”hŒ Parameters”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MAhj�ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ%``_name`` Attribute function preface ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjµh]”hŒ_name”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M?hj¯ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute function preface”h]”hŒAttribute function preface”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÊh´M?hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÊh´M?hj¬ubjÓ)�”}”(hŒ@``_attrname`` Attribute name as it wil be exposed in the sysfs. ”h]”(jÙ)�”}”(hŒ ``_attrname``”h]”jß)�”}”(hjîh]”hŒ _attrname”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M@hjèubjõ)�”}”(hhh]”j[)�”}”(hŒ1Attribute name as it wil be exposed in the sysfs.”h]”hŒ1Attribute name as it wil be exposed in the sysfs.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´M@hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´M@hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj)h]”hŒ Description”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MBhj�ubj[)�”}”(hŒ\Like DEVICE_ATTR_WO(), but allows for reusing names under separate paths in the same driver.”h]”hŒ\Like DEVICE_ATTR_WO(), but allows for reusing names under separate paths in the same driver.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MAhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_ULONG_ATTR (C macro)”Œc.DEVICE_ULONG_ATTR”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_ULONG_ATTR”h]”hù)�”}”(hŒDEVICE_ULONG_ATTR”h]”j")�”}”(hŒDEVICE_ULONG_ATTR”h]”j()�”}”(hjhh]”hŒDEVICE_ULONG_ATTR”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjnubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjjh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MLubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjfh²hh³j…h´MLubah}”(h]”jaah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j…h´MLhjch²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjch²hh³j…h´MLubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjžj{jžj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ*``DEVICE_ULONG_ATTR (_name, _mode, _var)``”h]”jß)�”}”(hj¤h]”hŒ&DEVICE_ULONG_ATTR (_name, _mode, _var)”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MNhhËh²hubj3)�”}”(hŒ6Define a device attribute backed by an unsigned long. ”h]”j[)�”}”(hŒ5Define a device attribute backed by an unsigned long.”h]”hŒ5Define a device attribute backed by an unsigned long.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MLhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jÌh´MLhhËh²hubj€)�”}”(hX**Parameters** ``_name`` Attribute name. ``_mode`` File mode. ``_var`` Identifier of unsigned long. **Description** Like DEVICE_ATTR(), but **_show** and **_store** are automatically provided such that reads and writes to the attribute from userspace affect **_var**.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÙh]”hŒ Parameters”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MPhjÓubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjøh]”hŒ_name”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MMhjòubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´MMhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´MMhjïubjÓ)�”}”(hŒ``_mode`` File mode. ”h]”(jÙ)�”}”(hŒ ``_mode``”h]”jß)�”}”(hj1h]”hŒ_mode”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MNhj+ubjõ)�”}”(hhh]”j[)�”}”(hŒ File mode.”h]”hŒ File mode.”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jFh´MNhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jFh´MNhjïubjÓ)�”}”(hŒ&``_var`` Identifier of unsigned long. ”h]”(jÙ)�”}”(hŒ``_var``”h]”jß)�”}”(hjjh]”hŒ_var”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MOhjdubjõ)�”}”(hhh]”j[)�”}”(hŒIdentifier of unsigned long.”h]”hŒIdentifier of unsigned long.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´MOhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´MOhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÓubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¥h]”hŒ Description”…”�”}”(hj§h²hh³•Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MQhjÓubj[)�”}”(hŒ—Like DEVICE_ATTR(), but **_show** and **_store** are automatically provided such that reads and writes to the attribute from userspace affect **_var**.”h]”(hŒLike DEVICE_ATTR(), but ”…”�”}”(hj»h²hh³Nh´NubjŠ)�”}”(hŒ **_show**”h]”hŒ_show”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj»ubhŒ and ”…”�”}”(hj»h²hh³Nh´NubjŠ)�”}”(hŒ **_store**”h]”hŒ_store”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj»ubhŒ^ are automatically provided such that reads and writes to the attribute from userspace affect ”…”�”}”(hj»h²hh³Nh´NubjŠ)�”}”(hŒ**_var**”h]”hŒ_var”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj»ubhŒ.”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MPhjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_INT_ATTR (C macro)”Œc.DEVICE_INT_ATTR”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_INT_ATTR”h]”hù)�”}”(hŒDEVICE_INT_ATTR”h]”j")�”}”(hŒDEVICE_INT_ATTR”h]”j()�”}”(hjh]”hŒDEVICE_INT_ATTR”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MYubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjh²hh³j7h´MYubah}”(h]”jah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j7h´MYhjh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjh²hh³j7h´MYubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjPj{jPj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ(``DEVICE_INT_ATTR (_name, _mode, _var)``”h]”jß)�”}”(hjVh]”hŒ$DEVICE_INT_ATTR (_name, _mode, _var)”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M[hhËh²hubj3)�”}”(hŒ,Define a device attribute backed by an int. ”h]”j[)�”}”(hŒ+Define a device attribute backed by an int.”h]”hŒ+Define a device attribute backed by an int.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MYhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j~h´MYhhËh²hubj€)�”}”(hŒ¦**Parameters** ``_name`` Attribute name. ``_mode`` File mode. ``_var`` Identifier of int. **Description** Like DEVICE_ULONG_ATTR(), but **_var** is an int.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‹h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M]hj…ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjªh]”hŒ_name”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MZhj¤ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¿h´MZhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¿h´MZhj¡ubjÓ)�”}”(hŒ``_mode`` File mode. ”h]”(jÙ)�”}”(hŒ ``_mode``”h]”jß)�”}”(hjãh]”hŒ_mode”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M[hjÝubjõ)�”}”(hhh]”j[)�”}”(hŒ File mode.”h]”hŒ File mode.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jøh´M[hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jøh´M[hj¡ubjÓ)�”}”(hŒ``_var`` Identifier of int. ”h]”(jÙ)�”}”(hŒ``_var``”h]”jß)�”}”(hjh]”hŒ_var”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M\hjubjõ)�”}”(hhh]”j[)�”}”(hŒIdentifier of int.”h]”hŒIdentifier of int.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j1h´M\hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j1h´M\hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj…ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjWh]”hŒ Description”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M^hj…ubj[)�”}”(hŒ1Like DEVICE_ULONG_ATTR(), but **_var** is an int.”h]”(hŒLike DEVICE_ULONG_ATTR(), but ”…”�”}”(hjmh²hh³Nh´NubjŠ)�”}”(hŒ**_var**”h]”hŒ_var”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjmubhŒ is an int.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M]hj…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_BOOL_ATTR (C macro)”Œc.DEVICE_BOOL_ATTR”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_BOOL_ATTR”h]”hù)�”}”(hŒDEVICE_BOOL_ATTR”h]”j")�”}”(hŒDEVICE_BOOL_ATTR”h]”j()�”}”(hj¨h]”hŒDEVICE_BOOL_ATTR”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj®ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjªh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Meubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¦h²hh³jÅh´Meubah}”(h]”j¡ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÅh´Mehj£h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj£h²hh³jÅh´Meubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjÞj{jÞj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ)``DEVICE_BOOL_ATTR (_name, _mode, _var)``”h]”jß)�”}”(hjäh]”hŒ%DEVICE_BOOL_ATTR (_name, _mode, _var)”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MghhËh²hubj3)�”}”(hŒ,Define a device attribute backed by a bool. ”h]”j[)�”}”(hŒ+Define a device attribute backed by a bool.”h]”hŒ+Define a device attribute backed by a bool.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mehjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j h´MehhËh²hubj€)�”}”(hŒ§**Parameters** ``_name`` Attribute name. ``_mode`` File mode. ``_var`` Identifier of bool. **Description** Like DEVICE_ULONG_ATTR(), but **_var** is a bool.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MihjubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hj8h]”hŒ_name”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mfhj2ubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jMh´MfhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jMh´Mfhj/ubjÓ)�”}”(hŒ``_mode`` File mode. ”h]”(jÙ)�”}”(hŒ ``_mode``”h]”jß)�”}”(hjqh]”hŒ_mode”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mghjkubjõ)�”}”(hhh]”j[)�”}”(hŒ File mode.”h]”hŒ File mode.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j†h´Mghj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j†h´Mghj/ubjÓ)�”}”(hŒ``_var`` Identifier of bool. ”h]”(jÙ)�”}”(hŒ``_var``”h]”jß)�”}”(hjªh]”hŒ_var”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhhj¤ubjõ)�”}”(hhh]”j[)�”}”(hŒIdentifier of bool.”h]”hŒIdentifier of bool.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¿h´MhhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¿h´Mhhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjåh]”hŒ Description”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mjhjubj[)�”}”(hŒ1Like DEVICE_ULONG_ATTR(), but **_var** is a bool.”h]”(hŒLike DEVICE_ULONG_ATTR(), but ”…”�”}”(hjûh²hh³Nh´NubjŠ)�”}”(hŒ**_var**”h]”hŒ_var”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjûubhŒ is a bool.”…”�”}”(hjûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mihjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDEVICE_STRING_ATTR_RO (C macro)”Œc.DEVICE_STRING_ATTR_RO”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDEVICE_STRING_ATTR_RO”h]”hù)�”}”(hŒDEVICE_STRING_ATTR_RO”h]”j")�”}”(hŒDEVICE_STRING_ATTR_RO”h]”j()�”}”(hj6h]”hŒDEVICE_STRING_ATTR_RO”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj<ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj8h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mqubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj4h²hh³jSh´Mqubah}”(h]”j/ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jSh´Mqhj1h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj1h²hh³jSh´Mqubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjlj{jlj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ.``DEVICE_STRING_ATTR_RO (_name, _mode, _var)``”h]”jß)�”}”(hjrh]”hŒ*DEVICE_STRING_ATTR_RO (_name, _mode, _var)”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MshhËh²hubj3)�”}”(hŒ2Define a device attribute backed by a r/o string. ”h]”j[)�”}”(hŒ1Define a device attribute backed by a r/o string.”h]”hŒ1Define a device attribute backed by a r/o string.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mqhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jšh´MqhhËh²hubj€)�”}”(hX**Parameters** ``_name`` Attribute name. ``_mode`` File mode. ``_var`` Identifier of string. **Description** Like DEVICE_ULONG_ATTR(), but **_var** is a string. Because the length of the string allocation is unknown, the attribute must be read-only.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj§h]”hŒ Parameters”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Muhj¡ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``_name`` Attribute name. ”h]”(jÙ)�”}”(hŒ ``_name``”h]”jß)�”}”(hjÆh]”hŒ_name”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MrhjÀubjõ)�”}”(hhh]”j[)�”}”(hŒAttribute name.”h]”hŒAttribute name.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÛh´MrhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛh´Mrhj½ubjÓ)�”}”(hŒ``_mode`` File mode. ”h]”(jÙ)�”}”(hŒ ``_mode``”h]”jß)�”}”(hjÿh]”hŒ_mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mshjùubjõ)�”}”(hhh]”j[)�”}”(hŒ File mode.”h]”hŒ File mode.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´Mshjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´Mshj½ubjÓ)�”}”(hŒ``_var`` Identifier of string. ”h]”(jÙ)�”}”(hŒ``_var``”h]”jß)�”}”(hj8h]”hŒ_var”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mthj2ubjõ)�”}”(hhh]”j[)�”}”(hŒIdentifier of string.”h]”hŒIdentifier of string.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jMh´MthjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jMh´Mthj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¡ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjsh]”hŒ Description”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mvhj¡ubj[)�”}”(hŒŒLike DEVICE_ULONG_ATTR(), but **_var** is a string. Because the length of the string allocation is unknown, the attribute must be read-only.”h]”(hŒLike DEVICE_ULONG_ATTR(), but ”…”�”}”(hj‰h²hh³Nh´NubjŠ)�”}”(hŒ**_var**”h]”hŒ_var”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‰ubhŒf is a string. Because the length of the string allocation is unknown, the attribute must be read-only.”…”�”}”(hj‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Muhj¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdl_dev_state (C enum)”Œc.dl_dev_state”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ dl_dev_state”h]”hù)�”}”(hŒenum dl_dev_state”h]”(hÿ)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÆh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M{ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆh²hh³jØh´M{ubj")�”}”(hŒ dl_dev_state”h]”j()�”}”(hjÄh]”hŒ dl_dev_state”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjçubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÆh²hh³jØh´M{ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÂh²hh³jØh´M{ubah}”(h]”j½ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jØh´M{hj¿h²hubjV)�”}”(hhh]”j[)�”}”(hŒ,Device driver presence tracking information.”h]”hŒ,Device driver presence tracking information.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÁhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¿h²hh³jØh´M{ubeh}”(h]”h ]”(jtŒenum”eh"]”h$]”h&]”jyjtjzj%j{j%j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX**Constants** ``DL_DEV_NO_DRIVER`` There is no driver attached to the device. ``DL_DEV_PROBING`` A driver is probing. ``DL_DEV_DRIVER_BOUND`` The driver has been bound to the device. ``DL_DEV_UNBINDING`` The driver is unbinding from the device.”h]”(j[)�”}”(hŒ **Constants**”h]”jŠ)�”}”(hj/h]”hŒ Constants”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÅhj)ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ@``DL_DEV_NO_DRIVER`` There is no driver attached to the device. ”h]”(jÙ)�”}”(hŒ``DL_DEV_NO_DRIVER``”h]”jß)�”}”(hjNh]”hŒDL_DEV_NO_DRIVER”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÈhjHubjõ)�”}”(hhh]”j[)�”}”(hŒ*There is no driver attached to the device.”h]”hŒ*There is no driver attached to the device.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jch´MÈhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jch´MÈhjEubjÓ)�”}”(hŒ(``DL_DEV_PROBING`` A driver is probing. ”h]”(jÙ)�”}”(hŒ``DL_DEV_PROBING``”h]”jß)�”}”(hj‡h]”hŒDL_DEV_PROBING”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MËhj�ubjõ)�”}”(hhh]”j[)�”}”(hŒA driver is probing.”h]”hŒA driver is probing.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jœh´MËhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jœh´MËhjEubjÓ)�”}”(hŒA``DL_DEV_DRIVER_BOUND`` The driver has been bound to the device. ”h]”(jÙ)�”}”(hŒ``DL_DEV_DRIVER_BOUND``”h]”jß)�”}”(hjÀh]”hŒDL_DEV_DRIVER_BOUND”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÎhjºubjõ)�”}”(hhh]”j[)�”}”(hŒ(The driver has been bound to the device.”h]”hŒ(The driver has been bound to the device.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÕh´MÎhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÕh´MÎhjEubjÓ)�”}”(hŒ=``DL_DEV_UNBINDING`` The driver is unbinding from the device.”h]”(jÙ)�”}”(hŒ``DL_DEV_UNBINDING``”h]”jß)�”}”(hjùh]”hŒDL_DEV_UNBINDING”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÐhjóubjõ)�”}”(hhh]”j[)�”}”(hŒ(The driver is unbinding from the device.”h]”hŒ(The driver is unbinding from the device.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÑhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´MÐhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_removable (C enum)”Œc.device_removable”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevice_removable”h]”hù)�”}”(hŒenum device_removable”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjOh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÖubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOh²hh³j`h´MÖubj")�”}”(hŒdevice_removable”h]”j()�”}”(hjMh]”hŒdevice_removable”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjoubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjOh²hh³j`h´MÖubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjKh²hh³j`h´MÖubah}”(h]”jFah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j`h´MÖhjHh²hubjV)�”}”(hhh]”j[)�”}”(hŒWhether the device is removable. The criteria for a device to be classified as removable is determined by its subsystem or bus.”h]”hŒWhether the device is removable. The criteria for a device to be classified as removable is determined by its subsystem or bus.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÏhj’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjHh²hh³j`h´MÖubeh}”(h]”h ]”(jtŒenum”eh"]”h$]”h&]”jyjtjzj­j{j­j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX**Constants** ``DEVICE_REMOVABLE_NOT_SUPPORTED`` This attribute is not supported for this device (default). ``DEVICE_REMOVABLE_UNKNOWN`` Device location is Unknown. ``DEVICE_FIXED`` Device is not removable by the user. ``DEVICE_REMOVABLE`` Device is removable by the user.”h]”(j[)�”}”(hŒ **Constants**”h]”jŠ)�”}”(hj·h]”hŒ Constants”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÓhj±ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ^``DEVICE_REMOVABLE_NOT_SUPPORTED`` This attribute is not supported for this device (default). ”h]”(jÙ)�”}”(hŒ"``DEVICE_REMOVABLE_NOT_SUPPORTED``”h]”jß)�”}”(hjÖh]”hŒDEVICE_REMOVABLE_NOT_SUPPORTED”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M×hjÐubjõ)�”}”(hhh]”j[)�”}”(hŒ:This attribute is not supported for this device (default).”h]”hŒ:This attribute is not supported for this device (default).”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÖhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jëh´M×hjÍubjÓ)�”}”(hŒ9``DEVICE_REMOVABLE_UNKNOWN`` Device location is Unknown. ”h]”(jÙ)�”}”(hŒ``DEVICE_REMOVABLE_UNKNOWN``”h]”jß)�”}”(hjh]”hŒDEVICE_REMOVABLE_UNKNOWN”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÚhj ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice location is Unknown.”h]”hŒDevice location is Unknown.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j%h´MÚhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j%h´MÚhjÍubjÓ)�”}”(hŒ6``DEVICE_FIXED`` Device is not removable by the user. ”h]”(jÙ)�”}”(hŒ``DEVICE_FIXED``”h]”jß)�”}”(hjIh]”hŒ DEVICE_FIXED”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÝhjCubjõ)�”}”(hhh]”j[)�”}”(hŒ$Device is not removable by the user.”h]”hŒ$Device is not removable by the user.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j^h´MÝhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j^h´MÝhjÍubjÓ)�”}”(hŒ5``DEVICE_REMOVABLE`` Device is removable by the user.”h]”(jÙ)�”}”(hŒ``DEVICE_REMOVABLE``”h]”jß)�”}”(hj‚h]”hŒDEVICE_REMOVABLE”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mßhj|ubjõ)�”}”(hhh]”j[)�”}”(hŒ Device is removable by the user.”h]”hŒ Device is removable by the user.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Màhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j—h´MßhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_links_info (C struct)”Œc.dev_links_info”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdev_links_info”h]”hù)�”}”(hŒstruct dev_links_info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjØh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Måubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØh²hh³jéh´Måubj")�”}”(hŒdev_links_info”h]”j()�”}”(hjÖh]”hŒdev_links_info”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjøubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjØh²hh³jéh´Måubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÔh²hh³jéh´Måubah}”(h]”jÏah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jéh´MåhjÑh²hubjV)�”}”(hhh]”j[)�”}”(hŒ$Device data related to device links.”h]”hŒ$Device data related to device links.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mßhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÑh²hh³jéh´Måubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzj6j{j6j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX¥**Definition**:: struct dev_links_info { struct list_head suppliers; struct list_head consumers; struct list_head defer_sync; enum dl_dev_state status; }; **Members** ``suppliers`` List of links to supplier devices. ``consumers`` List of links to consumer devices. ``defer_sync`` Hook to global list of devices that have deferred sync_state. ``status`` Driver status information.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj>ubhŒ:”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mãhj:ubj¥)�”}”(hŒ™struct dev_links_info { struct list_head suppliers; struct list_head consumers; struct list_head defer_sync; enum dl_dev_state status; };”h]”hŒ™struct dev_links_info { struct list_head suppliers; struct list_head consumers; struct list_head defer_sync; enum dl_dev_state status; };”…”�”}”hj[sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Måhj:ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hjlh]”hŒMembers”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mìhj:ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ1``suppliers`` List of links to supplier devices. ”h]”(jÙ)�”}”(hŒ ``suppliers``”h]”jß)�”}”(hj‹h]”hŒ suppliers”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Máhj…ubjõ)�”}”(hhh]”j[)�”}”(hŒ"List of links to supplier devices.”h]”hŒ"List of links to supplier devices.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´Máhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´Máhj‚ubjÓ)�”}”(hŒ1``consumers`` List of links to consumer devices. ”h]”(jÙ)�”}”(hŒ ``consumers``”h]”jß)�”}”(hjÄh]”hŒ consumers”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mâhj¾ubjõ)�”}”(hhh]”j[)�”}”(hŒ"List of links to consumer devices.”h]”hŒ"List of links to consumer devices.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÙh´MâhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÙh´Mâhj‚ubjÓ)�”}”(hŒM``defer_sync`` Hook to global list of devices that have deferred sync_state. ”h]”(jÙ)�”}”(hŒ``defer_sync``”h]”jß)�”}”(hjýh]”hŒ defer_sync”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mãhj÷ubjõ)�”}”(hhh]”j[)�”}”(hŒ=Hook to global list of devices that have deferred sync_state.”h]”hŒ=Hook to global list of devices that have deferred sync_state.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´Mãhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´Mãhj‚ubjÓ)�”}”(hŒ%``status`` Driver status information.”h]”(jÙ)�”}”(hŒ ``status``”h]”jß)�”}”(hj6h]”hŒstatus”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mãhj0ubjõ)�”}”(hhh]”j[)�”}”(hŒDriver status information.”h]”hŒDriver status information.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MähjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jKh´Mãhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_msi_info (C struct)”Œc.dev_msi_info”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ dev_msi_info”h]”hù)�”}”(hŒstruct dev_msi_info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjŒh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mêubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒh²hh³j�h´Mêubj")�”}”(hŒ dev_msi_info”h]”j()�”}”(hjŠh]”hŒ dev_msi_info”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¬ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjŒh²hh³j�h´Mêubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjˆh²hh³j�h´Mêubah}”(h]”jƒah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j�h´Mêhj…h²hubjV)�”}”(hhh]”j[)�”}”(hŒDevice data related to MSI”h]”hŒDevice data related to MSI”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MíhjÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj…h²hh³j�h´Mêubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjêj{jêj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX**Definition**:: struct dev_msi_info { #ifdef CONFIG_GENERIC_MSI_IRQ; struct irq_domain *domain; struct msi_device_data *data; #endif; }; **Members** ``domain`` The MSI interrupt domain associated to the device ``data`` Pointer to MSI device data”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjòubhŒ:”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mñhjîubj¥)�”}”(hŒ‡struct dev_msi_info { #ifdef CONFIG_GENERIC_MSI_IRQ; struct irq_domain *domain; struct msi_device_data *data; #endif; };”h]”hŒ‡struct dev_msi_info { #ifdef CONFIG_GENERIC_MSI_IRQ; struct irq_domain *domain; struct msi_device_data *data; #endif; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Móhjîubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj h]”hŒMembers”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MúhjîubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ=``domain`` The MSI interrupt domain associated to the device ”h]”(jÙ)�”}”(hŒ ``domain``”h]”jß)�”}”(hj?h]”hŒdomain”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mïhj9ubjõ)�”}”(hhh]”j[)�”}”(hŒ1The MSI interrupt domain associated to the device”h]”hŒ1The MSI interrupt domain associated to the device”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jTh´MïhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jTh´Mïhj6ubjÓ)�”}”(hŒ#``data`` Pointer to MSI device data”h]”(jÙ)�”}”(hŒ``data``”h]”jß)�”}”(hjxh]”hŒdata”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mïhjrubjõ)�”}”(hhh]”j[)�”}”(hŒPointer to MSI device data”h]”hŒPointer to MSI device data”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MðhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j�h´Mïhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'device_physical_location_panel (C enum)”Œ c.device_physical_location_panel”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevice_physical_location_panel”h]”hù)�”}”(hŒ#enum device_physical_location_panel”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÎh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Möubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎh²hh³jßh´Möubj")�”}”(hŒdevice_physical_location_panel”h]”j()�”}”(hjÌh]”hŒdevice_physical_location_panel”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjîubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÎh²hh³jßh´Möubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÊh²hh³jßh´Möubah}”(h]”jÅah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jßh´MöhjÇh²hubjV)�”}”(hhh]”j[)�”}”(hŒ]Describes which panel surface of the system's housing the device connection point resides on.”h]”hŒ_Describes which panel surface of the system’s housing the device connection point resides on.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mùhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÇh²hh³jßh´Möubeh}”(h]”h ]”(jtŒenum”eh"]”h$]”h&]”jyjtjzj,j{j,j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX **Constants** ``DEVICE_PANEL_TOP`` Device connection point is on the top panel. ``DEVICE_PANEL_BOTTOM`` Device connection point is on the bottom panel. ``DEVICE_PANEL_LEFT`` Device connection point is on the left panel. ``DEVICE_PANEL_RIGHT`` Device connection point is on the right panel. ``DEVICE_PANEL_FRONT`` Device connection point is on the front panel. ``DEVICE_PANEL_BACK`` Device connection point is on the back panel. ``DEVICE_PANEL_UNKNOWN`` The panel with device connection point is unknown.”h]”(j[)�”}”(hŒ **Constants**”h]”jŠ)�”}”(hj6h]”hŒ Constants”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mýhj0ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒB``DEVICE_PANEL_TOP`` Device connection point is on the top panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_TOP``”h]”jß)�”}”(hjUh]”hŒDEVICE_PANEL_TOP”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjOubjõ)�”}”(hhh]”j[)�”}”(hŒ,Device connection point is on the top panel.”h]”hŒ,Device connection point is on the top panel.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jjh´Mhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jjh´MhjLubjÓ)�”}”(hŒH``DEVICE_PANEL_BOTTOM`` Device connection point is on the bottom panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_BOTTOM``”h]”jß)�”}”(hjŽh]”hŒDEVICE_PANEL_BOTTOM”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjˆubjõ)�”}”(hhh]”j[)�”}”(hŒ/Device connection point is on the bottom panel.”h]”hŒ/Device connection point is on the bottom panel.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j£h´Mhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j£h´MhjLubjÓ)�”}”(hŒD``DEVICE_PANEL_LEFT`` Device connection point is on the left panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_LEFT``”h]”jß)�”}”(hjÇh]”hŒDEVICE_PANEL_LEFT”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjÁubjõ)�”}”(hhh]”j[)�”}”(hŒ-Device connection point is on the left panel.”h]”hŒ-Device connection point is on the left panel.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÜh´MhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÜh´MhjLubjÓ)�”}”(hŒF``DEVICE_PANEL_RIGHT`` Device connection point is on the right panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_RIGHT``”h]”jß)�”}”(hj h]”hŒDEVICE_PANEL_RIGHT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M hjúubjõ)�”}”(hhh]”j[)�”}”(hŒ.Device connection point is on the right panel.”h]”hŒ.Device connection point is on the right panel.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´M hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´M hjLubjÓ)�”}”(hŒF``DEVICE_PANEL_FRONT`` Device connection point is on the front panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_FRONT``”h]”jß)�”}”(hj9 h]”hŒDEVICE_PANEL_FRONT”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M hj3 ubjõ)�”}”(hhh]”j[)�”}”(hŒ.Device connection point is on the front panel.”h]”hŒ.Device connection point is on the front panel.”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jN h´M hjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj3 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jN h´M hjLubjÓ)�”}”(hŒD``DEVICE_PANEL_BACK`` Device connection point is on the back panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_BACK``”h]”jß)�”}”(hjr h]”hŒDEVICE_PANEL_BACK”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjl ubjõ)�”}”(hhh]”j[)�”}”(hŒ-Device connection point is on the back panel.”h]”hŒ-Device connection point is on the back panel.”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‡ h´Mhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjl ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‡ h´MhjLubjÓ)�”}”(hŒK``DEVICE_PANEL_UNKNOWN`` The panel with device connection point is unknown.”h]”(jÙ)�”}”(hŒ``DEVICE_PANEL_UNKNOWN``”h]”jß)�”}”(hj« h]”hŒDEVICE_PANEL_UNKNOWN”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj¥ ubjõ)�”}”(hhh]”j[)�”}”(hŒ2The panel with device connection point is unknown.”h]”hŒ2The panel with device connection point is unknown.”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¥ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÀ h´MhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ3device_physical_location_vertical_position (C enum)”Œ,c.device_physical_location_vertical_position”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*device_physical_location_vertical_position”h]”hù)�”}”(hŒ/enum device_physical_location_vertical_position”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj!h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!h²hh³j!h´Mubj")�”}”(hŒ*device_physical_location_vertical_position”h]”j()�”}”(hjÿ h]”hŒ*device_physical_location_vertical_position”…”�”}”(hj%!h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj!!ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj!h²hh³j!h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjý h²hh³j!h´Mubah}”(h]”jø ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j!h´Mhjú h²hubjV)�”}”(hhh]”j[)�”}”(hŒPDescribes vertical position of the device connection point on the panel surface.”h]”hŒPDescribes vertical position of the device connection point on the panel surface.”…”�”}”(hjG!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MhjD!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjú h²hh³j!h´Mubeh}”(h]”h ]”(jtŒenum”eh"]”h$]”h&]”jyjtjzj_!j{j_!j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒÿ**Constants** ``DEVICE_VERT_POS_UPPER`` Device connection point is at upper part of panel. ``DEVICE_VERT_POS_CENTER`` Device connection point is at center part of panel. ``DEVICE_VERT_POS_LOWER`` Device connection point is at lower part of panel.”h]”(j[)�”}”(hŒ **Constants**”h]”jŠ)�”}”(hji!h]”hŒ Constants”…”�”}”(hjk!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjg!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjc!ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒM``DEVICE_VERT_POS_UPPER`` Device connection point is at upper part of panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_VERT_POS_UPPER``”h]”jß)�”}”(hjˆ!h]”hŒDEVICE_VERT_POS_UPPER”…”�”}”(hjŠ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj†!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj‚!ubjõ)�”}”(hhh]”j[)�”}”(hŒ2Device connection point is at upper part of panel.”h]”hŒ2Device connection point is at upper part of panel.”…”�”}”(hj¡!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j�!h´Mhjž!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‚!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j�!h´Mhj!ubjÓ)�”}”(hŒO``DEVICE_VERT_POS_CENTER`` Device connection point is at center part of panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_VERT_POS_CENTER``”h]”jß)�”}”(hjÁ!h]”hŒDEVICE_VERT_POS_CENTER”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj»!ubjõ)�”}”(hhh]”j[)�”}”(hŒ3Device connection point is at center part of panel.”h]”hŒ3Device connection point is at center part of panel.”…”�”}”(hjÚ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÖ!h´Mhj×!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj»!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÖ!h´Mhj!ubjÓ)�”}”(hŒL``DEVICE_VERT_POS_LOWER`` Device connection point is at lower part of panel.”h]”(jÙ)�”}”(hŒ``DEVICE_VERT_POS_LOWER``”h]”jß)�”}”(hjú!h]”hŒDEVICE_VERT_POS_LOWER”…”�”}”(hjü!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjø!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhjô!ubjõ)�”}”(hhh]”j[)�”}”(hŒ2Device connection point is at lower part of panel.”h]”hŒ2Device connection point is at lower part of panel.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjô!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j"h´Mhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjc!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ5device_physical_location_horizontal_position (C enum)”Œ.c.device_physical_location_horizontal_position”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,device_physical_location_horizontal_position”h]”hù)�”}”(hŒ1enum device_physical_location_horizontal_position”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hjT"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjP"h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP"h²hh³ja"h´M ubj")�”}”(hŒ,device_physical_location_horizontal_position”h]”j()�”}”(hjN"h]”hŒ,device_physical_location_horizontal_position”…”�”}”(hjt"h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjp"ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjP"h²hh³ja"h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjL"h²hh³ja"h´M ubah}”(h]”jG"ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³ja"h´M hjI"h²hubjV)�”}”(hhh]”j[)�”}”(hŒRDescribes horizontal position of the device connection point on the panel surface.”h]”hŒRDescribes horizontal position of the device connection point on the panel surface.”…”�”}”(hj–"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj“"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjI"h²hh³ja"h´M ubeh}”(h]”h ]”(jtŒenum”eh"]”h$]”h&]”jyjtjzj®"j{j®"j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒý**Constants** ``DEVICE_HORI_POS_LEFT`` Device connection point is at left part of panel. ``DEVICE_HORI_POS_CENTER`` Device connection point is at center part of panel. ``DEVICE_HORI_POS_RIGHT`` Device connection point is at right part of panel.”h]”(j[)�”}”(hŒ **Constants**”h]”jŠ)�”}”(hj¸"h]”hŒ Constants”…”�”}”(hjº"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¶"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mhj²"ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒK``DEVICE_HORI_POS_LEFT`` Device connection point is at left part of panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_HORI_POS_LEFT``”h]”jß)�”}”(hj×"h]”hŒDEVICE_HORI_POS_LEFT”…”�”}”(hjÙ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M"hjÑ"ubjõ)�”}”(hhh]”j[)�”}”(hŒ1Device connection point is at left part of panel.”h]”hŒ1Device connection point is at left part of panel.”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jì"h´M"hjí"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÑ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jì"h´M"hjÎ"ubjÓ)�”}”(hŒO``DEVICE_HORI_POS_CENTER`` Device connection point is at center part of panel. ”h]”(jÙ)�”}”(hŒ``DEVICE_HORI_POS_CENTER``”h]”jß)�”}”(hj#h]”hŒDEVICE_HORI_POS_CENTER”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M%hj #ubjõ)�”}”(hhh]”j[)�”}”(hŒ3Device connection point is at center part of panel.”h]”hŒ3Device connection point is at center part of panel.”…”�”}”(hj)#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j%#h´M%hj&#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j%#h´M%hjÎ"ubjÓ)�”}”(hŒL``DEVICE_HORI_POS_RIGHT`` Device connection point is at right part of panel.”h]”(jÙ)�”}”(hŒ``DEVICE_HORI_POS_RIGHT``”h]”jß)�”}”(hjI#h]”hŒDEVICE_HORI_POS_RIGHT”…”�”}”(hjK#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjG#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M'hjC#ubjõ)�”}”(hhh]”j[)�”}”(hŒ2Device connection point is at right part of panel.”h]”hŒ2Device connection point is at right part of panel.”…”�”}”(hjb#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M(hj_#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjC#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j^#h´M'hjÎ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#device_physical_location (C struct)”Œc.device_physical_location”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevice_physical_location”h]”hù)�”}”(hŒstruct device_physical_location”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj£#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjŸ#h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M-ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸ#h²hh³j°#h´M-ubj")�”}”(hŒdevice_physical_location”h]”j()�”}”(hj�#h]”hŒdevice_physical_location”…”�”}”(hjÃ#h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¿#ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjŸ#h²hh³j°#h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj›#h²hh³j°#h´M-ubah}”(h]”j–#ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j°#h´M-hj˜#h²hubjV)�”}”(hhh]”j[)�”}”(hŒHDevice data related to physical location of the device connection point.”h]”hŒHDevice data related to physical location of the device connection point.”…”�”}”(hjå#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M(hjâ#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj˜#h²hh³j°#h´M-ubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjý#j{jý#j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX **Definition**:: struct device_physical_location { enum device_physical_location_panel panel; enum device_physical_location_vertical_position vertical_position; enum device_physical_location_horizontal_position horizontal_position; bool dock; bool lid; }; **Members** ``panel`` Panel surface of the system's housing that the device connection point resides on. ``vertical_position`` Vertical position of the device connection point within the panel. ``horizontal_position`` Horizontal position of the device connection point within the panel. ``dock`` Set if the device connection point resides in a docking station or port replicator. ``lid`` Set if this device connection point resides on the lid of laptop system.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj$ubhŒ:”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M,hj$ubj¥)�”}”(hXstruct device_physical_location { enum device_physical_location_panel panel; enum device_physical_location_vertical_position vertical_position; enum device_physical_location_horizontal_position horizontal_position; bool dock; bool lid; };”h]”hXstruct device_physical_location { enum device_physical_location_panel panel; enum device_physical_location_vertical_position vertical_position; enum device_physical_location_horizontal_position horizontal_position; bool dock; bool lid; };”…”�”}”hj"$sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M.hj$ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj3$h]”hŒMembers”…”�”}”(hj5$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj1$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M6hj$ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ]``panel`` Panel surface of the system's housing that the device connection point resides on. ”h]”(jÙ)�”}”(hŒ ``panel``”h]”jß)�”}”(hjR$h]”hŒpanel”…”�”}”(hjT$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjP$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M,hjL$ubjõ)�”}”(hhh]”j[)�”}”(hŒRPanel surface of the system's housing that the device connection point resides on.”h]”hŒTPanel surface of the system’s housing that the device connection point resides on.”…”�”}”(hjk$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M+hjh$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjL$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jg$h´M,hjI$ubjÓ)�”}”(hŒY``vertical_position`` Vertical position of the device connection point within the panel. ”h]”(jÙ)�”}”(hŒ``vertical_position``”h]”jß)�”}”(hjŒ$h]”hŒvertical_position”…”�”}”(hjŽ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M.hj†$ubjõ)�”}”(hhh]”j[)�”}”(hŒBVertical position of the device connection point within the panel.”h]”hŒBVertical position of the device connection point within the panel.”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M-hj¢$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡$h´M.hjI$ubjÓ)�”}”(hŒ]``horizontal_position`` Horizontal position of the device connection point within the panel. ”h]”(jÙ)�”}”(hŒ``horizontal_position``”h]”jß)�”}”(hjÆ$h]”hŒhorizontal_position”…”�”}”(hjÈ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M0hjÀ$ubjõ)�”}”(hhh]”j[)�”}”(hŒDHorizontal position of the device connection point within the panel.”h]”hŒDHorizontal position of the device connection point within the panel.”…”�”}”(hjß$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M/hjÜ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛ$h´M0hjI$ubjÓ)�”}”(hŒ]``dock`` Set if the device connection point resides in a docking station or port replicator. ”h]”(jÙ)�”}”(hŒ``dock``”h]”jß)�”}”(hj%h]”hŒdock”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M2hjú$ubjõ)�”}”(hhh]”j[)�”}”(hŒSSet if the device connection point resides in a docking station or port replicator.”h]”hŒSSet if the device connection point resides in a docking station or port replicator.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M1hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjú$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j%h´M2hjI$ubjÓ)�”}”(hŒP``lid`` Set if this device connection point resides on the lid of laptop system.”h]”(jÙ)�”}”(hŒ``lid``”h]”jß)�”}”(hj:%h]”hŒlid”…”�”}”(hj<%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M3hj4%ubjõ)�”}”(hhh]”j[)�”}”(hŒHSet if this device connection point resides on the lid of laptop system.”h]”hŒHSet if this device connection point resides on the lid of laptop system.”…”�”}”(hjS%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jO%h´M3hjP%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj4%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jO%h´M3hjI$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒstruct_device_flags (C enum)”Œc.struct_device_flags”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒstruct_device_flags”h]”hù)�”}”(hŒenum struct_device_flags”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hj“%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj�%h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�%h²hh³j %h´M:ubj")�”}”(hŒstruct_device_flags”h]”j()�”}”(hj�%h]”hŒstruct_device_flags”…”�”}”(hj³%h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¯%ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj�%h²hh³j %h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj‹%h²hh³j %h´M:ubah}”(h]”j†%ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j %h´M:hjˆ%h²hubjV)�”}”(hhh]”j[)�”}”(hŒFlags in struct device”h]”hŒFlags in struct device”…”�”}”(hjÕ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M>hjÒ%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjˆ%h²hh³j %h´M:ubeh}”(h]”h ]”(jtŒenum”eh"]”h$]”h&]”jyjtjzjí%j{jí%j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX�**Constants** ``DEV_FLAG_READY_TO_PROBE`` If set then device_add() has finished enough initialization that probe could be called. ``DEV_FLAG_CAN_MATCH`` The device has matched with a driver at least once or it is in a bus (like AMBA) which can't check for matching drivers until other devices probe successfully. ``DEV_FLAG_DMA_IOMMU`` Device is using default IOMMU implementation for DMA and doesn't rely on dma_ops structure. ``DEV_FLAG_DMA_SKIP_SYNC`` DMA sync operations can be skipped for coherent buffers. ``DEV_FLAG_DMA_OPS_BYPASS`` If set then the dma_ops are bypassed for the streaming DMA operations (->map_* / ->unmap_* / ->sync_*), and optional (if the coherent mask is large enough) also for dma allocations. This flag is managed by the dma ops instance from ->dma_supported. ``DEV_FLAG_STATE_SYNCED`` The hardware state of this device has been synced to match the software state of this device by calling the driver/bus sync_state() callback. ``DEV_FLAG_DMA_COHERENT`` This particular device is dma coherent, even if the architecture supports non-coherent devices. ``DEV_FLAG_OF_NODE_REUSED`` Set if the device-tree node is shared with an ancestor device. ``DEV_FLAG_OFFLINE_DISABLED`` If set, the device is permanently online. ``DEV_FLAG_OFFLINE`` Set after successful invocation of bus type's .offline(). ``DEV_FLAG_COUNT`` Number of defined struct_device_flags.”h]”(j[)�”}”(hŒ **Constants**”h]”jŠ)�”}”(hj÷%h]”hŒ Constants”…”�”}”(hjù%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjõ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MBhjñ%ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒt``DEV_FLAG_READY_TO_PROBE`` If set then device_add() has finished enough initialization that probe could be called. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_READY_TO_PROBE``”h]”jß)�”}”(hj&h]”hŒDEV_FLAG_READY_TO_PROBE”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MFhj&ubjõ)�”}”(hhh]”j[)�”}”(hŒWIf set then device_add() has finished enough initialization that probe could be called.”h]”hŒWIf set then device_add() has finished enough initialization that probe could be called.”…”�”}”(hj/&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MEhj,&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j+&h´MFhj &ubjÓ)�”}”(hŒ·``DEV_FLAG_CAN_MATCH`` The device has matched with a driver at least once or it is in a bus (like AMBA) which can't check for matching drivers until other devices probe successfully. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_CAN_MATCH``”h]”jß)�”}”(hjP&h]”hŒDEV_FLAG_CAN_MATCH”…”�”}”(hjR&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjN&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MKhjJ&ubjõ)�”}”(hhh]”j[•)�”}”(hŒŸThe device has matched with a driver at least once or it is in a bus (like AMBA) which can't check for matching drivers until other devices probe successfully.”h]”hŒ¡The device has matched with a driver at least once or it is in a bus (like AMBA) which can’t check for matching drivers until other devices probe successfully.”…”�”}”(hji&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MIhjf&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjJ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³je&h´MKhj &ubjÓ)�”}”(hŒs``DEV_FLAG_DMA_IOMMU`` Device is using default IOMMU implementation for DMA and doesn't rely on dma_ops structure. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_DMA_IOMMU``”h]”jß)�”}”(hjŠ&h]”hŒDEV_FLAG_DMA_IOMMU”…”�”}”(hjŒ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MOhj„&ubjõ)�”}”(hhh]”j[)�”}”(hŒ[Device is using default IOMMU implementation for DMA and doesn't rely on dma_ops structure.”h]”hŒ]Device is using default IOMMU implementation for DMA and doesn’t rely on dma_ops structure.”…”�”}”(hj£&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MNhj &ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj„&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŸ&h´MOhj &ubjÓ)�”}”(hŒT``DEV_FLAG_DMA_SKIP_SYNC`` DMA sync operations can be skipped for coherent buffers. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_DMA_SKIP_SYNC``”h]”jß)�”}”(hjÄ&h]”hŒDEV_FLAG_DMA_SKIP_SYNC”…”�”}”(hjÆ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÂ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MShj¾&ubjõ)�”}”(hhh]”j[)�”}”(hŒ8DMA sync operations can be skipped for coherent buffers.”h]”hŒ8DMA sync operations can be skipped for coherent buffers.”…”�”}”(hjÝ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MRhjÚ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¾&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÙ&h´MShj &ubjÓ)�”}”(hX``DEV_FLAG_DMA_OPS_BYPASS`` If set then the dma_ops are bypassed for the streaming DMA operations (->map_* / ->unmap_* / ->sync_*), and optional (if the coherent mask is large enough) also for dma allocations. This flag is managed by the dma ops instance from ->dma_supported. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_DMA_OPS_BYPASS``”h]”jß)�”}”(hjþ&h]”hŒDEV_FLAG_DMA_OPS_BYPASS”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjü&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MZhjø&ubjõ)�”}”(hhh]”j[)�”}”(hŒøIf set then the dma_ops are bypassed for the streaming DMA operations (->map_* / ->unmap_* / ->sync_*), and optional (if the coherent mask is large enough) also for dma allocations. This flag is managed by the dma ops instance from ->dma_supported.”h]”hŒøIf set then the dma_ops are bypassed for the streaming DMA operations (->map_* / ->unmap_* / ->sync_*), and optional (if the coherent mask is large enough) also for dma allocations. This flag is managed by the dma ops instance from ->dma_supported.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MVhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjø&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j'h´MZhj &ubjÓ)�”}”(hŒ¨``DEV_FLAG_STATE_SYNCED`` The hardware state of this device has been synced to match the software state of this device by calling the driver/bus sync_state() callback. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_STATE_SYNCED``”h]”jß)�”}”(hj8'h]”hŒDEV_FLAG_STATE_SYNCED”…”�”}”(hj:'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M_hj2'ubjõ)�”}”(hhh]”j[)�”}”(hŒ�The hardware state of this device has been synced to match the software state of this device by calling the driver/bus sync_state() callback.”h]”hŒ�The hardware state of this device has been synced to match the software state of this device by calling the driver/bus sync_state() callback.”…”�”}”(hjQ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M]hjN'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj2'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jM'h´M_hj &ubjÓ)�”}”(hŒz``DEV_FLAG_DMA_COHERENT`` This particular device is dma coherent, even if the architecture supports non-coherent devices. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_DMA_COHERENT``”h]”jß)�”}”(hjr'h]”hŒDEV_FLAG_DMA_COHERENT”…”�”}”(hjt'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjp'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mchjl'ubjõ)�”}”(hhh]”j[)�”}”(hŒ_This particular device is dma coherent, even if the architecture supports non-coherent devices.”h]”hŒ_This particular device is dma coherent, even if the architecture supports non-coherent devices.”…”�”}”(hj‹'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mbhjˆ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjl'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‡'h´Mchj &ubjÓ)�”}”(hŒ[``DEV_FLAG_OF_NODE_REUSED`` Set if the device-tree node is shared with an ancestor device. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_OF_NODE_REUSED``”h]”jß)�”}”(hj¬'h]”hŒDEV_FLAG_OF_NODE_REUSED”…”�”}”(hj®'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjª'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mghj¦'ubjõ)�”}”(hhh]”j[)�”}”(hŒ>Set if the device-tree node is shared with an ancestor device.”h]”hŒ>Set if the device-tree node is shared with an ancestor device.”…”�”}”(hjÅ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MfhjÂ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¦'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÁ'h´Mghj &ubjÓ)�”}”(hŒH``DEV_FLAG_OFFLINE_DISABLED`` If set, the device is permanently online. ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_OFFLINE_DISABLED``”h]”jß)�”}”(hjæ'h]”hŒDEV_FLAG_OFFLINE_DISABLED”…”�”}”(hjè'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjä'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mjhjà'ubjõ)�”}”(hhh]”j[)�”}”(hŒ)If set, the device is permanently online.”h]”hŒ)If set, the device is permanently online.”…”�”}”(hjÿ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jû'h´Mjhjü'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjà'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jû'h´Mjhj &ubjÓ)�”}”(hŒO``DEV_FLAG_OFFLINE`` Set after successful invocation of bus type's .offline(). ”h]”(jÙ)�”}”(hŒ``DEV_FLAG_OFFLINE``”h]”jß)�”}”(hj(h]”hŒDEV_FLAG_OFFLINE”…”�”}”(hj!(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mmhj(ubjõ)�”}”(hhh]”j[)�”}”(hŒ9Set after successful invocation of bus type's .offline().”h]”hŒ;Set after successful invocation of bus type’s .offline().”…”�”}”(hj8(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j4(h´Mmhj5(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j4(h´Mmhj &ubjÓ)�”}”(hŒ9``DEV_FLAG_COUNT`` Number of defined struct_device_flags.”h]”(jÙ)�”}”(hŒ``DEV_FLAG_COUNT``”h]”jß)�”}”(hjX(h]”hŒDEV_FLAG_COUNT”…”�”}”(hjZ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjV(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MohjR(ubjõ)�”}”(hhh]”j[)�”}”(hŒ&Number of defined struct_device_flags.”h]”hŒ&Number of defined struct_device_flags.”…”�”}”(hjq(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mphjn(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjR(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jm(h´Mohj &ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjñ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´Nubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj›(h]”hŒ Description”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj™(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MrhhËh²hubj[)�”}”(hŒlEach flag should have a set of accessor functions created via __create_dev_flag_accessors() for each access.”h]”hŒlEach flag should have a set of accessor functions created via __create_dev_flag_accessors() for each access.”…”�”}”(hj±(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M?hhËh²hubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice (C struct)”Œc.device”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevice”h]”hù)�”}”(hŒ struct device”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÙ(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÕ(h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MEubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ(h²hh³jæ(h´MEubj")�”}”(hŒdevice”h]”j()�”}”(hjÓ(h]”hŒdevice”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjõ(ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÕ(h²hh³jæ(h´MEubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÑ(h²hh³jæ(h´MEubah}”(h]”jÌ(ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jæ(h´MEhjÎ(h²hubjV)�”}”(hhh]”j[)�”}”(hŒThe basic device structure”h]”hŒThe basic device structure”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mlhj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÎ(h²hh³jæ(h´MEubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzj3)j{j3)j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hXd**Definition**:: struct device { struct kobject kobj; struct device *parent; struct device_private *p; const char *init_name; const struct device_type *type; const struct bus_type *bus; struct device_driver *driver; void *platform_data; void *driver_data; struct { const char *name; spinlock_t lock; } driver_override; struct mutex mutex; struct dev_links_info links; struct dev_pm_info power; struct dev_pm_domain *pm_domain; #ifdef CONFIG_ENERGY_MODEL; struct em_perf_domain *em_pd; #endif; #ifdef CONFIG_PINCTRL; struct dev_pin_info *pins; #endif; struct dev_msi_info msi; #ifdef CONFIG_ARCH_HAS_DMA_OPS; const struct dma_map_ops *dma_ops; #endif; u64 *dma_mask; u64 coherent_dma_mask; u64 bus_dma_limit; const struct bus_dma_region *dma_range_map; struct device_dma_parameters *dma_parms; struct list_head dma_pools; #ifdef CONFIG_DMA_DECLARE_COHERENT; struct dma_coherent_mem *dma_mem; #endif; #ifdef CONFIG_DMA_CMA; struct cma *cma_area; #endif; #ifdef CONFIG_SWIOTLB; struct io_tlb_mem *dma_io_tlb_mem; #endif; #ifdef CONFIG_SWIOTLB_DYNAMIC; struct list_head dma_io_tlb_pools; spinlock_t dma_io_tlb_lock; bool dma_uses_io_tlb; #endif; struct dev_archdata archdata; struct device_node *of_node; struct fwnode_handle *fwnode; #ifdef CONFIG_NUMA; int numa_node; #endif; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; const struct class *class; const struct attribute_group **groups; void (*release)(struct device *dev); struct iommu_group *iommu_group; struct dev_iommu *iommu; struct device_physical_location *physical_location; enum device_removable removable; unsigned long flags[BITS_TO_LONGS( DEV_FLAG_COUNT)]; }; **Members** ``kobj`` A top-level, abstract class from which other classes are derived. ``parent`` The device's "parent" device, the device to which it is attached. In most cases, a parent device is some sort of bus or host controller. If parent is NULL, the device, is a top-level device, which is not usually what you want. ``p`` Holds the private data of the driver core portions of the device. See the comment of the struct device_private for detail. ``init_name`` Initial name of the device. ``type`` The type of device. This identifies the device type and carries type-specific information. ``bus`` Type of bus device is on. ``driver`` Which driver has allocated this ``platform_data`` Platform data specific to the device. ``driver_data`` Private pointer for driver specific info. ``driver_override`` Driver name to force a match. Do not touch directly; use device_set_driver_override() instead. ``mutex`` Mutex to synchronize calls to its driver. ``links`` Links to suppliers and consumers of this device. ``power`` For device power management. See Documentation/driver-api/pm/devices.rst for details. ``pm_domain`` Provide callbacks that are executed during system suspend, hibernation, system resume and during runtime PM transitions along with subsystem-level and driver-level callbacks. ``em_pd`` device's energy model performance domain ``pins`` For device pin management. See Documentation/driver-api/pin-control.rst for details. ``msi`` MSI related data ``dma_ops`` DMA mapping operations for this device. ``dma_mask`` Dma mask (if dma'ble device). ``coherent_dma_mask`` Like dma_mask, but for alloc_coherent mapping as not all hardware supports 64-bit addresses for consistent allocations such descriptors. ``bus_dma_limit`` Limit of an upstream bridge or bus which imposes a smaller DMA limit than the device itself supports. ``dma_range_map`` map for DMA memory ranges relative to that of RAM ``dma_parms`` A low level driver may set these to teach IOMMU code about segment limitations. ``dma_pools`` Dma pools (if dma'ble device). ``dma_mem`` Internal for coherent mem override. ``cma_area`` Contiguous memory area for dma allocations ``dma_io_tlb_mem`` Software IO TLB allocator. Not for driver use. ``dma_io_tlb_pools`` List of transient swiotlb memory pools. ``dma_io_tlb_lock`` Protects changes to the list of active pools. ``dma_uses_io_tlb`` ``true`` if device has used the software IO TLB. ``archdata`` For arch-specific additions. ``of_node`` Associated device tree node. ``fwnode`` Associated device node supplied by platform firmware. ``numa_node`` NUMA node this device is close to. ``devt`` For creating the sysfs "dev". ``id`` device instance ``devres_lock`` Spinlock to protect the resource of the device. ``devres_head`` The resources list of the device. ``class`` The class of the device. ``groups`` Optional attribute groups. ``release`` Callback to free the device after all references have gone away. This should be set by the allocator of the device (i.e. the bus driver that discovered the device). ``iommu_group`` IOMMU group the device belongs to. ``iommu`` Per device generic IOMMU runtime data ``physical_location`` Describes physical location of the device connection point in the system housing. ``removable`` Whether the device can be removed from the system. This should be set by the subsystem / bus driver that discovered the device. ``flags`` DEV_FLAG_XXX flags. Use atomic bitfield operations to modify.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj?)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj;)ubhŒ:”…”�”}”(hj;)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mphj7)ubj¥)�”}”(hX˜struct device { struct kobject kobj; struct device *parent; struct device_private *p; const char *init_name; const struct device_type *type; const struct bus_type *bus; struct device_driver *driver; void *platform_data; void *driver_data; struct { const char *name; spinlock_t lock; } driver_override; struct mutex mutex; struct dev_links_info links; struct dev_pm_info power; struct dev_pm_domain *pm_domain; #ifdef CONFIG_ENERGY_MODEL; struct em_perf_domain *em_pd; #endif; #ifdef CONFIG_PINCTRL; struct dev_pin_info *pins; #endif; struct dev_msi_info msi; #ifdef CONFIG_ARCH_HAS_DMA_OPS; const struct dma_map_ops *dma_ops; #endif; u64 *dma_mask; u64 coherent_dma_mask; u64 bus_dma_limit; const struct bus_dma_region *dma_range_map; struct device_dma_parameters *dma_parms; struct list_head dma_pools; #ifdef CONFIG_DMA_DECLARE_COHERENT; struct dma_coherent_mem *dma_mem; #endif; #ifdef CONFIG_DMA_CMA; struct cma *cma_area; #endif; #ifdef CONFIG_SWIOTLB; struct io_tlb_mem *dma_io_tlb_mem; #endif; #ifdef CONFIG_SWIOTLB_DYNAMIC; struct list_head dma_io_tlb_pools; spinlock_t dma_io_tlb_lock; bool dma_uses_io_tlb; #endif; struct dev_archdata archdata; struct device_node *of_node; struct fwnode_handle *fwnode; #ifdef CONFIG_NUMA; int numa_node; #endif; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; const struct class *class; const struct attribute_group **groups; void (*release)(struct device *dev); struct iommu_group *iommu_group; struct dev_iommu *iommu; struct device_physical_location *physical_location; enum device_removable removable; unsigned long flags[BITS_TO_LONGS( DEV_FLAG_COUNT)]; };”h]”hX˜struct device { struct kobject kobj; struct device *parent; struct device_private *p; const char *init_name; const struct device_type *type; const struct bus_type *bus; struct device_driver *driver; void *platform_data; void *driver_data; struct { const char *name; spinlock_t lock; } driver_override; struct mutex mutex; struct dev_links_info links; struct dev_pm_info power; struct dev_pm_domain *pm_domain; #ifdef CONFIG_ENERGY_MODEL; struct em_perf_domain *em_pd; #endif; #ifdef CONFIG_PINCTRL; struct dev_pin_info *pins; #endif; struct dev_msi_info msi; #ifdef CONFIG_ARCH_HAS_DMA_OPS; const struct dma_map_ops *dma_ops; #endif; u64 *dma_mask; u64 coherent_dma_mask; u64 bus_dma_limit; const struct bus_dma_region *dma_range_map; struct device_dma_parameters *dma_parms; struct list_head dma_pools; #ifdef CONFIG_DMA_DECLARE_COHERENT; struct dma_coherent_mem *dma_mem; #endif; #ifdef CONFIG_DMA_CMA; struct cma *cma_area; #endif; #ifdef CONFIG_SWIOTLB; struct io_tlb_mem *dma_io_tlb_mem; #endif; #ifdef CONFIG_SWIOTLB_DYNAMIC; struct list_head dma_io_tlb_pools; spinlock_t dma_io_tlb_lock; bool dma_uses_io_tlb; #endif; struct dev_archdata archdata; struct device_node *of_node; struct fwnode_handle *fwnode; #ifdef CONFIG_NUMA; int numa_node; #endif; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; const struct class *class; const struct attribute_group **groups; void (*release)(struct device *dev); struct iommu_group *iommu_group; struct dev_iommu *iommu; struct device_physical_location *physical_location; enum device_removable removable; unsigned long flags[BITS_TO_LONGS( DEV_FLAG_COUNT)]; };”…”�”}”hjX)sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mrhj7)ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hji)h]”hŒMembers”…”�”}”(hjk)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjg)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M¶hj7)ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒK``kobj`` A top-level, abstract class from which other classes are derived. ”h]”(jÙ)�”}”(hŒ``kobj``”h]”jß)�”}”(hjˆ)h]”hŒkobj”…”�”}”(hjŠ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj†)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mthj‚)ubjõ)�”}”(hhh]”j[)�”}”(hŒAA top-level, abstract class from which other classes are derived.”h]”hŒAA top-level, abstract class from which other classes are derived.”…”�”}”(hj¡)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j�)h´Mthjž)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‚)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j�)h´Mthj)ubjÓ)�”}”(hŒî``parent`` The device's "parent" device, the device to which it is attached. In most cases, a parent device is some sort of bus or host controller. If parent is NULL, the device, is a top-level device, which is not usually what you want. ”h]”(jÙ)�”}”(hŒ ``parent``”h]”jß)�”}”(hjÁ)h]”hŒparent”…”�”}”(hjÃ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mqhj»)ubjõ)�”}”(hhh]”j[)�”}”(hŒâThe device's "parent" device, the device to which it is attached. In most cases, a parent device is some sort of bus or host controller. If parent is NULL, the device, is a top-level device, which is not usually what you want.”h]”hŒèThe device’s “parentâ€� device, the device to which it is attached. In most cases, a parent device is some sort of bus or host controller. If parent is NULL, the device, is a top-level device, which is not usually what you want.”…”�”}”(hjÚ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mnhj×)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj»)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÖ)h´Mqhj)ubjÓ)�”}”(hŒ�``p`` Holds the private data of the driver core portions of the device. See the comment of the struct device_private for detail. ”h]”(jÙ)�”}”(hŒ``p``”h]”jß)�”}”(hjû)h]”hŒp”…”�”}”(hjý)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjù)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mshjõ)ubjõ)�”}”(hhh]”j[)�”}”(hŒzHolds the private data of the driver core portions of the device. See the comment of the struct device_private for detail.”h]”hŒzHolds the private data of the driver core portions of the device. See the comment of the struct device_private for detail.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mrhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjõ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j*h´Mshj)ubjÓ)�”}”(hŒ*``init_name`` Initial name of the device. ”h]”(jÙ)�”}”(hŒ ``init_name``”h]”jß)�”}”(hj5*h]”hŒ init_name”…”�”}”(hj7*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj3*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Muhj/*ubjõ)�”}”(hhh]”j[)�”}”(hŒInitial name of the device.”h]”hŒInitial name of the device.”…”�”}”(hjN*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jJ*h´MuhjK*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj/*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jJ*h´Muhj)ubjÓ)�”}”(hŒd``type`` The type of device. This identifies the device type and carries type-specific information. ”h]”(jÙ)�”}”(hŒ``type``”h]”jß)�”}”(hjn*h]”hŒtype”…”�”}”(hjp*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjl*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mxhjh*ubjõ)�”}”(hhh]”j[)�”}”(hŒZThe type of device. This identifies the device type and carries type-specific information.”h]”hŒZThe type of device. This identifies the device type and carries type-specific information.”…”�”}”(hj‡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mvhj„*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjh*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jƒ*h´Mxhj)ubjÓ)�”}”(hŒ"``bus`` Type of bus device is on. ”h]”(jÙ)�”}”(hŒ``bus``”h]”jß)�”}”(hj¨*h]”hŒbus”…”�”}”(hjª*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mzhj¢*ubjõ)�”}”(hhh]”j[)�”}”(hŒType of bus device is on.”h]”hŒType of bus device is on.”…”�”}”(hjÁ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j½*h´Mzhj¾*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¢*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j½*h´Mzhj)ubjÓ)�”}”(hŒ+``driver`` Which driver has allocated this ”h]”(jÙ)�”}”(hŒ ``driver``”h]”jß)�”}”(hjá*h]”hŒdriver”…”�”}”(hjã*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjß*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M{hjÛ*ubjõ)�”}”(hhh]”j[)�”}”(hŒWhich driver has allocated this”h]”hŒWhich driver has allocated this”…”�”}”(hjú*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jö*h´M{hj÷*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÛ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jö*h´M{hj)ubjÓ)�”}”(hŒ8``platform_data`` Platform data specific to the device. ”h]”(jÙ)�”}”(hŒ``platform_data``”h]”jß)�”}”(hj+h]”hŒ platform_data”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M|hj+ubjõ)�”}”(hhh]”j[)�”}”(hŒ%Platform data specific to the device.”h]”hŒ%Platform data specific to the device.”…”�”}”(hj3+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j/+h´M|hj0+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j/+h´M|hj)ubjÓ)�”}”(hŒ:``driver_data`` Private pointer for driver specific info. ”h]”(jÙ)�”}”(hŒ``driver_data``”h]”jß)�”}”(hjS+h]”hŒ driver_data”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M„hjM+ubjõ)�”}”(hhh]”j[)�”}”(hŒ)Private pointer for driver specific info.”h]”hŒ)Private pointer for driver specific info.”…”�”}”(hjl+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh+h´M„hji+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjM+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh+h´M„hj)ubjÓ)�”}”(hŒt``driver_override`` Driver name to force a match. Do not touch directly; use device_set_driver_override() instead. ”h]”(jÙ)�”}”(hŒ``driver_override``”h]”jß)�”}”(hjŒ+h]”hŒdriver_override”…”�”}”(hjŽ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M†hj†+ubjõ)�”}”(hhh]”j[)�”}”(hŒ_Driver name to force a match. Do not touch directly; use device_set_driver_override() instead.”h]”hŒ_Driver name to force a match. Do not touch directly; use device_set_driver_override() instead.”…”�”}”(hj¥+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M…hj¢+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡+h´M†hj)ubjÓ)�”}”(hŒ4``mutex`` Mutex to synchronize calls to its driver. ”h]”(jÙ)�”}”(hŒ ``mutex``”h]”jß)�”}”(hjÆ+h]”hŒmutex”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MyhjÀ+ubjõ)�”}”(hhh]”j[)�”}”(hŒ)Mutex to synchronize calls to its driver.”h]”hŒ)Mutex to synchronize calls to its driver.”…”�”}”(hjß+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÛ+h´MyhjÜ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛ+h´Myhj)ubjÓ)�”}”(hŒ;``links`` Links to suppliers and consumers of this device. ”h]”(jÙ)�”}”(hŒ ``links``”h]”jß)�”}”(hjÿ+h]”hŒlinks”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjý+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M‡hjù+ubjõ)�”}”(hhh]”j[)�”}”(hŒ0Links to suppliers and consumers of this device.”h]”hŒ0Links to suppliers and consumers of this device.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j,h´M‡hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjù+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j,h´M‡hj)ubjÓ)�”}”(hŒ```power`` For device power management. See Documentation/driver-api/pm/devices.rst for details. ”h]”(jÙ)�”}”(hŒ ``power``”h]”jß)�”}”(hj8,h]”hŒpower”…”�”}”(hj:,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M‰hj2,ubjõ)�”}”(hhh]”j[)�”}”(hŒUFor device power management. See Documentation/driver-api/pm/devices.rst for details.”h]”hŒUFor device power management. See Documentation/driver-api/pm/devices.rst for details.”…”�”}”(hjQ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MˆhjN,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj2,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jM,h´M‰hj)ubjÓ)�”}”(hŒ½``pm_domain`` Provide callbacks that are executed during system suspend, hibernation, system resume and during runtime PM transitions along with subsystem-level and driver-level callbacks. ”h]”(jÙ)�”}”(hŒ ``pm_domain``”h]”jß)�”}”(hjr,h]”hŒ pm_domain”…”�”}”(hjt,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjp,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŒhjl,ubjõ)�”}”(hhh]”j[)�”}”(hŒ®Provide callbacks that are executed during system suspend, hibernation, system resume and during runtime PM transitions along with subsystem-level and driver-level callbacks.”h]”hŒ®Provide callbacks that are executed during system suspend, hibernation, system resume and during runtime PM transitions along with subsystem-level and driver-level callbacks.”…”�”}”(hj‹,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŠhjˆ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjl,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‡,h´MŒhj)ubjÓ)�”}”(hŒ3``em_pd`` device's energy model performance domain ”h]”(jÙ)�”}”(hŒ ``em_pd``”h]”jß)�”}”(hj¬,h]”hŒem_pd”…”�”}”(hj®,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjª,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M�hj¦,ubjõ)�”}”(hhh]”j[)�”}”(hŒ(device's energy model performance domain”h]”hŒ*device’s energy model performance domain”…”�”}”(hjÅ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÁ,h´M�hjÂ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¦,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÁ,h´M�hj)ubjÓ)�”}”(hŒ^``pins`` For device pin management. See Documentation/driver-api/pin-control.rst for details. ”h]”(jÙ)�”}”(hŒ``pins``”h]”jß)�”}”(hjå,h]”hŒpins”…”�”}”(hjç,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjã,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M�hjß,ubjõ)�”}”(hhh]”j[)�”}”(hŒTFor device pin management. See Documentation/driver-api/pin-control.rst for details.”h]”hŒTFor device pin management. See Documentation/driver-api/pin-control.rst for details.”…”�”}”(hjþ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŽhjû,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjß,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jú,h´M�hj)ubjÓ)�”}”(hŒ``msi`` MSI related data ”h]”(jÙ)�”}”(hŒ``msi``”h]”jß)�”}”(hj-h]”hŒmsi”…”�”}”(hj!-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M�hj-ubjõ)�”}”(hhh]”j[)�”}”(hŒMSI related data”h]”hŒMSI related data”…”�”}”(hj8-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j4-h´M�hj5-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j4-h´M�hj)ubjÓ)�”}”(hŒ4``dma_ops`` DMA mapping operations for this device. ”h]”(jÙ)�”}”(hŒ ``dma_ops``”h]”jß)�”}”(hjX-h]”hŒdma_ops”…”�”}”(hjZ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjV-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M’hjR-ubjõ)�”}”(hhh]”j[)�”}”(hŒ'DMA mapping operations for this device.”h]”hŒ'DMA mapping operations for this device.”…”�”}”(hjq-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jm-h´M’hjn-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjR-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jm-h´M’hj)ubjÓ)�”}”(hŒ+``dma_mask`` Dma mask (if dma'ble device). ”h]”(jÙ)�”}”(hŒ ``dma_mask``”h]”jß)�”}”(hj‘-h]”hŒdma_mask”…”�”}”(hj“-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M“hj‹-ubjõ)�”}”(hhh]”j[)�”}”(hŒDma mask (if dma'ble device).”h]”hŒDma mask (if dma’ble device).”…”�”}”(hjª-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¦-h´M“hj§-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‹-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¦-h´M“hj)ubjÓ)�”}”(hŒŸ``coherent_dma_mask`` Like dma_mask, but for alloc_coherent mapping as not all hardware supports 64-bit addresses for consistent allocations such descriptors. ”h]”(jÙ)�”}”(hŒ``coherent_dma_mask``”h]”jß)�”}”(hjÊ-h]”hŒcoherent_dma_mask”…”�”}”(hjÌ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÈ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M–hjÄ-ubjõ)�”}”(hhh]”j[)�”}”(hŒˆLike dma_mask, but for alloc_coherent mapping as not all hardware supports 64-bit addresses for consistent allocations such descriptors.”h]”hŒˆLike dma_mask, but for alloc_coherent mapping as not all hardware supports 64-bit addresses for consistent allocations such descriptors.”…”�”}”(hjã-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M”hjà-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÄ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jß-h´M–hj)ubjÓ)�”}”(hŒx``bus_dma_limit`` Limit of an upstream bridge or bus which imposes a smaller DMA limit than the device itself supports. ”h]”(jÙ)�”}”(hŒ``bus_dma_limit``”h]”jß)�”}”(hj.h]”hŒ bus_dma_limit”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M˜hjþ-ubjõ)�”}”(hhh]”j[)�”}”(hŒeLimit of an upstream bridge or bus which imposes a smaller DMA limit than the device itself supports.”h]”hŒeLimit of an upstream bridge or bus which imposes a smaller DMA limit than the device itself supports.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M—hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjþ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j.h´M˜hj)ubjÓ)�”}”(hŒD``dma_range_map`` map for DMA memory ranges relative to that of RAM ”h]”(jÙ)�”}”(hŒ``dma_range_map``”h]”jß)�”}”(hj>.h]”hŒ dma_range_map”…”�”}”(hj@.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj<.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M™hj8.ubjõ)�”}”(hhh]”j[)�”}”(hŒ1map for DMA memory ranges relative to that of RAM”h]”hŒ1map for DMA memory ranges relative to that of RAM”…”�”}”(hjW.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jS.h´M™hjT.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj8.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jS.h´M™hj)ubjÓ)�”}”(hŒ^``dma_parms`` A low level driver may set these to teach IOMMU code about segment limitations. ”h]”(jÙ)�”}”(hŒ ``dma_parms``”h]”jß)�”}”(hjw.h]”hŒ dma_parms”…”�”}”(hjy.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhju.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M›hjq.ubjõ)�”}”(hhh]”j[)�”}”(hŒOA low level driver may set these to teach IOMMU code about segment limitations.”h]”hŒOA low level driver may set these to teach IOMMU code about segment limitations.”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mšhj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjq.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŒ.h´M›hj)ubjÓ)�”}”(hŒ-``dma_pools`` Dma pools (if dma'ble device). ”h]”(jÙ)�”}”(hŒ ``dma_pools``”h]”jß)�”}”(hj±.h]”hŒ dma_pools”…”�”}”(hj³.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mœhj«.ubjõ)�”}”(hhh]”j[)�”}”(hŒDma pools (if dma'ble device).”h]”hŒ Dma pools (if dma’ble device).”…”�”}”(hjÊ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÆ.h´MœhjÇ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj«.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÆ.h´Mœhj)ubjÓ)�”}”(hŒ0``dma_mem`` Internal for coherent mem override. ”h]”(jÙ)�”}”(hŒ ``dma_mem``”h]”jß)�”}”(hjê.h]”hŒdma_mem”…”�”}”(hjì.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjè.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M�hjä.ubjõ)�”}”(hhh]”j[)�”}”(hŒ#Internal for coherent mem override.”h]”hŒ#Internal for coherent mem override.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÿ.h´M�hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjä.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÿ.h´M�hj)ubjÓ)�”}”(hŒ8``cma_area`` Contiguous memory area for dma allocations ”h]”(jÙ)�”}”(hŒ ``cma_area``”h]”jß)�”}”(hj#/h]”hŒcma_area”…”�”}”(hj%/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj!/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mžhj/ubjõ)�”}”(hhh]”j[)�”}”(hŒ*Contiguous memory area for dma allocations”h]”hŒ*Contiguous memory area for dma allocations”…”�”}”(hj 0 if a driver override is set and matches the given driver, 0 if a driver override is set but does not match, or < 0 if a driver override is not set at all.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÿ<h]”hŒ Parameters”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjý<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M„hjù<ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ'``struct device *dev`` device to check ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj=h]”hŒstruct device *dev”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M�hj=ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j3=h´M�hj4=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j3=h´M�hj=ubjÓ)�”}”(hŒ<``const struct device_driver *drv`` driver to match against ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hjW=h]”hŒconst struct device_driver *drv”…”�”}”(hjY=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjU=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M‚hjQ=ubjõ)�”}”(hhh]”j[)�”}”(hŒdriver to match against”h]”hŒdriver to match against”…”�”}”(hjp=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jl=h´M‚hjm=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjQ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jl=h´M‚hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjù<ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj’=h]”hŒ Description”…”�”}”(hj”=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M„hjù<ubj[)�”}”(hŒ¦Returns > 0 if a driver override is set and matches the given driver, 0 if a driver override is set but does not match, or < 0 if a driver override is not set at all.”h]”hŒ¦Returns > 0 if a driver override is set and matches the given driver, 0 if a driver override is set but does not match, or < 0 if a driver override is not set at all.”…”�”}”(hj¨=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mƒhjù<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ device_iommu_mapped (C function)”Œc.device_iommu_mapped”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-bool device_iommu_mapped (struct device *dev)”h]”hù)�”}”(hŒ,bool device_iommu_mapped(struct device *dev)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hj×=h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÓ=h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M’ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ=h²hh³jä=h´M’ubj")�”}”(hŒdevice_iommu_mapped”h]”j()�”}”(hŒdevice_iommu_mapped”h]”hŒdevice_iommu_mapped”…”�”}”(hj÷=h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjó=ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÓ=h²hh³jä=h´M’ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj1>h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj.>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j3>Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jù=sbŒc.device_iommu_mapped”†”asbuh1hhj>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj_>h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj>ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjl>h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj >ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÓ=h²hh³jä=h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÏ=h²hh³jä=h´M’ubah}”(h]”jÊ=ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jä=h´M’hjÌ=h²hubjV)�”}”(hhh]”j[)�”}”(hŒ:Returns true when the device DMA is translated by an IOMMU”h]”hŒ:Returns true when the device DMA is translated by an IOMMU”…”�”}”(hj–>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M’hj“>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÌ=h²hh³jä=h´M’ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj®>j{j®>j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒG**Parameters** ``struct device *dev`` Device to perform the check on”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj¸>h]”hŒ Parameters”…”�”}”(hjº>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¶>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M–hj²>ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ5``struct device *dev`` Device to perform the check on”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj×>h]”hŒstruct device *dev”…”�”}”(hjÙ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M˜hjÑ>ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to perform the check on”h]”hŒDevice to perform the check on”…”�”}”(hjð>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M”hjí>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÑ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jì>h´M˜hjÎ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_name (C function)”Œ c.dev_name”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0const char * dev_name (const struct device *dev)”h]”hù)�”}”(hŒ.const char *dev_name(const struct device *dev)”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj-?h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŸubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-?h²hh³j>?h´MŸubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjM?h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj-?h²hh³j>?h´MŸubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-?h²hh³j>?h´MŸubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hji?h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj-?h²hh³j>?h´MŸubj")�”}”(hŒdev_name”h]”j()�”}”(hŒdev_name”h]”hŒdev_name”…”�”}”(hjz?h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjv?ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj-?h²hh³j>?h´MŸubj÷7)�”}”(hŒ(const struct device *dev)”h]”jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj–?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj’?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’?ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj’?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’?ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÏ?h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÌ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÑ?Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j|?sbŒ c.dev_name”†”asbuh1hhj’?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’?ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjý?h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj’?ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj’?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjŽ?ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj-?h²hh³j>?h´MŸubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj)?h²hh³j>?h´MŸubah}”(h]”j$?ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j>?h´MŸhj&?h²hubjV)�”}”(hhh]”j[)�”}”(hŒReturn a device's name.”h]”hŒReturn a device’s name.”…”�”}”(hj4@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŸhj1@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj&?h²hh³j>?h´MŸubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjL@j{jL@j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒ˜**Parameters** ``const struct device *dev`` Device with name to get. **Return** The kobject name of the device, or its initial name if unavailable.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjV@h]”hŒ Parameters”…”�”}”(hjX@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjT@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M£hjP@ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ6``const struct device *dev`` Device with name to get. ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hju@h]”hŒconst struct device *dev”…”�”}”(hjw@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjs@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M hjo@ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice with name to get.”h]”hŒDevice with name to get.”…”�”}”(hjŽ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŠ@h´M hj‹@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjo@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŠ@h´M hjl@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjP@ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hj°@h]”hŒReturn”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj®@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M¢hjP@ubj[)�”}”(hŒCThe kobject name of the device, or its initial name if unavailable.”h]”hŒCThe kobject name of the device, or its initial name if unavailable.”…”�”}”(hjÆ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M¡hjP@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_bus_name (C function)”Œc.dev_bus_name”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4const char * dev_bus_name (const struct device *dev)”h]”hù)�”}”(hŒ2const char *dev_bus_name(const struct device *dev)”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjõ@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjñ@h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ@h²hh³jAh´M­ubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjñ@h²hh³jAh´M­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ@h²hh³jAh´M­ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj-Ah²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjñ@h²hh³jAh´M­ubj")�”}”(hŒ dev_bus_name”h]”j()�”}”(hŒ dev_bus_name”h]”hŒ dev_bus_name”…”�”}”(hj>Ah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj:Aubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjñ@h²hh³jAh´M­ubj÷7)�”}”(hŒ(const struct device *dev)”h]”jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjZAh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjVAubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVAubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjuAh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjVAubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVAubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj“Ah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j•AŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j@AsbŒc.dev_bus_name”†”asbuh1hhjVAubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVAubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÁAh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjVAubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÎAh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjVAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRAubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjñ@h²hh³jAh´M­ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjí@h²hh³jAh´M­ubah}”(h]”jè@ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jAh´M­hjê@h²hubjV)�”}”(hhh]”j[)�”}”(hŒ4Return a device's bus/class name, if at all possible”h]”hŒ6Return a device’s bus/class name, if at all possible”…”�”}”(hjøAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M­hjõAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjê@h²hh³jAh´M­ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjBj{jBj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒõ**Parameters** ``const struct device *dev`` struct device to get the bus/class name of **Description** Will return the name of the bus/class the device is attached to. If it is not attached to a bus/class, an empty string will be returned.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjBh]”hŒ Parameters”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M±hjBubjÎ)�”}”(hhh]”jÓ)�”}”(hŒH``const struct device *dev`` struct device to get the bus/class name of ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hj9Bh]”hŒconst struct device *dev”…”�”}”(hj;Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj7Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M®hj3Bubjõ)�”}”(hhh]”j[)�”}”(hŒ*struct device to get the bus/class name of”h]”hŒ*struct device to get the bus/class name of”…”�”}”(hjRBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jNBh´M®hjOBubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj3Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jNBh´M®hj0Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjBubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjtBh]”hŒ Description”…”�”}”(hjvBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjrBubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M°hjBubj[)�”}”(hŒ‰Will return the name of the bus/class the device is attached to. If it is not attached to a bus/class, an empty string will be returned.”h]”hŒ‰Will return the name of the bus/class the device is attached to. If it is not attached to a bus/class, an empty string will be returned.”…”�”}”(hjŠBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M¯hjBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&device_find_child_by_name (C function)”Œc.device_find_child_by_name”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒSstruct device * device_find_child_by_name (struct device *parent, const char *name)”h]”hù)�”}”(hŒQstruct device *device_find_child_by_name(struct device *parent, const char *name)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¹Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjµBh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M›ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµBh²hh³jÆBh´M›ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjØBh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÕBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÚBŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdevice_find_child_by_name”sbŒc.device_find_child_by_name”†”asbuh1hhjµBh²hh³jÆBh´M›ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµBh²hh³jÆBh´M›ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjµBh²hh³jÆBh´M›ubj")�”}”(hŒdevice_find_child_by_name”h]”j()�”}”(hjöBh]”hŒdevice_find_child_by_name”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjCubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjµBh²hh³jÆBh´M›ubj÷7)�”}”(hŒ)(struct device *parent, const char *name)”h]”(jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj3Ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj/Cubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Cubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjQCh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjNCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jSCŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jôBŒc.device_find_child_by_name”†”asbuh1hhj/Cubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/CubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj}Ch²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj/Cubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjŠCh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj/Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj+Cubjý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj£Ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjŸCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸCubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¾Ch²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjŸCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸCubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÚCh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjŸCubj()�”}”(hŒname”h]”hŒname”…”�”}”(hjçCh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŸCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj+Cubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjµBh²hh³jÆBh´M›ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj±Bh²hh³jÆBh´M›ubah}”(h]”j¬Bah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÆBh´M›hj®Bh²hubjV)�”}”(hhh]”j[)�”}”(hŒ,device iterator for locating a child device.”h]”hŒ,device iterator for locating a child device.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M›hjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj®Bh²hh³jÆBh´M›ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj)Dj{j)Dj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hXM**Parameters** ``struct device *parent`` parent struct device ``const char *name`` name of the child device **Description** This is similar to the device_find_child() function above, but it returns a reference to a device that has the name **name**. **NOTE** you will need to drop the reference with put_device() after use.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj3Dh]”hŒ Parameters”…”�”}”(hj5Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj1Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŸhj-DubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ/``struct device *parent`` parent struct device ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjRDh]”hŒstruct device *parent”…”�”}”(hjTDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjPDubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MœhjLDubjõ)�”}”(hhh]”j[)�”}”(hŒparent struct device”h]”hŒparent struct device”…”�”}”(hjkDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jgDh´MœhjhDubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjLDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jgDh´MœhjIDubjÓ)�”}”(hŒ.``const char *name`` name of the child device ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj‹Dh]”hŒconst char *name”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‰Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M�hj…Dubjõ)�”}”(hhh]”j[)�”}”(hŒname of the child device”h]”hŒname of the child device”…”�”}”(hj¤Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j Dh´M�hj¡Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj…Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j Dh´M�hjIDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj-Dubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÆDh]”hŒ Description”…”�”}”(hjÈDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÄDubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MŸhj-Dubj[)�”}”(hŒ}This is similar to the device_find_child() function above, but it returns a reference to a device that has the name **name**.”h]”(hŒtThis is similar to the device_find_child() function above, but it returns a reference to a device that has the name ”…”�”}”(hjÜDh²hh³Nh´NubjŠ)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjäDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÜDubhŒ.”…”�”}”(hjÜDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Mžhj-Dubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjÿDh]”hŒNOTE”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjýDubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M¡hj-Dubj[)�”}”(hŒ@you will need to drop the reference with put_device() after use.”h]”hŒ@you will need to drop the reference with put_device() after use.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M¢hj-Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"device_find_any_child (C function)”Œc.device_find_any_child”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=struct device * device_find_any_child (struct device *parent)”h]”hù)�”}”(hŒ;struct device *device_find_any_child(struct device *parent)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjDEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj@Eh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´M«ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjREh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Eh²hh³jQEh´M«ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjcEh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj`Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jeEŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdevice_find_any_child”sbŒc.device_find_any_child”†”asbuh1hhj@Eh²hh³jQEh´M«ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Eh²hh³jQEh´M«ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj’Eh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj@Eh²hh³jQEh´M«ubj")�”}”(hŒdevice_find_any_child”h]”j()�”}”(hj�Eh]”hŒdevice_find_any_child”…”�”}”(hj£Eh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŸEubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj@Eh²hh³jQEh´M«ubj÷7)�”}”(hŒ(struct device *parent)”h]”jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¾Eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjºEubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºEubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÜEh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÙEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÞEŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jEŒc.device_find_any_child”†”asbuh1hhjºEubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºEubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjºEubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjºEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¶Eubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj@Eh²hh³jQEh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjGh´MÉubah}”(h]”jGah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j>Gh´MÉhjGh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjGh²hh³j>Gh´MÉubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjWGj{jWGj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ$``device_lock_set_class (dev, key)``”h]”jß)�”}”(hj]Gh]”hŒ device_lock_set_class (dev, key)”…”�”}”(hj_Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj[Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MËhhËh²hubj3)�”}”(hŒFSpecify a temporary lock class while a device is attached to a driver ”h]”j[)�”}”(hŒESpecify a temporary lock class while a device is attached to a driver”h]”hŒESpecify a temporary lock class while a device is attached to a driver”…”�”}”(hjwGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÉhjsGubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j…Gh´MÉhhËh²hubj€)�”}”(hŒù**Parameters** ``dev`` device to modify ``key`` lock class key data **Description** This must be called with the device_lock() already held, for example from driver ->probe(). Take care to only override the default lockdep_no_validate class.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj’Gh]”hŒ Parameters”…”�”}”(hj”Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÍhjŒGubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``dev`` device to modify ”h]”(jÙ)�”}”(hŒ``dev``”h]”jß)�”}”(hj±Gh]”hŒdev”…”�”}”(hj³Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MËhj«Gubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to modify”h]”hŒdevice to modify”…”�”}”(hjÊGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÆGh´MËhjÇGubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj«Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÆGh´MËhj¨GubjÓ)�”}”(hŒ``key`` lock class key data ”h]”(jÙ)�”}”(hŒ``key``”h]”jß)�”}”(hjêGh]”hŒkey”…”�”}”(hjìGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjèGubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÌhjäGubjõ)�”}”(hhh]”j[)�”}”(hŒlock class key data”h]”hŒlock class key data”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÿGh´MÌhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjäGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÿGh´MÌhj¨Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŒGubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj%Hh]”hŒ Description”…”�”}”(hj'Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj#Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÎhjŒGubj[)�”}”(hŒ�This must be called with the device_lock() already held, for example from driver ->probe(). Take care to only override the default lockdep_no_validate class.”h]”hŒ�This must be called with the device_lock() already held, for example from driver ->probe(). Take care to only override the default lockdep_no_validate class.”…”�”}”(hj;Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MÍhjŒGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!device_lock_reset_class (C macro)”Œc.device_lock_reset_class”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevice_lock_reset_class”h]”hù)�”}”(hŒdevice_lock_reset_class”h]”j")�”}”(hŒdevice_lock_reset_class”h]”j()�”}”(hjdHh]”hŒdevice_lock_reset_class”…”�”}”(hjnHh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjHubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjfHh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Màubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjbHh²hh³j�Hh´Màubah}”(h]”j]Hah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j�Hh´Màhj_Hh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj_Hh²hh³j�Hh´Màubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjšHj{jšHj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj[)�”}”(hŒ!``device_lock_reset_class (dev)``”h]”jß)�”}”(hj Hh]”hŒdevice_lock_reset_class (dev)”…”�”}”(hj¢Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjžHubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MâhhËh²hubj3)�”}”(hŒ8Return a device to the default lockdep novalidate state ”h]”j[)�”}”(hŒ7Return a device to the default lockdep novalidate state”h]”hŒ7Return a device to the default lockdep novalidate state”…”�”}”(hjºHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´Màhj¶Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jÈHh´MàhhËh²hubj€)�”}”(hŒ™**Parameters** ``dev`` device to modify **Description** This must be called with the device_lock() already held, for example from driver ->remove().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÕHh]”hŒ Parameters”…”�”}”(hj×Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÓHubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MähjÏHubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``dev`` device to modify ”h]”(jÙ)�”}”(hŒ``dev``”h]”jß)�”}”(hjôHh]”hŒdev”…”�”}”(hjöHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòHubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MáhjîHubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to modify”h]”hŒdevice to modify”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j Ih´Máhj Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjîHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j Ih´MáhjëHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÏHubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj/Ih]”hŒ Description”…”�”}”(hj1Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj-Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MãhjÏHubj[)�”}”(hŒ\This must be called with the device_lock() already held, for example from driver ->remove().”h]”hŒ\This must be called with the device_lock() already held, for example from driver ->remove().”…”�”}”(hjEIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:7: ./include/linux/device.h”h´MâhjÏHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_type (C struct)”Œ c.bus_type”hNt”auh1hÜhhËh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´Nubhî)�”}”(hhh]”(hó)�”}”(hŒbus_type”h]”hù)�”}”(hŒstruct bus_type”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjuIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjqIh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqIh²hh³j‚Ih´Kubj")�”}”(hŒbus_type”h]”j()�”}”(hjoIh]”hŒbus_type”…”�”}”(hj•Ih²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‘Iubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjqIh²hh³j‚Ih´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjmIh²hh³j‚Ih´Kubah}”(h]”jgIah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j‚Ih´KhjjIh²hubjV)�”}”(hhh]”j[)�”}”(hŒThe bus type of the device”h]”hŒThe bus type of the device”…”�”}”(hj·Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´Khj´Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjjIh²hh³j‚Ih´Kubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjÏIj{jÏIj|‰j}‰j~‰uh1híh²hhhËh³jiIh´Nubj€)�”}”(hXG**Definition**:: struct bus_type { const char *name; const char *dev_name; const struct attribute_group *const *bus_groups; const struct attribute_group *const *dev_groups; const struct attribute_group *const *drv_groups; int (*match)(struct device *dev, const struct device_driver *drv); int (*uevent)(const struct device *dev, struct kobj_uevent_env *env); int (*probe)(struct device *dev); void (*sync_state)(struct device *dev); void (*remove)(struct device *dev); void (*shutdown)(struct device *dev); const struct cpumask *(*irq_get_affinity)(struct device *dev, unsigned int irq_vec); int (*online)(struct device *dev); int (*offline)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); int (*num_vf)(struct device *dev); int (*dma_configure)(struct device *dev); void (*dma_cleanup)(struct device *dev); const struct dev_pm_ops *pm; bool driver_override; bool need_parent_lock; }; **Members** ``name`` The name of the bus. ``dev_name`` Used for subsystems to enumerate devices like ("foo``u``", dev->id). ``bus_groups`` Default attributes of the bus. ``dev_groups`` Default attributes of the devices on the bus. ``drv_groups`` Default attributes of the device drivers on the bus. ``match`` Called, perhaps multiple times, whenever a new device or driver is added for this bus. It should return a positive value if the given device can be handled by the given driver and zero otherwise. It may also return error code if determining that the driver supports the device is not possible. In case of -EPROBE_DEFER it will queue the device for deferred probing. ``uevent`` Called when a device is added, removed, or a few other things that generate uevents to add the environment variables. ``probe`` Called when a new device or driver add to this bus, and callback the specific driver's probe to initial the matched device. ``sync_state`` Called to sync device state to software state after all the state tracking consumers linked to this device (present at the time of late_initcall) have successfully bound to a driver. If the device has no consumers, this function will be called at late_initcall_sync level. If the device has consumers that are never bound to a driver, this function will never get called until they do. ``remove`` Called when a device removed from this bus. ``shutdown`` Called at shut-down time to quiesce the device. ``irq_get_affinity`` Get IRQ affinity mask for the device on this bus. ``online`` Called to put the device back online (after offlining it). ``offline`` Called to put the device offline for hot-removal. May fail. ``suspend`` Called when a device on this bus wants to go to sleep mode. ``resume`` Called to bring a device on this bus out of sleep mode. ``num_vf`` Called to find out how many virtual functions a device on this bus supports. ``dma_configure`` Called to setup DMA configuration on a device on this bus. ``dma_cleanup`` Called to cleanup DMA configuration on a device on this bus. ``pm`` Power management operations of this bus, callback the specific device driver's pm-ops. ``driver_override`` Set to true if this bus supports the driver_override mechanism, which allows userspace to force a specific driver to bind to a device via a sysfs attribute. ``need_parent_lock`` When probing or removing a device on this bus, the device core should lock the device's parent.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÛIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj×IubhŒ:”…”�”}”(hj×Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´KhjÓIubj¥)�”}”(hXstruct bus_type { const char *name; const char *dev_name; const struct attribute_group *const *bus_groups; const struct attribute_group *const *dev_groups; const struct attribute_group *const *drv_groups; int (*match)(struct device *dev, const struct device_driver *drv); int (*uevent)(const struct device *dev, struct kobj_uevent_env *env); int (*probe)(struct device *dev); void (*sync_state)(struct device *dev); void (*remove)(struct device *dev); void (*shutdown)(struct device *dev); const struct cpumask *(*irq_get_affinity)(struct device *dev, unsigned int irq_vec); int (*online)(struct device *dev); int (*offline)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); int (*num_vf)(struct device *dev); int (*dma_configure)(struct device *dev); void (*dma_cleanup)(struct device *dev); const struct dev_pm_ops *pm; bool driver_override; bool need_parent_lock; };”•ih]”hXstruct bus_type { const char *name; const char *dev_name; const struct attribute_group *const *bus_groups; const struct attribute_group *const *dev_groups; const struct attribute_group *const *drv_groups; int (*match)(struct device *dev, const struct device_driver *drv); int (*uevent)(const struct device *dev, struct kobj_uevent_env *env); int (*probe)(struct device *dev); void (*sync_state)(struct device *dev); void (*remove)(struct device *dev); void (*shutdown)(struct device *dev); const struct cpumask *(*irq_get_affinity)(struct device *dev, unsigned int irq_vec); int (*online)(struct device *dev); int (*offline)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); int (*num_vf)(struct device *dev); int (*dma_configure)(struct device *dev); void (*dma_cleanup)(struct device *dev); const struct dev_pm_ops *pm; bool driver_override; bool need_parent_lock; };”…”�”}”hjôIsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´KhjÓIubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hjJh]”hŒMembers”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K8hjÓIubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``name`` The name of the bus. ”h]”(jÙ)�”}”(hŒ``name``”h]”jß)�”}”(hj$Jh]”hŒname”…”�”}”(hj&Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´KhjJubjõ)�”}”(hhh]”j[)�”}”(hŒThe name of the bus.”h]”hŒThe name of the bus.”…”�”}”(hj=Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j9Jh´Khj:Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j9Jh´KhjJubjÓ)�”}”(hŒR``dev_name`` Used for subsystems to enumerate devices like ("foo``u``", dev->id). ”h]”(jÙ)�”}”(hŒ ``dev_name``”h]”jß)�”}”(hj]Jh]”hŒdev_name”…”�”}”(hj_Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj[Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´KhjWJubjõ)�”}”(hhh]”j[)�”}”(hŒDUsed for subsystems to enumerate devices like ("foo``u``", dev->id).”h]”hŒHUsed for subsystems to enumerate devices like (“foo``u``â€�, dev->id).”…”�”}”(hjvJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jrJh´KhjsJubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjWJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jrJh´KhjJubjÓ)�”}”(hŒ.``bus_groups`` Default attributes of the bus. ”h]”(jÙ)�”}”(hŒ``bus_groups``”h]”jß)�”}”(hj–Jh]”hŒ bus_groups”…”�”}”(hj˜Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj”Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´Khj�Jubjõ)�”}”(hhh]”j[)�”}”(hŒDefault attributes of the bus.”h]”hŒDefault attributes of the bus.”…”�”}”(hj¯Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j«Jh´Khj¬Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j«Jh´KhjJubjÓ)�”}”(hŒ=``dev_groups`` Default attributes of the devices on the bus. ”h]”(jÙ)�”}”(hŒ``dev_groups``”h]”jß)�”}”(hjÏJh]”hŒ dev_groups”…”�”}”(hjÑJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÍJubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´KhjÉJubjõ)�”}”(hhh]”j[)�”}”(hŒ-Default attributes of the devices on the bus.”h]”hŒ-Default attributes of the devices on the bus.”…”�”}”(hjèJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jäJh´KhjåJubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÉJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jäJh´KhjJubjÓ)�”}”(hŒD``drv_groups`` Default attributes of the device drivers on the bus. ”h]”(jÙ)�”}”(hŒ``drv_groups``”h]”jß)�”}”(hjKh]”hŒ drv_groups”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K hjKubjõ)�”}”(hhh]”j[)�”}”(hŒ4Default attributes of the device drivers on the bus.”h]”hŒ4Default attributes of the device drivers on the bus.”…”�”}”(hj!Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jKh´K hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jKh´K hjJubjÓ)�”}”(hXx``match`` Called, perhaps multiple times, whenever a new device or driver is added for this bus. It should return a positive value if the given device can be handled by the given driver and zero otherwise. It may also return error code if determining that the driver supports the device is not possible. In case of -EPROBE_DEFER it will queue the device for deferred probing. ”h]”(jÙ)�”}”(hŒ ``match``”h]”jß)�”}”(hjAKh]”hŒmatch”…”�”}”(hjCKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj?Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K&hj;Kubjõ)�”}”(hhh]”j[)�”}”(hXmCalled, perhaps multiple times, whenever a new device or driver is added for this bus. It should return a positive value if the given device can be handled by the given driver and zero otherwise. It may also return error code if determining that the driver supports the device is not possible. In case of -EPROBE_DEFER it will queue the device for deferred probing.”h]”hXmCalled, perhaps multiple times, whenever a new device or driver is added for this bus. It should return a positive value if the given device can be handled by the given driver and zero otherwise. It may also return error code if determining that the driver supports the device is not possible. In case of -EPROBE_DEFER it will queue the device for deferred probing.”…”�”}”(hjZKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K!hjWKubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj;Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jVKh´K&hjJubjÓ)�”}”(hŒ�``uevent`` Called when a device is added, removed, or a few other things that generate uevents to add the environment variables. ”h]”(jÙ)�”}”(hŒ ``uevent``”h]”jß)�”}”(hj{Kh]”hŒuevent”…”�”}”(hj}Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjyKubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K*hjuKubjõ)�”}”(hhh]”j[)�”}”(hŒuCalled when a device is added, removed, or a few other things that generate uevents to add the environment variables.”h]”hŒuCalled when a device is added, removed, or a few other things that generate uevents to add the environment variables.”…”�”}”(hj”Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K)hj‘Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjuKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j�Kh´K*hjJubjÓ)�”}”(hŒ†``probe`` Called when a new device or driver add to this bus, and callback the specific driver's probe to initial the matched device. ”h]”(jÙ)�”}”(hŒ ``probe``”h]”jß)�”}”(hjµKh]”hŒprobe”…”�”}”(hj·Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K,hj¯Kubjõ)�”}”(hhh]”j[)�”}”(hŒ{Called when a new device or driver add to this bus, and callback the specific driver's probe to initial the matched device.”h]”hŒ}Called when a new device or driver add to this bus, and callback the specific driver’s probe to initial the matched device.”…”�”}”(hjÎKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K+hjËKubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¯Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÊKh´K,hjJubjÓ)�”}”(hX‘``sync_state`` Called to sync device state to software state after all the state tracking consumers linked to this device (present at the time of late_initcall) have successfully bound to a driver. If the device has no consumers, this function will be called at late_initcall_sync level. If the device has consumers that are never bound to a driver, this function will never get called until they do. ”h]”(jÙ)�”}”(hŒ``sync_state``”h]”jß)�”}”(hjïKh]”hŒ sync_state”…”�”}”(hjñKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjíKubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K3hjéKubjõ)�”}”(hhh]”j[)�”}”(hX�Called to sync device state to software state after all the state tracking consumers linked to this device (present at the time of late_initcall) have successfully bound to a driver. If the device has no consumers, this function will be called at late_initcall_sync level. If the device has consumers that are never bound to a driver, this function will never get called until they do.”h]”hX�Called to sync device state to software state after all the state tracking consumers linked to this device (present at the time of late_initcall) have successfully bound to a driver. If the device has no consumers, this function will be called at late_initcall_sync level. If the device has consumers that are never bound to a driver, this function will never get called until they do.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K-hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjéKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jLh´K3hjJubjÓ)�”}”(hŒ7``remove`` Called when a device removed from this bus. ”h]”(jÙ)�”}”(hŒ ``remove``”h]”jß)�”}”(hj)Lh]”hŒremove”…”�”}”(hj+Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K4hj#Lubjõ)�”}”(hhh]”j[)�”}”(hŒ+Called when a device removed from this bus.”h]”hŒ+Called when a device removed from this bus.”…”�”}”(hjBLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j>Lh´K4hj?Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj#Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j>Lh´K4hjJubjÓ)�”}”(hŒ=``shutdown`` Called at shut-down time to quiesce the device. ”h]”(jÙ)�”}”(hŒ ``shutdown``”h]”jß)�”}”(hjbLh]”hŒshutdown”…”�”}”(hjdLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj`Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K5hj\Lubjõ)�”}”(hhh]”j[)�”}”(hŒ/Called at shut-down time to quiesce the device.”h]”hŒ/Called at shut-down time to quiesce the device.”…”�”}”(hj{Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jwLh´K5hjxLubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj\Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jwLh´K5hjJubjÓ)�”}”(hŒG``irq_get_affinity`` Get IRQ affinity mask for the device on this bus. ”h]”(jÙ)�”}”(hŒ``irq_get_affinity``”h]”jß)�”}”(hj›Lh]”hŒirq_get_affinity”…”�”}”(hj�Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj™Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K6hj•Lubjõ)�”}”(hhh]”j[)�”}”(hŒ1Get IRQ affinity mask for the device on this bus.”h]”hŒ1Get IRQ affinity mask for the device on this bus.”…”�”}”(hj´Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j°Lh´K6hj±Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj•Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j°Lh´K6hjJubjÓ)�”}”(hŒF``online`` Called to put the device back online (after offlining it). ”h]”(jÙ)�”}”(hŒ ``online``”h]”jß)�”}”(hjÔLh]”hŒonline”…”�”}”(hjÖLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒLubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K8hjÎLubjõ)�”}”(hhh]”j[)�”}”(hŒ:Called to put the device back online (after offlining it).”h]”hŒ:Called to put the device back online (after offlining it).”…”�”}”(hjíLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jéLh´K8hjêLubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÎLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jéLh´K8hjJubjÓ)�”}”(hŒH``offline`` Called to put the device offline for hot-removal. May fail. ”h]”(jÙ)�”}”(hŒ ``offline``”h]”jß)�”}”(hj Mh]”hŒoffline”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K9hjMubjõ)�”}”(hhh]”j[)�”}”(hŒ;Called to put the device offline for hot-removal. May fail.”h]”hŒ;Called to put the device offline for hot-removal. May fail.”…”�”}”(hj&Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j"Mh´K9hj#Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j"Mh´K9hjJubjÓ)�”}”(hŒH``suspend`` Called when a device on this bus wants to go to sleep mode. ”h]”(jÙ)�”}”(hŒ ``suspend``”h]”jß)�”}”(hjFMh]”hŒsuspend”…”�”}”(hjHMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjDMubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K;hj@Mubjõ)�”}”(hhh]”j[)�”}”(hŒ;Called when a device on this bus wants to go to sleep mode.”h]”hŒ;Called when a device on this bus wants to go to sleep mode.”…”�”}”(hj_Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j[Mh´K;hj\Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj@Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j[Mh´K;hjJubjÓ)�”}”(hŒC``resume`` Called to bring a device on this bus out of sleep mode. ”h]”(jÙ)�”}”(hŒ ``resume``”h]”jß)�”}”(hjMh]”hŒresume”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj}Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´Khj²Mubjõ)�”}”(hhh]”j[)�”}”(hŒLCalled to find out how many virtual functions a device on this bus supports.”h]”hŒLCalled to find out how many virtual functions a device on this bus supports.”…”�”}”(hjÑMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K=hjÎMubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj²Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÍMh´K>hjJubjÓ)�”}”(hŒM``dma_configure`` Called to setup DMA configuration on a device on this bus. ”h]”(jÙ)�”}”(hŒ``dma_configure``”h]”jß)�”}”(hjòMh]”hŒ dma_configure”…”�”}”(hjôMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjðMubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K@hjìMubjõ)�”}”(hhh]”j[)�”}”(hŒ:Called to setup DMA configuration on a device on this bus.”h]”hŒ:Called to setup DMA configuration on a device on this bus.”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´K?hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjìMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jNh´K@hjJubjÓ)�”}”(hŒM``dma_cleanup`` Called to cleanup DMA configuration on a device on this bus. ”h]”(jÙ)�”}”(hŒ``dma_cleanup``”h]”jß)�”}”(hj,Nh]”hŒ dma_cleanup”…”�”}”(hj.Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:11: ./include/linux/device/bus.h”h´KBhj&Nubjõ)�”}”(hhh]”j[)�”}”(hŒXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K8hj6Xubjõ)�”}”(hhh]”j[)�”}”(hŒName of the device driver.”h]”hŒName of the device driver.”…”�”}”(hjUXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jQXh´K8hjRXubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj6Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jQXh´K8hj3XubjÓ)�”}”(hŒ<``bus`` The bus which the device of this driver belongs to. ”h]”(jÙ)�”}”(hŒ``bus``”h]”jß)�”}”(hjuXh]”hŒbus”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjsXubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K9hjoXubjõ)�”}”(hhh]”j[)�”}”(hŒ3The bus which the device of this driver belongs to.”h]”hŒ3The bus which the device of this driver belongs to.”…”�”}”(hjŽXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŠXh´K9hj‹Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjoXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŠXh´K9hj3XubjÓ)�”}”(hŒ``owner`` The module owner. ”h]”(jÙ)�”}”(hŒ ``owner``”h]”jß)�”}”(hj®Xh]”hŒowner”…”�”}”(hj°Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K:hj¨Xubjõ)�”}”(hhh]”j[)�”}”(hŒThe module owner.”h]”hŒThe module owner.”…”�”}”(hjÇXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÃXh´K:hjÄXubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¨Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÃXh´K:hj3XubjÓ)�”}”(hŒ(``mod_name`` Used for built-in modules. ”h]”(jÙ)�”}”(hŒ ``mod_name``”h]”jß)�”}”(hjçXh]”hŒmod_name”…”�”}”(hjéXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjåXubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”•Üh´K;hjáXubjõ)�”}”(hhh]”j[)�”}”(hŒUsed for built-in modules.”h]”hŒUsed for built-in modules.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jüXh´K;hjýXubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjáXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jüXh´K;hj3XubjÓ)�”}”(hŒ8``suppress_bind_attrs`` Disables bind/unbind via sysfs. ”h]”(jÙ)�”}”(hŒ``suppress_bind_attrs``”h]”jß)�”}”(hj Yh]”hŒsuppress_bind_attrs”…”�”}”(hj"Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KhjŒYubjõ)�”}”(hhh]”j[)�”}”(hŒThe open firmware table.”h]”hŒThe open firmware table.”…”�”}”(hj«Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j§Yh´K>hj¨Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŒYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j§Yh´K>hj3XubjÓ)�”}”(hŒ+``acpi_match_table`` The ACPI match table. ”h]”(jÙ)�”}”(hŒ``acpi_match_table``”h]”jß)�”}”(hjËYh]”hŒacpi_match_table”…”�”}”(hjÍYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÉYubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K?hjÅYubjõ)�”}”(hhh]”j[)�”}”(hŒThe ACPI match table.”h]”hŒThe ACPI match table.”…”�”}”(hjäYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jàYh´K?hjáYubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÅYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jàYh´K?hj3XubjÓ)�”}”(hŒŽ``probe`` Called to query the existence of a specific device, whether this driver can work with it, and bind the driver to a specific device. ”h]”(jÙ)�”}”(hŒ ``probe``”h]”jß)�”}”(hjZh]”hŒprobe”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KBhjþYubjõ)�”}”(hhh]”j[)�”}”(hŒƒCalled to query the existence of a specific device, whether this driver can work with it, and bind the driver to a specific device.”h]”hŒƒCalled to query the existence of a specific device, whether this driver can work with it, and bind the driver to a specific device.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K@hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjþYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jZh´KBhj3XubjÓ)�”}”(hX‘``sync_state`` Called to sync device state to software state after all the state tracking consumers linked to this device (present at the time of late_initcall) have successfully bound to a driver. If the device has no consumers, this function will be called at late_initcall_sync level. If the device has consumers that are never bound to a driver, this function will never get called until they do. ”h]”(jÙ)�”}”(hŒ``sync_state``”h]”jß)�”}”(hj>Zh]”hŒ sync_state”…”�”}”(hj@Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j:[h´KOhj;[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j:[h´KOhj3XubjÓ)�”}”(hŒQ``groups`` Default attributes that get created by the driver core automatically. ”h]”(jÙ)�”}”(hŒ ``groups``”h]”jß)�”}”(hj^[h]”hŒgroups”…”�”}”(hj`[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj\[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KQhjX[ubjõ)�”}”(hhh]”j[)�”}”(hŒEDefault attributes that get created by the driver core automatically.”h]”hŒEDefault attributes that get created by the driver core automatically.”…”�”}”(hjw[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KPhjt[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjX[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³js[h´KQhj3XubjÓ)�”}”(hŒa``dev_groups`` Additional attributes attached to device instance once it is bound to the driver. ”h]”(jÙ)�”}”(hŒ``dev_groups``”h]”jß)�”}”(hj˜[h]”hŒ dev_groups”…”�”}”(hjš[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj–[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KShj’[ubjõ)�”}”(hhh]”j[)�”}”(hŒQAdditional attributes attached to device instance once it is bound to the driver.”h]”hŒQAdditional attributes attached to device instance once it is bound to the driver.”…”�”}”(hj±[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KRhj®[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj’[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j­[h´KShj3XubjÓ)�”}”(hŒL``pm`` Power management operations of the device which matched this driver. ”h]”(jÙ)�”}”(hŒ``pm``”h]”jß)�”}”(hjÒ[h]”hŒpm”…”�”}”(hjÔ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÐ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KUhjÌ[ubjõ)�”}”(hhh]”j[)�”}”(hŒDPower management operations of the device which matched this driver.”h]”hŒDPower management operations of the device which matched this driver.”…”�”}”(hjë[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KThjè[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÌ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jç[h´KUhj3XubjÓ)�”}”(hŒ†``coredump`` Called when sysfs entry is written to. The device driver is expected to call the dev_coredump API resulting in a uevent. ”h]”(jÙ)�”}”(hŒ ``coredump``”h]”jß)�”}”(hj \h]”hŒcoredump”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj \ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KXhj\ubjõ)�”}”(hhh]”j[)�”}”(hŒxCalled when sysfs entry is written to. The device driver is expected to call the dev_coredump API resulting in a uevent.”h]”hŒxCalled when sysfs entry is written to. The device driver is expected to call the dev_coredump API resulting in a uevent.”…”�”}”(hj%\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KVhj"\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j!\h´KXhj3XubjÓ)�”}”(hŒT``p`` Driver core's private data, no one other than the driver core can touch this. ”h]”(jÙ)�”}”(hŒ``p``”h]”jß)�”}”(hjF\h]”hŒp”…”�”}”(hjH\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjD\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KZhj@\ubjõ)�”}”(hhh]”j[)�”}”(hŒMDriver core's private data, no one other than the driver core can touch this.”h]”hŒODriver core’s private data, no one other than the driver core can touch this.”…”�”}”(hj_\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´KYhj\\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj@\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j[\h´KZhj3XubjÓ)�”}”(hŒj``p_cb`` Callbacks private to the driver core; no one other than the driver core is allowed to touch this.”h]”(jÙ)�”}”(hŒ``p_cb``”h]”jß)�”}”(hj€\h]”hŒp_cb”…”�”}”(hj‚\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj~\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K[hjz\ubjõ)�”}”(hhh]”j[)�”}”(hŒaCallbacks private to the driver core; no one other than the driver core is allowed to touch this.”h]”hŒaCallbacks private to the driver core; no one other than the driver core is allowed to touch this.”…”�”}”(hj™\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j•\h´K[hj–\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjz\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j•\h´K[hj3Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjëWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³j÷Uh´Nubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÂ\h]”hŒ Description”…”�”}”(hjÄ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÀ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K_hhËh²hubj[)�”}”(hXThe device driver-model tracks all of the drivers known to the system. The main reason for this tracking is to enable the driver core to match up drivers with new devices. Once drivers are known objects within the system, however, a number of other things become possible. Device drivers can export information and configuration variables that are independent of any specific device.”h]”hXThe device driver-model tracks all of the drivers known to the system. The main reason for this tracking is to enable the driver core to match up drivers with new devices. Once drivers are known objects within the system, however, a number of other things become possible. Device drivers can export information and configuration variables that are independent of any specific device.”…”�”}”(hjØ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:17: ./include/linux/device/driver.h”h´K\hhËh²hubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!device_is_big_endian (C function)”Œc.device_is_big_endian”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4bool device_is_big_endian (const struct device *dev)”h]”hù)�”}”(hŒ3bool device_is_big_endian(const struct device *dev)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjü\h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kdubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü\h²hh³j ]h´Kdubj")�”}”(hŒdevice_is_big_endian”h]”j()�”}”(hŒdevice_is_big_endian”h]”hŒdevice_is_big_endian”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj]ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjü\h²hh³j ]h´Kdubj÷7)�”}”(hŒ(const struct device *dev)”h]”jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj<]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj8]ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8]ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjW]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj8]ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8]ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hju]h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjr]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jw]Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j"]sbŒc.device_is_big_endian”†”asbuh1hhj8]ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8]ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj£]h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj8]ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj°]h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj8]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj4]ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjü\h²hh³j ]h´Kdubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjø\h²hh³j ]h´Kdubah}”(h]”jó\ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j ]h´Kdhjõ\h²hubjV)�”}”(hhh]”j[)�”}”(hŒ"check if a device has BE registers”h]”hŒ"check if a device has BE registers”…”�”}”(hjÚ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kdhj×]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjõ\h²hh³j ]h´Kdubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjò]j{jò]j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hXz**Parameters** ``const struct device *dev`` Pointer to the struct device **Return** true if the device has a "big-endian" property, or if the kernel was compiled for BE *and* the device has a "native-endian" property. Returns false otherwise. **Description** Callers would nominally use ioread32be/iowrite32be if device_is_big_endian() == true, or readl/writel otherwise.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjü]h]”hŒ Parameters”…”�”}”(hjþ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjú]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Khhjö]ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ:``const struct device *dev`` Pointer to the struct device ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hj^h]”hŒconst struct device *dev”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kehj^ubjõ)�”}”(hhh]”j[)�”}”(hŒPointer to the struct device”h]”hŒPointer to the struct device”…”�”}”(hj4^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j0^h´Kehj1^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j0^h´Kehj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjö]ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjV^h]”hŒReturn”…”�”}”(hjX^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjT^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kghjö]ubj[)�”}”(hŒž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.”h]”(hŒYtrue if the device has a “big-endianâ€� property, or if the kernel was compiled for BE ”…”�”}”(hjl^h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*and*”h]”hŒand”…”�”}”(hjv^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jt^hjl^ubhŒH the device has a “native-endianâ€� property. Returns false otherwise.”…”�”}”(hjl^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kghjö]ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj‘^h]”hŒ Description”…”�”}”(hj“^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kkhjö]ubj[)�”}”(hŒpCallers would nominally use ioread32be/iowrite32be if device_is_big_endian() == true, or readl/writel otherwise.”h]”hŒpCallers would nominally use ioread32be/iowrite32be if device_is_big_endian() == true, or readl/writel otherwise.”…”�”}”(hj§^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kjhjö]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!device_is_compatible (C function)”Œc.device_is_compatible”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHbool device_is_compatible (const struct device *dev, const char *compat)”h]”hù)�”}”(hŒGbool device_is_compatible(const struct device *dev, const char *compat)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hjÖ^h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÒ^h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Ktubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ^h²hh³jã^h´Ktubj")�”}”(hŒdevice_is_compatible”h]”j()�”}”(hŒdevice_is_compatible”h]”hŒdevice_is_compatible”…”�”}”(hjö^h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjò^ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÒ^h²hh³jã^h´Ktubj÷7)�”}”(hŒ.(const struct device *dev, const char *compat)”h]”(jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj_ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj-_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj_ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjK_h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjH_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jM_Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jø^sbŒc.device_is_compatible”†”asbuh1hhj_ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjy_h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj_ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj†_h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj _ubjý7)�”}”(hŒconst char *compat”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjŸ_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj›_ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›_ubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjº_h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj›_ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›_ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖ_h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj›_ubj()�”}”(hŒcompat”h]”hŒcompat”…”�”}”(hjã_h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj›_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj _ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÒ^h²hh³jã^h´Ktubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÎ^h²hh³jã^h´Ktubah}”(h]”jÉ^ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jã^h´KthjË^h²hubjV)�”}”(hhh]”j[)�”}”(hŒ=match 'compatible' property of the device with a given string”h]”hŒAmatch ‘compatible’ property of the device with a given string”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kthj `h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjË^h²hh³jã^h´Ktubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj%`j{j%`j|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hŒÃ**Parameters** ``const struct device *dev`` Pointer to the struct device ``const char *compat`` The string to match 'compatible' property with **Return** true if matches, otherwise false.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj/`h]”hŒ Parameters”…”�”}”(hj1`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj-`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kxhj)`ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ:``const struct device *dev`` Pointer to the struct device ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hjN`h]”hŒconst struct device *dev”…”�”}”(hjP`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjL`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´KuhjH`ubjõ)�”}”(hhh]”j[)�”}”(hŒPointer to the struct device”h]”hŒPointer to the struct device”…”�”}”(hjg`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jc`h´Kuhjd`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjH`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jc`h´KuhjE`ubjÓ)�”}”(hŒF``const char *compat`` The string to match 'compatible' property with ”h]”(jÙ)�”}”(hŒ``const char *compat``”h]”jß)�”}”(hj‡`h]”hŒconst char *compat”…”�”}”(hj‰`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kvhj�`ubjõ)�”}”(hhh]”j[)�”}”(hŒ.The string to match 'compatible' property with”h]”hŒ2The string to match ‘compatible’ property with”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jœ`h´Kvhj�`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jœ`h´KvhjE`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj)`ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjÂ`h]”hŒReturn”…”�”}”(hjÄ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÀ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kxhj)`ubj[)�”}”(hŒ!true if matches, otherwise false.”h]”hŒ!true if matches, otherwise false.”…”�”}”(hjØ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´Kxhj)`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒfwnode_handle_put (C function)”Œc.fwnode_handle_put”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5void fwnode_handle_put (struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒ4void fwnode_handle_put(struct fwnode_handle *fwnode)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjah²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:20: ./include/linux/property.h”h´KÙubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjah²hh³jah´KÙubj")�”}”(hŒfwnode_handle_put”h]”j()�”}”(hŒfwnode_handle_put”h]”hŒfwnode_handle_put”…”�”}”(hj(ah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj$aubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjah²hh³jah´KÙubj÷7)�”}”(hŒ(struct fwnode_handle *fwnode)”h]”jý7)�”}”(hŒstruct fwnode_handle *fwnode”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjDah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj@aubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@aubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjbah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj_aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jdaŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j*asbŒc.fwnode_handle_put”†”asbuh1hhj@aubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@aubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj@aubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj@aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjkh²hubjV)�”}”(hhh]”j[)�”}”(hŒOperations for fwnode interface”h]”hŒOperations for fwnode interface”…”�”}”(hj‹kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kshjˆkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj>kh²hh³jVkh´Kqubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzj£kj{j£kj|‰j}‰j~‰uh1híh²hhhËh³Nh´Nubj€)�”}”(hX **Definition**:: struct fwnode_operations { struct fwnode_handle *(*get)(struct fwnode_handle *fwnode); void (*put)(struct fwnode_handle *fwnode); bool (*device_is_available)(const struct fwnode_handle *fwnode); const void *(*device_get_match_data)(const struct fwnode_handle *fwnode, const struct device *dev); bool (*device_dma_supported)(const struct fwnode_handle *fwnode); enum dev_dma_attr (*device_get_dma_attr)(const struct fwnode_handle *fwnode); bool (*property_present)(const struct fwnode_handle *fwnode, const char *propname); bool (*property_read_bool)(const struct fwnode_handle *fwnode, const char *propname); int (*property_read_int_array)(const struct fwnode_handle *fwnode, const char *propname, unsigned int elem_size, void *val, size_t nval); int (*property_read_string_array)(const struct fwnode_handle *fwnode_handle, const char *propname, const char **val, size_t nval); const char *(*get_name)(const struct fwnode_handle *fwnode); const char *(*get_name_prefix)(const struct fwnode_handle *fwnode); struct fwnode_handle *(*get_parent)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *fwnode, struct fwnode_handle *child); struct fwnode_handle * (*get_named_child_node)(const struct fwnode_handle *fwnode, const char *name); int (*get_reference_args)(const struct fwnode_handle *fwnode, const char *prop, const char *nargs_prop, unsigned int nargs, unsigned int index, struct fwnode_reference_args *args); struct fwnode_handle * (*graph_get_next_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_handle *prev); struct fwnode_handle * (*graph_get_remote_endpoint)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*graph_get_port_parent)(struct fwnode_handle *fwnode); int (*graph_parse_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_endpoint *endpoint); void __iomem *(*iomap)(struct fwnode_handle *fwnode, int index); int (*irq_get)(const struct fwnode_handle *fwnode, unsigned int index); int (*add_links)(struct fwnode_handle *fwnode); }; **Members** ``get`` Get a reference to an fwnode. ``put`` Put a reference to an fwnode. ``device_is_available`` Return true if the device is available. ``device_get_match_data`` Return the device driver match data. ``device_dma_supported`` Return true if DMA is supported. ``device_get_dma_attr`` Return the device DMA attribute. ``property_present`` Return true if a property is present. ``property_read_bool`` Return a boolean property value. ``property_read_int_array`` Read an array of integer properties. Return zero on success, a negative error code otherwise. ``property_read_string_array`` Read an array of string properties. Return zero on success, a negative error code otherwise. ``get_name`` Return the name of an fwnode. ``get_name_prefix`` Get a prefix for a node (for printing purposes). ``get_parent`` Return the parent of an fwnode. ``get_next_child_node`` Return the next child node in an iteration. ``get_named_child_node`` Return a child node with a given name. ``get_reference_args`` Return a reference pointed to by a property, with args ``graph_get_next_endpoint`` Return an endpoint node in an iteration. ``graph_get_remote_endpoint`` Return the remote endpoint node of a local endpoint node. ``graph_get_port_parent`` Return the parent node of a port node. ``graph_parse_endpoint`` Parse endpoint for port and endpoint id. ``iomap`` Map the I/O memory of a given index for a fwnode. ``irq_get`` Get the IRQ of a given index for a fwnode. ``add_links`` Create fwnode links to all the suppliers of the fwnode. Return zero on success, a negative error code otherwise.”•h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¯kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj«kubhŒ:”…”�”}”(hj«kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kwhj§kubj¥)�”}”(hXXstruct fwnode_operations { struct fwnode_handle *(*get)(struct fwnode_handle *fwnode); void (*put)(struct fwnode_handle *fwnode); bool (*device_is_available)(const struct fwnode_handle *fwnode); const void *(*device_get_match_data)(const struct fwnode_handle *fwnode, const struct device *dev); bool (*device_dma_supported)(const struct fwnode_handle *fwnode); enum dev_dma_attr (*device_get_dma_attr)(const struct fwnode_handle *fwnode); bool (*property_present)(const struct fwnode_handle *fwnode, const char *propname); bool (*property_read_bool)(const struct fwnode_handle *fwnode, const char *propname); int (*property_read_int_array)(const struct fwnode_handle *fwnode, const char *propname, unsigned int elem_size, void *val, size_t nval); int (*property_read_string_array)(const struct fwnode_handle *fwnode_handle, const char *propname, const char **val, size_t nval); const char *(*get_name)(const struct fwnode_handle *fwnode); const char *(*get_name_prefix)(const struct fwnode_handle *fwnode); struct fwnode_handle *(*get_parent)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *fwnode, struct fwnode_handle *child); struct fwnode_handle * (*get_named_child_node)(const struct fwnode_handle *fwnode, const char *name); int (*get_reference_args)(const struct fwnode_handle *fwnode, const char *prop, const char *nargs_prop, unsigned int nargs, unsigned int index, struct fwnode_reference_args *args); struct fwnode_handle * (*graph_get_next_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_handle *prev); struct fwnode_handle * (*graph_get_remote_endpoint)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*graph_get_port_parent)(struct fwnode_handle *fwnode); int (*graph_parse_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_endpoint *endpoint); void __iomem *(*iomap)(struct fwnode_handle *fwnode, int index); int (*irq_get)(const struct fwnode_handle *fwnode, unsigned int index); int (*add_links)(struct fwnode_handle *fwnode); };”h]”hXXstruct fwnode_operations { struct fwnode_handle *(*get)(struct fwnode_handle *fwnode); void (*put)(struct fwnode_handle *fwnode); bool (*device_is_available)(const struct fwnode_handle *fwnode); const void *(*device_get_match_data)(const struct fwnode_handle *fwnode, const struct device *dev); bool (*device_dma_supported)(const struct fwnode_handle *fwnode); enum dev_dma_attr (*device_get_dma_attr)(const struct fwnode_handle *fwnode); bool (*property_present)(const struct fwnode_handle *fwnode, const char *propname); bool (*property_read_bool)(const struct fwnode_handle *fwnode, const char *propname); int (*property_read_int_array)(const struct fwnode_handle *fwnode, const char *propname, unsigned int elem_size, void *val, size_t nval); int (*property_read_string_array)(const struct fwnode_handle *fwnode_handle, const char *propname, const char **val, size_t nval); const char *(*get_name)(const struct fwnode_handle *fwnode); const char *(*get_name_prefix)(const struct fwnode_handle *fwnode); struct fwnode_handle *(*get_parent)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *fwnode, struct fwnode_handle *child); struct fwnode_handle * (*get_named_child_node)(const struct fwnode_handle *fwnode, const char *name); int (*get_reference_args)(const struct fwnode_handle *fwnode, const char *prop, const char *nargs_prop, unsigned int nargs, unsigned int index, struct fwnode_reference_args *args); struct fwnode_handle * (*graph_get_next_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_handle *prev); struct fwnode_handle * (*graph_get_remote_endpoint)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*graph_get_port_parent)(struct fwnode_handle *fwnode); int (*graph_parse_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_endpoint *endpoint); void __iomem *(*iomap)(struct fwnode_handle *fwnode, int index); int (*irq_get)(const struct fwnode_handle *fwnode, unsigned int index); int (*add_links)(struct fwnode_handle *fwnode); };”…”�”}”hjÈksbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kyhj§kubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hjÙkh]”hŒMembers”…”�”}”(hjÛkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj×kubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K“hj§kubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ&``get`` Get a reference to an fwnode. ”h]”(jÙ)�”}”(hŒ``get``”h]”jß)�”}”(hjøkh]”hŒget”…”�”}”(hjúkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjökubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kuhjòkubjõ)�”}”(hhh]”j[)�”}”(hŒGet a reference to an fwnode.”h]”hŒGet a reference to an fwnode.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j lh´Kuhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjòkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j lh´KuhjïkubjÓ)�”}”(hŒ&``put`` Put a reference to an fwnode. ”h]”(jÙ)�”}”(hŒ``put``”h]”jß)�”}”(hj1lh]”hŒput”…”�”}”(hj3lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/lubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kvhj+lubjõ)�”}”(hhh]”j[)�”}”(hŒPut a reference to an fwnode.”h]”hŒPut a reference to an fwnode.”…”�”}”(hjJlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jFlh´KvhjGlubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj+lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jFlh´KvhjïkubjÓ)�”}”(hŒ@``device_is_available`` Return true if the device is available. ”h]”(jÙ)�”}”(hŒ``device_is_available``”h]”jß)�”}”(hjjlh]”hŒdevice_is_available”…”�”}”(hjllh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjhlubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kwhjdlubjõ)�”}”(hhh]”j[)�”}”(hŒ'Return true if the device is available.”h]”hŒ'Return true if the device is available.”…”�”}”(hjƒlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jlh´Kwhj€lubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjdlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jlh´KwhjïkubjÓ)�”}”(hŒ?``device_get_match_data`` Return the device driver match data. ”h]”(jÙ)�”}”(hŒ``device_get_match_data``”h]”jß)�”}”(hj£lh]”hŒdevice_get_match_data”…”�”}”(hj¥lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡lubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kxhj�lubjõ)�”}”(hhh]”j[)�”}”(hŒ$Return the device driver match data.”h]”hŒ$Return the device driver match data.”…”�”}”(hj¼lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¸lh´Kxhj¹lubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¸lh´KxhjïkubjÓ)�”}”(hŒ:``device_dma_supported`` Return true if DMA is supported. ”h]”(jÙ)�”}”(hŒ``device_dma_supported``”h]”jß)�”}”(hjÜlh]”hŒdevice_dma_supported”…”�”}”(hjÞlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚlubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´KyhjÖlubjõ)�”}”(hhh]”j[)�”}”(hŒ Return true if DMA is supported.”h]”hŒ Return true if DMA is supported.”…”�”}”(hjõlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jñlh´Kyhjòlubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÖlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jñlh´KyhjïkubjÓ)�”}”(hŒ9``device_get_dma_attr`` Return the device DMA attribute. ”h]”(jÙ)�”}”(hŒ``device_get_dma_attr``”h]”jß)�”}”(hjmh]”hŒdevice_get_dma_attr”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kzhjmubjõ)�”}”(hhh]”j[)�”}”(hŒ Return the device DMA attribute.”h]”hŒ Return the device DMA attribute.”…”�”}”(hj.mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j*mh´Kzhj+mubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j*mh´KzhjïkubjÓ)�”}”(hŒ;``property_present`` Return true if a property is present. ”h]”(jÙ)�”}”(hŒ``property_present``”h]”jß)�”}”(hjNmh]”hŒproperty_present”…”�”}”(hjPmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLmubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K{hjHmubjõ)�”}”(hhh]”j[)�”}”(hŒ%Return true if a property is present.”h]”hŒ%Return true if a property is present.”…”�”}”(hjgmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jcmh´K{hjdmubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjHmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jcmh´K{hjïkubjÓ)�”}”(hŒ8``property_read_bool`` Return a boolean property value. ”h]”(jÙ)�”}”(hŒ``property_read_bool``”h]”jß)�”}”(hj‡mh]”hŒproperty_read_bool”…”�”}”(hj‰mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…mubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K|hj�mubjõ)�”}”(hhh]”j[)�”}”(hŒ Return a boolean property value.”h]”hŒ Return a boolean property value.”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jœmh´K|hj�mubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jœmh´K|hjïkubjÓ)�”}”(hŒz``property_read_int_array`` Read an array of integer properties. Return zero on success, a negative error code otherwise. ”h]”(jÙ)�”}”(hŒ``property_read_int_array``”h]”jß)�”}”(hjÀmh]”hŒproperty_read_int_array”…”�”}”(hjÂmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾mubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K~hjºmubjõ)�”}”(hhh]”j[)�”}”(hŒ]Read an array of integer properties. Return zero on success, a negative error code otherwise.”h]”hŒ]Read an array of integer properties. Return zero on success, a negative error code otherwise.”…”�”}”(hjÙmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K}hjÖmubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjºmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÕmh´K~hjïkubjÓ)�”}”(hŒ|``property_read_string_array`` Read an array of string properties. Return zero on success, a negative error code otherwise. ”h]”(jÙ)�”}”(hŒ``property_read_string_array``”h]”jß)�”}”(hjúmh]”hŒproperty_read_string_array”…”�”}”(hjümh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjømubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K€hjômubjõ)�”}”(hhh]”j[)�”}”(hŒ\Read an array of string properties. Return zero on success, a negative error code otherwise.”h]”hŒ\Read an array of string properties. Return zero on success, a negative error code otherwise.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Khjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjômubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jnh´K€hjïkubjÓ)�”}”(hŒ+``get_name`` Return the name of an fwnode. ”h]”(jÙ)�”}”(hŒ ``get_name``”h]”jß)�”}”(hj4nh]”hŒget_name”…”�”}”(hj6nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2nubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K�hj.nubjõ)�”}”(hhh]”j[)�”}”(hŒReturn the name of an fwnode.”h]”hŒReturn the name of an fwnode.”…”�”}”(hjMnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jInh´K�hjJnubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj.nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jInh´K�hjïkubjÓ)�”}”(hŒE``get_name_prefix`` Get a prefix for a node (for printing purposes). ”h]”(jÙ)�”}”(hŒ``get_name_prefix``”h]”jß)�”}”(hjmnh]”hŒget_name_prefix”…”�”}”(hjonh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjknubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K‚hjgnubjõ)�”}”(hhh]”j[)�”}”(hŒ0Get a prefix for a node (for printing purposes).”h]”hŒ0Get a prefix for a node (for printing purposes).”…”�”}”(hj†nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‚nh´K‚hjƒnubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjgnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‚nh´K‚hjïkubjÓ)�”}”(hŒ/``get_parent`` Return the parent of an fwnode. ”h]”(jÙ)�”}”(hŒ``get_parent``”h]”jß)�”}”(hj¦nh]”hŒ get_parent”…”�”}”(hj¨nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¤nubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´Kƒhj nubjõ)�”}”(hhh]”j[)�”}”(hŒReturn the parent of an fwnode.”h]”hŒReturn the parent of an fwnode.”…”�”}”(hj¿nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j»nh´Kƒhj¼nubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j»nh´KƒhjïkubjÓ)�”}”(hŒD``get_next_child_node`` Return the next child node in an iteration. ”h]”(jÙ)�”}”(hŒ``get_next_child_node``”h]”jß)�”}”(hjßnh]”hŒget_next_child_node”…”�”}”(hjánh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÝnubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K„hjÙnubjõ)�”}”(hhh]”j[)�”}”(hŒ+Return the next child node in an iteration.”h]”hŒ+Return the next child node in an iteration.”…”�”}”(hjønh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jônh´K„hjõnubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÙnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jônh´K„hjïkubjÓ)�”}”(hŒ@``get_named_child_node`` Return a child node with a given name. ”h]”(jÙ)�”}”(hŒ``get_named_child_node``”h]”jß)�”}”(hjoh]”hŒget_named_child_node”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K…hjoubjõ)�”}”(hhh]”j[)�”}”(hŒ&Return a child node with a given name.”h]”hŒ&Return a child node with a given name.”…”�”}”(hj1oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j-oh´K…hj.oubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j-oh´K…hjïkubjÓ)�”}”(hŒN``get_reference_args`` Return a reference pointed to by a property, with args ”h]”(jÙ)�”}”(hŒ``get_reference_args``”h]”jß)�”}”(hjQoh]”hŒget_reference_args”…”�”}”(hjSoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjOoubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K†hjKoubjõ)�”}”(hhh]”j[)�”}”(hŒ6Return a reference pointed to by a property, with args”h]”hŒ6Return a reference pointed to by a property, with args”…”�”}”(hjjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jfoh´K†hjgoubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjKoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jfoh´K†hjïkubjÓ)�”}”(hŒE``graph_get_next_endpoint`` Return an endpoint node in an iteration. ”h]”(jÙ)�”}”(hŒ``graph_get_next_endpoint``”h]”jß)�”}”(hjŠoh]”hŒgraph_get_next_endpoint”…”�”}”(hjŒoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆoubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K‡hj„oubjõ)�”}”(hhh]”j[)�”}”(hŒ(Return an endpoint node in an iteration.”h]”hŒ(Return an endpoint node in an iteration.”…”�”}”(hj£oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŸoh´K‡hj oubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj„oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŸoh´K‡hjïkubjÓ)�”}”(hŒX``graph_get_remote_endpoint`` Return the remote endpoint node of a local endpoint node. ”h]”(jÙ)�”}”(hŒ``graph_get_remote_endpoint``”h]”jß)�”}”(hjÃoh]”hŒgraph_get_remote_endpoint”…”�”}”(hjÅoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁoubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K‰hj½oubjõ)�”}”(hhh]”j[)�”}”(hŒ9Return the remote endpoint node of a local endpoint node.”h]”hŒ9Return the remote endpoint node of a local endpoint node.”…”�”}”(hjÜoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´KˆhjÙoubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj½oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jØoh´K‰hjïkubjÓ)�”}”(hŒA``graph_get_port_parent`` Return the parent node of a port node. ”h]”(jÙ)�”}”(hŒ``graph_get_port_parent``”h]”jß)�”}”(hjýoh]”hŒgraph_get_port_parent”…”�”}”(hjÿoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjûoubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´KŠhj÷oubjõ)�”}”(hhh]”j[)�”}”(hŒ&Return the parent node of a port node.”h]”hŒ&Return the parent node of a port node.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jph´KŠhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj÷oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jph´KŠhjïkubjÓ)�”}”(hŒB``graph_parse_endpoint`` Parse endpoint for port and endpoint id. ”h]”(jÙ)�”}”(hŒ``graph_parse_endpoint``”h]”jß)�”}”(hj6ph]”hŒgraph_parse_endpoint”…”�”}”(hj8ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj4pubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K‹hj0pubjõ)�”}”(hhh]”j[)�”}”(hŒ(Parse endpoint for port and endpoint id.”h]”hŒ(Parse endpoint for port and endpoint id.”…”�”}”(hjOph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jKph´K‹hjLpubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj0pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jKph´K‹hjïkubjÓ)�”}”(hŒ<``iomap`` Map the I/O memory of a given index for a fwnode. ”h]”(jÙ)�”}”(hŒ ``iomap``”h]”jß)�”}”(hjoph]”hŒiomap”…”�”}”(hjqph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjmpubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´KŒhjipubjõ)�”}”(hhh]”j[)�”}”(hŒ1Map the I/O memory of a given index for a fwnode.”h]”hŒ1Map the I/O memory of a given index for a fwnode.”…”�”}”(hjˆph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j„ph´KŒhj…pubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjipubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j„ph´KŒhjïkubjÓ)�”}”(hŒ7``irq_get`` Get the IRQ of a given index for a fwnode. ”h]”(jÙ)�”}”(hŒ ``irq_get``”h]”jß)�”}”(hj¨ph]”hŒirq_get”…”�”}”(hjªph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦pubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´K�hj¢pubjõ)�”}”(hhh]”j[)�”}”(hŒ*Get the IRQ of a given index for a fwnode.”h]”hŒ*Get the IRQ of a given index for a fwnode.”…”�”}”(hjÁph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j½ph´K�hj¾pubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¢pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j½ph´K�hjïkubjÓ)�”}”(hŒ~``add_links`` Create fwnode links to all the suppliers of the fwnode. Return zero on success, a negative error code otherwise.”h]”(jÙ)�”}”(hŒ ``add_links``”h]”jß)�”}”(hjáph]”hŒ add_links”…”�”}”(hjãph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjßpubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:22: ./include/linux/fwnode.h”h´KŽhjÛpubjõ)�”}”(hhh]”j[)�”}”(hŒpCreate fwnode links to all the suppliers of the fwnode. Return zero on success, a negative error code otherwise.”h]”hŒpCreate fwnode links to all the suppliers of the fwnode. Return zero on success, a negative error code otherwise.”…”�”}”(hjúph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jöph´KŽhj÷pubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÛpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jöph´KŽhjïkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj§kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhËh²hh³Nh´Nubeh}”(h]”Œ(the-basic-device-driver-model-structures”ah ]”h"]”Œ(the basic device driver-model structures”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒDevice Drivers Base”h]”hŒDevice Drivers Base”…”�”}”(hj,qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj)qh²hh³hÊh´KubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_init (C function)”Œ c.driver_init”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid driver_init (void)”h]”hù)�”}”(hŒvoid driver_init(void)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSqh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjOqh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:27: ./drivers/base/init.c”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOqh²hh³jaqh´Kubj")�”}”(hŒ driver_init”h]”j()�”}”(hŒ driver_init”h]”hŒ driver_init”…”�”}”(hjtqh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjpqubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjOqh²hh³jaqh´Kubj÷7)�”}”(hŒ(void)”h]”jý7)�”}”(hŒvoid”h]”j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjŒqubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjˆqubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjOqh²hh³jaqh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjKqh²hh³jaqh´Kubah}”(h]”jFqah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jaqh´KhjHqh²hubjV)�”}”(hhh]”j[)�”}”(hŒinitialize driver model.”h]”hŒinitialize driver model.”…”�”}”(hjºqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:27: ./drivers/base/init.c”h´Khj·qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjHqh²hh³jaqh´Kubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÒqj{jÒqj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ�**Parameters** ``void`` no arguments **Description** Call the driver model init functions to initialize their subsystems. Called early from init/main.c.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÜqh]”hŒ Parameters”…”�”}”(hjÞqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÚqubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:27: ./drivers/base/init.c”h´KhjÖqubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``void`` no arguments ”h]”(jÙ)�”}”(hŒ``void``”h]”jß)�”}”(hjûqh]”hŒvoid”…”�”}”(hjýqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjùqubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:27: ./drivers/base/init.c”h´Khjõqubjõ)�”}”(hhh]”j[)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jrh´Khjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjõqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jrh´Khjòqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÖqubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj6rh]”hŒ Description”…”�”}”(hj8rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj4rubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:27: ./drivers/base/init.c”h´KhjÖqubj[)�”}”(hŒcCall the driver model init functions to initialize their subsystems. Called early from init/main.c.”h]”hŒcCall the driver model init functions to initialize their subsystems. Called early from init/main.c.”…”�”}”(hjLrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:27: ./drivers/base/init.c”h´KhjÖqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'driver_find_device_by_name (C function)”Œc.driver_find_device_by_name”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ^struct device * driver_find_device_by_name (const struct device_driver *drv, const char *name)”h]”hù)�”}”(hŒ\struct device *driver_find_device_by_name(const struct device_driver *drv, const char *name)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj{rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjwrh²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K¬ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwrh²hh³jˆrh´K¬ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjšrh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj—rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jœrŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdriver_find_device_by_name”sbŒc.driver_find_device_by_name”†”asbuh1hhjwrh²hh³jˆrh´K¬ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwrh²hh³jˆrh´K¬ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÉrh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjwrh²hh³jˆrh´K¬ubj")�”}”(hŒdriver_find_device_by_name”h]”j()�”}”(hj¸rh]”hŒdriver_find_device_by_name”…”�”}”(hjÚrh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÖrubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjwrh²hh³jˆrh´K¬ubj÷7)�”}”(hŒ3(const struct device_driver *drv, const char *name)”h]”(jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjõrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjñrubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñrubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjñrubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñrubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj.sh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj+subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j0sŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¶rŒc.driver_find_device_by_name”†”asbuh1hhjñrubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñrubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjZsh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjñrubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjgsh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjñrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjírubjý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj€sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj|subj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|subj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj›sh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj|subj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|subjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj·sh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj|subj()�”}”(hŒname”h]”hŒname”…”�”}”(hjÄsh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj|subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjírubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjwrh²hh³jˆrh´K¬ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjsrh²hh³jˆrh´K¬ubah}”(h]”jnrah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jˆrh´K¬hjprh²hubjV)�”}”(hhh]”j[)�”}”(hŒDdevice iterator for locating a particular device of a specific name.”h]”hŒDdevice iterator for locating a particular device of a specific name.”…”�”}”(hjîsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K¬hjësh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjprh²hh³jˆrh´K¬ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjtj{jtj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ„**Parameters** ``const struct device_driver *drv`` the driver we're iterating ``const char *name`` name of the device to match”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjth]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K°hj tubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ?``const struct device_driver *drv`` the driver we're iterating ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hj/th]”hŒconst struct device_driver *drv”…”�”}”(hj1th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj-tubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K®hj)tubjõ)�”}”(hhh]”j[)�”}”(hŒthe driver we're iterating”h]”hŒthe driver we’re iterating”…”�”}”(hjHth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jDth´K®hjEtubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj)tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jDth´K®hj&tubjÓ)�”}”(hŒ0``const char *name`` name of the device to match”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hjhth]”hŒconst char *name”…”�”}”(hjjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjftubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K°hjbtubjõ)�”}”(hhh]”j[)�”}”(hŒname of the device to match”h]”hŒname of the device to match”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K¯hj~tubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjbtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j}th´K°hj&tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*driver_find_device_by_of_node (C function)”Œc.driver_find_device_by_of_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒmstruct device * driver_find_device_by_of_node (const struct device_driver *drv, const struct device_node *np)”h]”hù)�”}”(hŒkstruct device *driver_find_device_by_of_node(const struct device_driver *drv, const struct device_node *np)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÂth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¾th²hh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:30: ./include/linux/device/driver.h”h´K¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾th²hh³jÏth´K¸ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjáth²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÞtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jãtŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdriver_find_device_by_of_node”sbŒc.driver_find_device_by_of_node”†”asbuh1hhj¾th²hh³jÏth´K¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾th²hh³jÏth´K¸ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¾th²hh³jÏth´K¸ubj")�”}”(hŒdriver_find_device_by_of_node”h]”j()�”}”(hjÿth]”hŒdriver_find_device_by_of_node”…”�”}”(hj!uh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjuubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¾th²hh³jÏth´K¸ubj÷7)�”}”(hŒ?(const struct device_driver *drv, const struct device_node *np)”h]”(jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯„h²hh³jÀ„h´K>ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÒ„h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÏ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÔ„Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdriver_find_device”sbŒc.driver_find_device”†”asbuh1hhj¯„h²hh³jÀ„h´K>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯„h²hh³jÀ„h´K>ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¯„h²hh³jÀ„h´K>ubj")�”}”(hŒdriver_find_device”h]”j()�”}”(hjð„h]”hŒdriver_find_device”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj…ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¯„h²hh³jÀ„h´K>ubj÷7)�”}”(hŒ_(const struct device_driver *drv, struct device *start, const void *data, device_match_t match)”h]”(jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj-…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj)…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)…ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjH…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj)…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)…ubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjf…h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjc…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jh…Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jc.driver_find_device”†”asbuh1hhj)…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)…ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj’…h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj)…ubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjŸ…h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj)…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj%…ubjý7)�”}”(hŒstruct device *start”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¸…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj´…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´…ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÖ…h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÓ…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jØ…Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jc.driver_find_device”†”asbuh1hhj´…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´…ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj´…ubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj%…ubjý7)�”}”(hŒconst void *data”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj(†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj$†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$†ubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjC†h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj$†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$†ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj_†h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj$†ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjl†h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj$†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj%…ubjý7)�”}”(hŒdevice_match_t match”h]”(h)�”}”(hhh]”j()�”}”(hŒdevice_match_t”h]”hŒdevice_match_t”…”�”}”(hjˆ†h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj…†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jІŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jc.driver_find_device”†”asbuh1hhj�†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�†ubj()�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj´†h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj%…ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¯„h²hh³jÀ„h´K>ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj«„h²hh³jÀ„h´K>ubah}”(h]”j¦„ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÀ„h´K>hj¨„h²hubjV)�”}”(hhh]”j[)�”}”(hŒ1device iterator for locating a particular device.”h]”hŒ1device iterator for locating a particular device.”…”�”}”(hjÞ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K>hjÛ†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¨„h²hh³jÀ„h´K>ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjö†j{jö†j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXu**Parameters** ``const struct device_driver *drv`` The device's driver ``struct device *start`` Device to begin with ``const void *data`` Data to pass to match function ``device_match_t match`` Callback function to check device **Description** This is similar to the driver_for_each_device() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback. The callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjþ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KBhjú†ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ8``const struct device_driver *drv`` The device's driver ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hj‡h]”hŒconst struct device_driver *drv”…”�”}”(hj!‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K?hj‡ubjõ)�”}”(hhh]”j[)�”}”(hŒThe device's driver”h]”hŒThe device’s driver”…”�”}”(hj8‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j4‡h´K?hj5‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j4‡h´K?hj‡ubjÓ)�”}”(hŒ.``struct device *start`` Device to begin with ”h]”(jÙ)�”}”(hŒ``struct device *start``”h]”jß)�”}”(hjX‡h]”hŒstruct device *start”…”�”}”(hjZ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjV‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K@hjR‡ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to begin with”h]”hŒDevice to begin with”…”�”}”(hjq‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jm‡h´K@hjn‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjR‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jm‡h´K@hj‡ubjÓ)�”}”(hŒ4``const void *data`` Data to pass to match function ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hj‘‡h]”hŒconst void *data”…”�”}”(hj“‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KAhj‹‡ubjõ)�”}”(hhh]”j[)�”}”(hŒData to pass to match function”h]”hŒData to pass to match function”…”�”}”(hjª‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¦‡h´KAhj§‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‹‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¦‡h´KAhj‡ubjÓ)�”}”(hŒ;``device_match_t match`` Callback function to check device ”h]”(jÙ)�”}”(hŒ``device_match_t match``”h]”jß)�”}”(hjʇh]”hŒdevice_match_t match”…”�”}”(hj̇h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjȇubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KBhjćubjõ)�”}”(hhh]”j[)�”}”(hŒ!Callback function to check device”h]”hŒ!Callback function to check device”…”�”}”(hjã‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j߇h´KBhjà‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjćubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j߇h´KBhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjú†ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjˆh]”hŒ Description”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KDhjú†ubj[)�”}”(hŒ®This is similar to the driver_for_each_device() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback.”h]”(hŒŸThis is similar to the driver_for_each_device() function above, but it returns a reference to a device that is ‘found’ for later use, as determined by the ”…”�”}”(hjˆh²hh³Nh´NubjŠ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj#ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjˆubhŒ callback.”…”�”}”(hjˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KChjú†ubj[)�”}”(hŒÃThe callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”h]”hŒÅThe callback should return 0 if the device doesn’t match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”…”�”}”(hj<ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KGhjú†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_create_file (C function)”Œc.driver_create_file”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ]int driver_create_file (const struct device_driver *drv, const struct driver_attribute *attr)”h]”hù)�”}”(hŒ\int driver_create_file(const struct device_driver *drv, const struct driver_attribute *attr)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjkˆh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjgˆh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´Kdubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgˆh²hh³jyˆh´Kdubj")�”}”(hŒdriver_create_file”h]”j()�”}”(hŒdriver_create_file”h]”hŒdriver_create_file”…”�”}”(hjŒˆh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjˆˆubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjgˆh²hh³jyˆh´Kdubj÷7)�”}”(hŒF(const struct device_driver *drv, const struct driver_attribute *attr)”h]”(jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¨ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¤ˆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ˆubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¤ˆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjЈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ˆubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjáˆh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÞˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j㈌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jŽˆsbŒc.driver_create_file”†”asbuh1hhj¤ˆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ˆubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¤ˆubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¤ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj ˆubjý7)�”}”(hŒ#const struct driver_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj5‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj1‰ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1‰ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjP‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj1‰ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1‰ubh)�”}”(hhh]”j()�”}”(hŒdriver_attribute”h]”hŒdriver_attribute”…”�”}”(hjn‰h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjk‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jp‰Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jýˆŒc.driver_create_file”†”asbuh1hhj1‰ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1‰ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjš‰h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj1‰ubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hj§‰h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj1‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj ˆubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjgˆh²hh³jyˆh´Kdubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjcˆh²hh³jyˆh´Kdubah}”(h]”j^ˆah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jyˆh´Kdhj`ˆh²hubjV)�”}”(hhh]”j[)�”}”(hŒcreate sysfs file for driver.”h]”hŒcreate sysfs file for driver.”…”�”}”(hjщh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KdhjΉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj`ˆh²hh³jyˆh´Kdubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjé‰j{jé‰j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ…**Parameters** ``const struct device_driver *drv`` driver. ``const struct driver_attribute *attr`` driver attribute descriptor.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjó‰h]”hŒ Parameters”…”�”}”(hjõ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjñ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´Khhjí‰ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ,``const struct device_driver *drv`` driver. ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hjŠh]”hŒconst struct device_driver *drv”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´Kehj Šubjõ)�”}”(hhh]”j[)�”}”(hŒdriver.”h]”hŒdriver.”…”�”}”(hj+Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j'Šh´Kehj(Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j'Šh´Kehj ŠubjÓ)�”}”(hŒD``const struct driver_attribute *attr`` driver attribute descriptor.”h]”(jÙ)�”}”(hŒ'``const struct driver_attribute *attr``”h]”jß)�”}”(hjKŠh]”hŒ#const struct driver_attribute *attr”…”�”}”(hjMŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjIŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KghjEŠubjõ)�”}”(hhh]”j[)�”}”(hŒdriver attribute descriptor.”h]”hŒdriver attribute descriptor.”…”�”}”(hjdŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KfhjaŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjEŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j`Šh´Kghj Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjí‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_remove_file (C function)”Œc.driver_remove_file”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ^void driver_remove_file (const struct device_driver *drv, const struct driver_attribute *attr)”h]”hù)�”}”(hŒ]void driver_remove_file(const struct device_driver *drv, const struct driver_attribute *attr)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥Šh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¡Šh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´Kvubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Šh²hh³j³Šh´Kvubj")�”}”(hŒdriver_remove_file”h]”j()�”}”(hŒdriver_remove_file”h]”hŒdriver_remove_file”…”�”}”(hjÆŠh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŠubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¡Šh²hh³j³Šh´Kvubj÷7)�”}”(hŒF(const struct device_driver *drv, const struct driver_attribute *attr)”h]”(jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjâŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÞŠubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞŠubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjýŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÞŠubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞŠubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j‹Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÈŠsbŒc.driver_remove_file”†”asbuh1hhjÞŠubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞŠubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjI‹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÞŠubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjV‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÞŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÚŠubjý7)�”}”(hŒ#const struct driver_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjo‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjk‹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk‹ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŠ‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjk‹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk‹ubh)�”}”(hhh]”j()�”}”(hŒdriver_attribute”h]”hŒdriver_attribute”…”�”}”(hj¨‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jª‹Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j7‹Œc.driver_remove_file”†”asbuh1hhjk‹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk‹ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÔ‹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjk‹ubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hjá‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjk‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÚŠubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¡Šh²hh³j³Šh´Kvubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj�Šh²hh³j³Šh´Kvubah}”(h]”j˜Šah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j³Šh´KvhjšŠh²hubjV)�”}”(hhh]”j[)�”}”(hŒremove sysfs file for driver.”h]”hŒremove sysfs file for driver.”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KvhjŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjšŠh²hh³j³Šh´Kvubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj#Œj{j#Œj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ…**Parameters** ``const struct device_driver *drv`` driver. ``const struct driver_attribute *attr`` driver attribute descriptor.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj-Œh]”hŒ Parameters”…”�”}”(hj/Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj+Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´Kzhj'ŒubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ,``const struct device_driver *drv`` driver. ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hjLŒh]”hŒconst struct device_driver *drv”…”�”}”(hjNŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KwhjFŒubjõ)�”}”(hhh]”j[)�”}”(hŒdriver.”h]”hŒdriver.”…”�”}”(hjeŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jaŒh´KwhjbŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjFŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jaŒh´KwhjCŒubjÓ)�”}”(hŒD``const struct driver_attribute *attr`` driver attribute descriptor.”h]”(jÙ)�”}”(hŒ'``const struct driver_attribute *attr``”h]”jß)�”}”(hj…Œh]”hŒ#const struct driver_attribute *attr”…”�”}”(hj‡Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjƒŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KyhjŒubjõ)�”}”(hhh]”j[)�”}”(hŒdriver attribute descriptor.”h]”hŒdriver attribute descriptor.”…”�”}”(hjžŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´Kxhj›Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jšŒh´KyhjCŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj'Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_register (C function)”Œc.driver_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int driver_register (struct device_driver *drv)”h]”hù)�”}”(hŒ.int driver_register(struct device_driver *drv)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjߌh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÛŒh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛŒh²hh³jíŒh´K�ubj")�”}”(hŒdriver_register”h]”j()�”}”(hŒdriver_register”h]”hŒdriver_register”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjüŒubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÛŒh²hh³jíŒh´K�ubj÷7)�”}”(hŒ(struct device_driver *drv)”h]”jý7)�”}”(hŒstruct device_driver *drv”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj7�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j<�Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j�sbŒc.driver_register”†”asbuh1hhj�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj�ubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hju�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÛŒh²hh³jíŒh´K�ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj׌h²hh³jíŒh´K�ubah}”(h]”jÒŒah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jíŒh´K�hjÔŒh²hubjV)�”}”(hhh]”j[)�”}”(hŒregister driver with bus”h]”hŒregister driver with bus”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K�hjœ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÔŒh²hh³jíŒh´K�ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj·�j{j·�j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÔ**Parameters** ``struct device_driver *drv`` driver to register **Description** We pass off most of the work to the bus_add_driver() call, since most of the things we have to do deal with the bus structures.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÁ�h]”hŒ Parameters”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¿�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K“hj»�ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ1``struct device_driver *drv`` driver to register ”h]”(jÙ)�”}”(hŒ``struct device_driver *drv``”h]”jß)�”}”(hjà�h]”hŒstruct device_driver *drv”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÞ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K�hjÚ�ubjõ)�”}”(hhh]”j[)�”}”(hŒdriver to register”h]”hŒdriver to register”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jõ�h´K�hjö�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÚ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jõ�h´K�hj×�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj»�ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjŽh]”hŒ Description”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K’hj»�ubj[)�”}”(hŒWe pass off most of the work to the bus_add_driver() call, since most of the things we have to do deal with the bus structures.”h]”hŒWe pass off most of the work to the bus_add_driver() call, since most of the things we have to do deal with the bus structures.”…”�”}”(hj1Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K‘hj»�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_unregister (C function)”Œc.driver_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2void driver_unregister (struct device_driver *drv)”h]”hù)�”}”(hŒ1void driver_unregister(struct device_driver *drv)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`Žh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj\Žh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K¾ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\Žh²hh³jnŽh´K¾ubj")�”}”(hŒdriver_unregister”h]”j()�”}”(hŒdriver_unregister”h]”hŒdriver_unregister”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj}Žubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj\Žh²hh³jnŽh´K¾ubj÷7)�”}”(hŒ(struct device_driver *drv)”h]”jý7)�”}”(hŒstruct device_driver *drv”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj™Žubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™Žubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj»Žh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¸Žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j½ŽŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jƒŽsbŒc.driver_unregister”†”asbuh1hhj™Žubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™ŽubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjéŽh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj™Žubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjöŽh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj™Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj•Žubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj\Žh²hh³jnŽh´K¾ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjXŽh²hh³jnŽh´K¾ubah}”(h]”jSŽah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jnŽh´K¾hjUŽh²hubjV)�”}”(hhh]”j[)�”}”(hŒremove driver from system.”h]”hŒremove driver from system.”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K¾hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjUŽh²hh³jnŽh´K¾ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj8�j{j8�j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ„**Parameters** ``struct device_driver *drv`` driver. **Description** Again, we pass off most of the work to the bus-level call.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjB�h]”hŒ Parameters”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj@�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KÂhj<�ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ&``struct device_driver *drv`` driver. ”h]”(jÙ)�”}”(hŒ``struct device_driver *drv``”h]”jß)�”}”(hja�h]”hŒstruct device_driver *drv”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj_�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´K¿hj[�ubjõ)�”}”(hhh]”j[)�”}”(hŒdriver.”h]”hŒdriver.”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jv�h´K¿hjw�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj[�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jv�h´K¿hjX�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj<�ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjœ�h]”hŒ Description”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjš�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KÁhj<�ubj[)�”}”(hŒ:Again, we pass off most of the work to the bus-level call.”h]”hŒ:Again, we pass off most of the work to the bus-level call.”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:33: ./drivers/base/driver.c”h´KÀhj<�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%device_link_wait_removal (C function)”Œc.device_link_wait_removal”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void device_link_wait_removal (void)”h]”hù)�”}”(hŒ#void device_link_wait_removal(void)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÝ�h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mlubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝ�h²hh³jï�h´Mlubj")�”}”(hŒdevice_link_wait_removal”h]”j()�”}”(hŒdevice_link_wait_removal”h]”hŒdevice_link_wait_removal”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþ�ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÝ�h²hh³jï�h´Mlubj÷7)�”}”(hŒ(void)”h]”jý7)�”}”(hŒvoid”h]”j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÝ�h²hh³jï�h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÙ�h²hh³jï�h´Mlubah}”(h]”jÔ�ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jï�h´MlhjÖ�h²hubjV)�”}”(hhh]”j[)�”}”(hŒ2Wait for ongoing devlink removal jobs to terminate”h]”hŒ2Wait for ongoing devlink removal jobs to terminate”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MlhjE�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÖ�h²hh³jï�h´Mlubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj`�j{j`�j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjj�h]”hŒ Parameters”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjh�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mphjd�ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``void`` no arguments”h]”(jÙ)�”}”(hŒ``void``”h]”jß)�”}”(hj‰�h]”hŒvoid”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mrhjƒ�ubjõ)�”}”(hhh]”j[)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´KhjŸ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjƒ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jž�h´Mrhj€�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjd�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_link_add (C function)”Œc.device_link_add”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒbstruct device_link * device_link_add (struct device *consumer, struct device *supplier, u32 flags)”h]”hù)�”}”(hŒ`struct device_link *device_link_add(struct device *consumer, struct device *supplier, u32 flags)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjß�h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mìubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjß�h²hh³jð�h´Mìubh)�”}”(hhh]”j()�”}”(hŒ device_link”h]”hŒ device_link”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÿ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j‘Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdevice_link_add”sbŒc.device_link_add”†”asbuh1hhjß�h²hh³jð�h´Mìubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjß�h²hh³jð�h´MìubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj1‘h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjß�h²hh³jð�h´Mìubj")�”}”(hŒdevice_link_add”h]”j()�”}”(hj ‘h]”hŒdevice_link_add”…”�”}”(hjB‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj>‘ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjß�h²hh³jð�h´Mìubj÷7)�”}”(hŒ=(struct device *consumer, struct device *supplier, u32 flags)”h]”(jý7)�”}”(hŒstruct device *consumer”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj]‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjY‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY‘ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj{‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjx‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j}‘Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j‘Œc.device_link_add”†”asbuh1hhjY‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY‘ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj§‘h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjY‘ubj()�”}”(hŒconsumer”h]”hŒconsumer”…”�”}”(hj´‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjY‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjU‘ubjý7)�”}”(hŒstruct device *supplier”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÍ‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÉ‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ‘ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjë‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjè‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j푌modname”NŒ classname”Nj:8j=8)�”}”j@8]”j‘Œc.device_link_add”†”asbuh1hhjÉ‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ‘ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÉ‘ubj()�”}”(hŒsupplier”h]”hŒsupplier”…”�”}”(hj$’h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÉ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjU‘ubjý7)�”}”(hŒ u32 flags”h]”(h)�”}”(hhh]”j()�”}”(hŒu32”h]”hŒu32”…”�”}”(hj@’h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj=’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jB’Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j‘Œc.device_link_add”†”asbuh1hhj9’ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9’ubj()�”}”(hŒflags”h]”hŒflags”…”�”}”(hjl’h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj9’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjU‘ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjß�h²hh³jð�h´Mìubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÛ�h²hh³jð�h´Mìubah}”(h]”jÖ�ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jð�h´MìhjØ�h²hubjV)�”}”(hhh]”j[)�”}”(hŒ"Create a link between two devices.”h]”hŒ"Create a link between two devices.”…”�”}”(hj–’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mìhj“’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjØ�h²hh³jð�h´Mìubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj®’j{j®’j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXå **Parameters** ``struct device *consumer`` Consumer end of the link. ``struct device *supplier`` Supplier end of the link. ``u32 flags`` Link flags. **Return** On success, a device_link struct will be returned. On error or invalid flag settings, NULL will be returned. **Description** The caller is responsible for the proper synchronization of the link creation with runtime PM. First, setting the DL_FLAG_PM_RUNTIME flag will cause the runtime PM framework to take the link into account. Second, if the DL_FLAG_RPM_ACTIVE flag is set in addition to it, the supplier devices will be forced into the active meta state and reference-counted upon the creation of the link. If DL_FLAG_PM_RUNTIME is not set, DL_FLAG_RPM_ACTIVE will be ignored. If DL_FLAG_STATELESS is set in **flags**, the caller of this function is expected to release the link returned by it directly with the help of either device_link_del() or device_link_remove(). If that flag is not set, however, the caller of this function is handing the management of the link over to the driver core entirely and its return value can only be used to check whether or not the link is present. In that case, the DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER device link flags can be used to indicate to the driver core when the link can be safely deleted. Namely, setting one of them in **flags** indicates to the driver core that the link is not going to be used (by the given caller of this function) after unbinding the consumer or supplier driver, respectively, from its device, so the link can be deleted at that point. If none of them is set, the link will be maintained until one of the devices pointed to by it (either the consumer or the supplier) is unregistered. Also, if DL_FLAG_STATELESS, DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER are not set in **flags** (that is, a persistent managed device link is being added), the DL_FLAG_AUTOPROBE_CONSUMER flag can be used to request the driver core to automatically probe for a consumer driver after successfully binding a driver to the supplier device. The combination of DL_FLAG_STATELESS and one of DL_FLAG_AUTOREMOVE_CONSUMER, DL_FLAG_AUTOREMOVE_SUPPLIER, or DL_FLAG_AUTOPROBE_CONSUMER set in **flags** at the same time is invalid and will cause NULL to be returned upfront. However, if a device link between the given **consumer** and **supplier** pair exists already when this function is called for them, the existing link will be returned regardless of its current type and status (the link's flags may be modified then). The caller of this function is then expected to treat the link as though it has just been created, so (in particular) if DL_FLAG_STATELESS was passed in **flags**, the link needs to be released explicitly when not needed any more (as stated above). A side effect of the link creation is re-ordering of dpm_list and the devices_kset list by moving the consumer device and all devices depending on it to the ends of these lists (that does not happen to devices that have not been registered when this function is called). The supplier device is required to be registered when this function is called and NULL will be returned if that is not the case. The consumer device need not be registered, however.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj¸’h]”hŒ Parameters”…”�”}”(hjº’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¶’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mðhj²’ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ6``struct device *consumer`` Consumer end of the link. ”h]”(jÙ)�”}”(hŒ``struct device *consumer``”h]”jß)�”}”(hj×’h]”hŒstruct device *consumer”…”�”}”(hjÙ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MíhjÑ’ubjõ)�”}”(hhh]”j[)�”}”(hŒConsumer end of the link.”h]”hŒConsumer end of the link.”…”�”}”(hjð’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jì’h´Míhjí’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÑ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jì’h´MíhjÎ’ubjÓ)�”}”(hŒ6``struct device *supplier`` Supplier end of the link. ”h]”(jÙ)�”}”(hŒ``struct device *supplier``”h]”jß)�”}”(hj“h]”hŒstruct device *supplier”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mîhj “ubjõ)�”}”(hhh]”j[)�”}”(hŒSupplier end of the link.”h]”hŒSupplier end of the link.”…”�”}”(hj)“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j%“h´Mîhj&“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj “ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j%“h´MîhjÎ’ubjÓ)�”}”(hŒ``u32 flags`` Link flags. ”h]”(jÙ)�”}”(hŒ ``u32 flags``”h]”jß)�”}”(hjI“h]”hŒ u32 flags”…”�”}”(hjK“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjG“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MïhjC“ubjõ)�”}”(hhh]”j[)�”}”(hŒ Link flags.”h]”hŒ Link flags.”…”�”}”(hjb“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j^“h´Mïhj_“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjC“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j^“h´MïhjÎ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²’ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hj„“h]”hŒReturn”…”�”}”(hj†“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‚“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mñhj²’ubj[)�”}”(hŒlOn success, a device_link struct will be returned. On error or invalid flag settings, NULL will be returned.”h]”hŒlOn success, a device_link struct will be returned. On error or invalid flag settings, NULL will be returned.”…”�”}”(hjš“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mñhj²’ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj«“h]”hŒ Description”…”�”}”(hj­“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj©“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Môhj²’ubj[)�”}”(hXÊThe caller is responsible for the proper synchronization of the link creation with runtime PM. First, setting the DL_FLAG_PM_RUNTIME flag will cause the runtime PM framework to take the link into account. Second, if the DL_FLAG_RPM_ACTIVE flag is set in addition to it, the supplier devices will be forced into the active meta state and reference-counted upon the creation of the link. If DL_FLAG_PM_RUNTIME is not set, DL_FLAG_RPM_ACTIVE will be ignored.”h]”hXÊThe caller is responsible for the proper synchronization of the link creation with runtime PM. First, setting the DL_FLAG_PM_RUNTIME flag will cause the runtime PM framework to take the link into account. Second, if the DL_FLAG_RPM_ACTIVE flag is set in addition to it, the supplier devices will be forced into the active meta state and reference-counted upon the creation of the link. If DL_FLAG_PM_RUNTIME is not set, DL_FLAG_RPM_ACTIVE will be ignored.”…”�”}”(hjÁ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Móhj²’ubj[)�”}”(hŒÀIf DL_FLAG_STATELESS is set in **flags**, the caller of this function is expected to release the link returned by it directly with the help of either device_link_del() or device_link_remove().”h]”(hŒIf DL_FLAG_STATELESS is set in ”…”�”}”(hjГh²hh³Nh´NubjŠ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjØ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjГubhŒ˜, the caller of this function is expected to release the link returned by it directly with the help of either device_link_del() or device_link_remove().”…”�”}”(hjГh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mûhj²’ubj[)�”}”(hX,If that flag is not set, however, the caller of this function is handing the management of the link over to the driver core entirely and its return value can only be used to check whether or not the link is present. In that case, the DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER device link flags can be used to indicate to the driver core when the link can be safely deleted. Namely, setting one of them in **flags** indicates to the driver core that the link is not going to be used (by the given caller of this function) after unbinding the consumer or supplier driver, respectively, from its device, so the link can be deleted at that point. If none of them is set, the link will be maintained until one of the devices pointed to by it (either the consumer or the supplier) is unregistered.”h]”(hX©If that flag is not set, however, the caller of this function is handing the management of the link over to the driver core entirely and its return value can only be used to check whether or not the link is present. In that case, the DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER device link flags can be used to indicate to the driver core when the link can be safely deleted. Namely, setting one of them in ”…”�”}”(hjñ“h²hh³Nh´NubjŠ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjù“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjñ“ubhXz indicates to the driver core that the link is not going to be used (by the given caller of this function) after unbinding the consumer or supplier driver, respectively, from its device, so the link can be deleted at that point. If none of them is set, the link will be maintained until one of the devices pointed to by it (either the consumer or the supplier) is unregistered.”…”�”}”(hjñ“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mÿhj²’ubj[)�”}”(hX`Also, if DL_FLAG_STATELESS, DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER are not set in **flags** (that is, a persistent managed device link is being added), the DL_FLAG_AUTOPROBE_CONSUMER flag can be used to request the driver core to automatically probe for a consumer driver after successfully binding a driver to the supplier device.”h]”(hŒgAlso, if DL_FLAG_STATELESS, DL_FLAG_AUTOREMOVE_CONSUMER and DL_FLAG_AUTOREMOVE_SUPPLIER are not set in ”…”�”}”(hj”h²hh³Nh´NubjŠ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj”ubhŒð (that is, a persistent managed device link is being added), the DL_FLAG_AUTOPROBE_CONSUMER flag can be used to request the driver core to automatically probe for a consumer driver after successfully binding a driver to the supplier device.”…”�”•}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj²’ubj[)�”}”(hXÕThe combination of DL_FLAG_STATELESS and one of DL_FLAG_AUTOREMOVE_CONSUMER, DL_FLAG_AUTOREMOVE_SUPPLIER, or DL_FLAG_AUTOPROBE_CONSUMER set in **flags** at the same time is invalid and will cause NULL to be returned upfront. However, if a device link between the given **consumer** and **supplier** pair exists already when this function is called for them, the existing link will be returned regardless of its current type and status (the link's flags may be modified then). The caller of this function is then expected to treat the link as though it has just been created, so (in particular) if DL_FLAG_STATELESS was passed in **flags**, the link needs to be released explicitly when not needed any more (as stated above).”h]”(hŒ�The combination of DL_FLAG_STATELESS and one of DL_FLAG_AUTOREMOVE_CONSUMER, DL_FLAG_AUTOREMOVE_SUPPLIER, or DL_FLAG_AUTOPROBE_CONSUMER set in ”…”�”}”(hj3”h²hh³Nh´NubjŠ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj;”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3”ubhŒu at the same time is invalid and will cause NULL to be returned upfront. However, if a device link between the given ”…”�”}”(hj3”h²hh³Nh´NubjŠ)�”}”(hŒ **consumer**”h]”hŒconsumer”…”�”}”(hjM”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3”ubhŒ and ”…”�”}”(hj3”h²hh³Nh´NubjŠ)�”}”(hŒ **supplier**”h]”hŒsupplier”…”�”}”(hj_”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3”ubhXN pair exists already when this function is called for them, the existing link will be returned regardless of its current type and status (the link’s flags may be modified then). The caller of this function is then expected to treat the link as though it has just been created, so (in particular) if DL_FLAG_STATELESS was passed in ”…”�”}”(hj3”h²hh³Nh´NubjŠ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjq”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3”ubhŒV, the link needs to be released explicitly when not needed any more (as stated above).”…”�”}”(hj3”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj²’ubj[)�”}”(hXA side effect of the link creation is re-ordering of dpm_list and the devices_kset list by moving the consumer device and all devices depending on it to the ends of these lists (that does not happen to devices that have not been registered when this function is called).”h]”hXA side effect of the link creation is re-ordering of dpm_list and the devices_kset list by moving the consumer device and all devices depending on it to the ends of these lists (that does not happen to devices that have not been registered when this function is called).”…”�”}”(hjŠ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj²’ubj[)�”}”(hŒ¶The supplier device is required to be registered when this function is called and NULL will be returned if that is not the case. The consumer device need not be registered, however.”h]”hŒ¶The supplier device is required to be registered when this function is called and NULL will be returned if that is not the case. The consumer device need not be registered, however.”…”�”}”(hj™”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M!hj²’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_link_del (C function)”Œc.device_link_del”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void device_link_del (struct device_link *link)”h]”hù)�”}”(hŒ.void device_link_del(struct device_link *link)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÈ”h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÄ”h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ”h²hh³jÖ”h´Mubj")�”}”(hŒdevice_link_del”h]”j()�”}”(hŒdevice_link_del”h]”hŒdevice_link_del”…”�”}”(hjé”h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjå”ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÄ”h²hh³jÖ”h´Mubj÷7)�”}”(hŒ(struct device_link *link)”h]”jý7)�”}”(hŒstruct device_link *link”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•ubh)�”}”(hhh]”j()�”}”(hŒ device_link”h]”hŒ device_link”…”�”}”(hj#•h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj •ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j%•Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jë”sbŒc.device_link_del”†”asbuh1hhj•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjQ•h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj•ubj()�”}”(hŒlink”h]”hŒlink”…”�”}”(hj^•h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjý”ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÄ”h²hh³jÖ”h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÀ”h²hh³jÖ”h´Mubah}”(h]”j»”ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÖ”h´Mhj½”h²hubjV)�”}”(hhh]”j[)�”}”(hŒ,Delete a stateless link between two devices.”h]”hŒ,Delete a stateless link between two devices.”…”�”}”(hjˆ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj…•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj½”h²hh³jÖ”h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj •j{j •j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXt**Parameters** ``struct device_link *link`` Device link to delete. **Description** The caller must ensure proper synchronization of this function with runtime PM. If the link was added multiple times, it needs to be deleted as often. Care is required for hotplugged devices: Their links are purged on removal and calling device_link_del() is then no longer allowed.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjª•h]”hŒ Parameters”…”�”}”(hj¬•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¨•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj¤•ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ4``struct device_link *link`` Device link to delete. ”h]”(jÙ)�”}”(hŒ``struct device_link *link``”h]”jß)�”}”(hjÉ•h]”hŒstruct device_link *link”…”�”}”(hjË•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÇ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MhjÕubjõ)�”}”(hhh]”j[)�”}”(hŒDevice link to delete.”h]”hŒDevice link to delete.”…”�”}”(hjâ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÞ•h´Mhjß•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÞ•h´MhjÀ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¤•ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj–h]”hŒ Description”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj¤•ubj[)�”}”(hXThe caller must ensure proper synchronization of this function with runtime PM. If the link was added multiple times, it needs to be deleted as often. Care is required for hotplugged devices: Their links are purged on removal and calling device_link_del() is then no longer allowed.”h]”hXThe caller must ensure proper synchronization of this function with runtime PM. If the link was added multiple times, it needs to be deleted as often. Care is required for hotplugged devices: Their links are purged on removal and calling device_link_del() is then no longer allowed.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj¤•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_link_remove (C function)”Œc.device_link_remove”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAvoid device_link_remove (void *consumer, struct device *supplier)”h]”hù)�”}”(hŒ@void device_link_remove(void *consumer, struct device *supplier)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjI–h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjE–h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE–h²hh³jW–h´Mubj")�”}”(hŒdevice_link_remove”h]”j()�”}”(hŒdevice_link_remove”h]”hŒdevice_link_remove”…”�”}”(hjj–h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjf–ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjE–h²hh³jW–h´Mubj÷7)�”}”(hŒ)(void *consumer, struct device *supplier)”h]”(jý7)�”}”(hŒvoid *consumer”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†–h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj‚–ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚–ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¢–h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj‚–ubj()�”}”(hŒconsumer”h]”hŒconsumer”…”�”}”(hj¯–h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‚–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj~–ubjý7)�”}”(hŒstruct device *supplier”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÈ–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÄ–ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ–ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjæ–h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjã–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jè–Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jl–sbŒc.device_link_remove”†”asbuh1hhjÄ–ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ–ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÄ–ubj()�”}”(hŒsupplier”h]”hŒsupplier”…”�”}”(hj!—h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÄ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj~–ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjE–h²hh³jW–h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjA–h²hh³jW–h´Mubah}”(h]”j<–ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jW–h´Mhj>–h²hubjV)�”}”(hhh]”j[)�”}”(hŒ,Delete a stateless link between two devices.”h]”hŒ,Delete a stateless link between two devices.”…”�”}”(hjK—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MhjH—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj>–h²hh³jW–h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjc—j{jc—j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÙ**Parameters** ``void *consumer`` Consumer end of the link. ``struct device *supplier`` Supplier end of the link. **Description** The caller must ensure proper synchronization of this function with runtime PM.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjm—h]”hŒ Parameters”…”�”}”(hjo—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjk—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjg—ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ-``void *consumer`` Consumer end of the link. ”h]”(jÙ)�”}”(hŒ``void *consumer``”h]”jß)�”}”(hjŒ—h]”hŒvoid *consumer”…”�”}”(hjŽ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj†—ubjõ)�”}”(hhh]”j[)�”}”(hŒConsumer end of the link.”h]”hŒConsumer end of the link.”…”�”}”(hj¥—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¡—h´Mhj¢—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡—h´Mhjƒ—ubjÓ)�”}”(hŒ6``struct device *supplier`` Supplier end of the link. ”h]”(jÙ)�”}”(hŒ``struct device *supplier``”h]”jß)�”}”(hjÅ—h]”hŒstruct device *supplier”…”�”}”(hjÇ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj¿—ubjõ)�”}”(hhh]”j[)�”}”(hŒSupplier end of the link.”h]”hŒSupplier end of the link.”…”�”}”(hjÞ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÚ—h´MhjÛ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¿—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÚ—h´Mhjƒ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjg—ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj˜h]”hŒ Description”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjþ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjg—ubj[)�”}”(hŒOThe caller must ensure proper synchronization of this function with runtime PM.”h]”hŒOThe caller must ensure proper synchronization of this function with runtime PM.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjg—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_driver_string (C function)”Œc.dev_driver_string”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9const char * dev_driver_string (const struct device *dev)”h]”hù)�”}”(hŒ7const char *dev_driver_string(const struct device *dev)”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjE˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjA˜h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mœ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA˜h²hh³jR˜h´Mœ ubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hja˜h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjA˜h²hh³jR˜h´Mœ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA˜h²hh³jR˜h´Mœ ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj}˜h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjA˜h²hh³jR˜h´Mœ ubj")�”}”(hŒdev_driver_string”h]”j()�”}”(hŒdev_driver_string”h]”hŒdev_driver_string”…”�”}”(hjŽ˜h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŠ˜ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjA˜h²hh³jR˜h´Mœ ubj÷7)�”}”(hŒ(const struct device *dev)”h]”jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjª˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¦˜ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦˜ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŘh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¦˜ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦˜ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjã˜h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjà˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j嘌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j�˜sbŒc.dev_driver_string”†”asbuh1hhj¦˜ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦˜ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¦˜ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¦˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¢˜ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjA˜h²hh³jR˜h´Mœ ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj=˜h²hh³jR˜h´Mœ ubah}”(h]”j8˜ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jR˜h´Mœ hj:˜h²hubjV)�”}”(hhh]”j[)�”}”(hŒ1Return a device's driver name, if at all possible”h]”hŒ3Return a device’s driver name, if at all possible”…”�”}”(hjH™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mœ hjE™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj:˜h²hh³jR˜h´Mœ ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj`™j{j`™j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXM**Parameters** ``const struct device *dev`` struct device to get the name of **Description** Will return the device's driver's name if it is bound to a device. If the device is not bound to a driver, it will return the name of the bus it is attached to. If it is not attached to a bus either, an empty string will be returned.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjj™h]”hŒ Parameters”…”�”}”(hjl™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjh™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M  hjd™ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ>``const struct device *dev`` struct device to get the name of ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hj‰™h]”hŒconst struct device *dev”…”�”}”(hj‹™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‡™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M� hjƒ™ubjõ)�”}”(hhh]”j[)�”}”(hŒ struct device to get the name of”h]”hŒ struct device to get the name of”…”�”}”(hj¢™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jž™h´M� hjŸ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjƒ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jž™h´M� hj€™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjd™ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÄ™h]”hŒ Description”…”�”}”(hjÆ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MŸ hjd™ubj[)�”}”(hŒëWill return the device's driver's name if it is bound to a device. If the device is not bound to a driver, it will return the name of the bus it is attached to. If it is not attached to a bus either, an empty string will be returned.”h]”hŒïWill return the device’s driver’s name if it is bound to a device. If the device is not bound to a driver, it will return the name of the bus it is attached to. If it is not attached to a bus either, an empty string will be returned.”…”�”}”(hjÚ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mž hjd™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"devm_device_add_group (C function)”Œc.devm_device_add_group”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒQint devm_device_add_group (struct device *dev, const struct attribute_group *grp)”h]”hù)�”}”(hŒPint devm_device_add_group(struct device *dev, const struct attribute_group *grp)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjšh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´My ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšh²hh³jšh´My ubj")�”}”(hŒdevm_device_add_group”h]”j()�”}”(hŒdevm_device_add_group”h]”hŒdevm_device_add_group”…”�”}”(hj*šh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj&šubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjšh²hh³jšh´My ubj÷7)�”}”(hŒ7(struct device *dev, const struct attribute_group *grp)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjFšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjBšubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBšubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjdšh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjašubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jfšŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j,šsbŒc.devm_device_add_group”†”asbuh1hhjBšubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBšubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj’šh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjBšubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjŸšh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjBšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj>šubjý7)�”}”(hŒ!const struct attribute_group *grp”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¸šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj´šubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´šubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÓšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj´šubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´šubh)�”}”(hhh]”j()�”}”(hŒattribute_group”h]”hŒattribute_group”…”�”}”(hjñšh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjîšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jóšŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j€šŒc.devm_device_add_group”†”asbuh1hhj´šubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´šubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj´šubj()�”}”(hŒgrp”h]”hŒgrp”…”�”}”(hj*›h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj>šubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjšh²hh³jšh´My ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjšh²hh³jšh´My ubah}”(h]”jü™ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jšh´My hjþ™h²hubjV)�”}”(hhh]”j[)�”}”(hŒ0given a device, create a managed attribute group”h]”hŒ0given a device, create a managed attribute group”…”�”}”(hjT›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´My hjQ›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjþ™h²hh³jšh´My ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjl›j{jl›j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXd**Parameters** ``struct device *dev`` The device to create the group for ``const struct attribute_group *grp`` The attribute group to create **Description** This function creates a group for the first time. It will explicitly warn and error if any of the attribute files being created already exist. Returns 0 on success or error code on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjv›h]”hŒ Parameters”…”�”}”(hjx›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjt›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M} hjp›ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ:``struct device *dev`` The device to create the group for ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj•›h]”hŒstruct device *dev”…”�”}”(hj—›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mz hj�›ubjõ)�”}”(hhh]”j[)�”}”(hŒ"The device to create the group for”h]”hŒ"The device to create the group for”…”�”}”(hj®›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jª›h´Mz hj«›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jª›h´Mz hjŒ›ubjÓ)�”}”(hŒD``const struct attribute_group *grp`` The attribute group to create ”h]”(jÙ)�”}”(hŒ%``const struct attribute_group *grp``”h]”jß)�”}”(hjΛh]”hŒ!const struct attribute_group *grp”…”�”}”(hjЛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M{ hjÈ›ubjõ)�”}”(hhh]”j[)�”}”(hŒThe attribute group to create”h]”hŒThe attribute group to create”…”�”}”(hjç›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jã›h´M{ hjä›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÈ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jã›h´M{ hjŒ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjp›ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj œh]”hŒ Description”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M} hjp›ubj[)�”}”(hŒ�This function creates a group for the first time. It will explicitly warn and error if any of the attribute files being created already exist.”h]”hŒ�This function creates a group for the first time. It will explicitly warn and error if any of the attribute files being created already exist.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M| hjp›ubj[)�”}”(hŒ.Returns 0 on success or error code on failure.”h]”hŒ.Returns 0 on success or error code on failure.”…”�”}”(hj.œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hjp›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_create_file (C function)”Œc.device_create_file”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPint device_create_file (struct device *dev, const struct device_attribute *attr)”h]”hù)�”}”(hŒOint device_create_file(struct device *dev, const struct device_attribute *attr)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj]œh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjYœh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M* ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYœh²hh³jkœh´M* ubj")�”}”(hŒdevice_create_file”h]”j()�”}”(hŒdevice_create_file”h]”hŒdevice_create_file”…”�”}”(hj~œh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjzœubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjYœh²hh³jkœh´M* ubj÷7)�”}”(hŒ9(struct device *dev, const struct device_attribute *attr)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjšœh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj–œubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–œubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¸œh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjµœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jºœŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j€œsbŒc.device_create_file”†”asbuh1hhj–œubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–œubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjæœh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj–œubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjóœh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj–œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj’œubjý7)�”}”(hŒ#const struct device_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj'�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubh)�”}”(hhh]”j()�”}”(hŒdevice_attribute”h]”hŒdevice_attribute”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjB�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jG�Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÔœŒc.device_create_file”†”asbuh1hhj�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj�ubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj’œubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjYœh²hh³jkœh´M* ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjUœh²hh³jkœh´M* ubah}”(h]”jPœah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jkœh´M* hjRœh²hubjV)�”}”(hhh]”j[)�”}”(hŒ'create sysfs attribute file for device.”h]”hŒ'create sysfs attribute file for device.”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M* hj¥�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjRœh²hh³jkœh´M* ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÀ�j{jÀ�j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒx**Parameters** ``struct device *dev`` device. ``const struct device_attribute *attr`` device attribute descriptor.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÊ�h]”hŒ Parameters”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÈ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M. hjÄ�ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjé�h]”hŒstruct device *dev”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjç�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M+ hjã�ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jþ�h´M+ hjÿ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjã�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jþ�h´M+ hjà�ubjÓ)�”}”(hŒD``const struct device_attribute *attr`` device attribute descriptor.”h]”(jÙ)�”}”(hŒ'``const struct device_attribute *attr``”h]”jß)�”}”(hj"žh]”hŒ#const struct device_attribute *attr”…”�”}”(hj$žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj žubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M- hjžubjõ)�”}”(hhh]”j[)�”}”(hŒdevice attribute descriptor.”h]”hŒdevice attribute descriptor.”…”�”}”(hj;žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M, hj8žubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j7žh´M- hjà�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÄ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_remove_file (C function)”Œc.device_remove_file”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒQvoid device_remove_file (struct device *dev, const struct device_attribute *attr)”h]”hù)�”}”(hŒPvoid device_remove_file(struct device *dev, const struct device_attribute *attr)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj|žh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjxžh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MB ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxžh²hh³jŠžh´MB ubj")�”}”(hŒdevice_remove_file”h]”j()�”}”(hŒdevice_remove_file”h]”hŒdevice_remove_file”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj™žubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjxžh²hh³jŠžh´MB ubj÷7)�”}”(hŒ9(struct device *dev, const struct device_attribute *attr)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¹žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjµžubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµžubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjמh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÔžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÙžŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jŸžsbŒc.device_remove_file”†”asbuh1hhjµžubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµžubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjµžubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjµžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj±žubjý7)�”}”(hŒ#const struct device_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj+Ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj'Ÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'Ÿubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjFŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj'Ÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'Ÿubh)�”}”(hhh]”j()�”}”(hŒdevice_attribute”h]”hŒdevice_attribute”…”�”}”(hjdŸh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jfŸŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jóžŒc.device_remove_file”†”asbuh1hhj'Ÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'ŸubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj'Ÿubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj'Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj±žubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjxžh²hh³jŠžh´MB ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjtžh²hh³jŠžh´MB ubah}”(h]”jožah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jŠžh´MB hjqžh²hubjV)�”}”(hhh]”j[)�”}”(hŒremove sysfs attribute file.”h]”hŒremove sysfs attribute file.”…”�”}”(hjÇŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MB hjÄŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjqžh²hh³jŠžh´MB ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjߟj{jߟj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒx**Parameters** ``struct device *dev`` device. ``const struct device_attribute *attr`` device attribute descriptor.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjéŸh]”hŒ Parameters”…”�”}”(hjëŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjçŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MF hjãŸubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj h]”hŒstruct device *dev”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MC hj ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´MC hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´MC hjÿŸubjÓ)�”}”(hŒD``const struct device_attribute *attr`` device attribute descriptor.”h]”(jÙ)�”}”(hŒ'``const struct device_attribute *attr``”h]”jß)�”}”(hjA h]”hŒ#const struct device_attribute *attr”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´ME hj; ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice attribute descriptor.”h]”hŒdevice attribute descriptor.”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MD hjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj; ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jV h´ME hjÿŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjãŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$device_remove_file_self (C function)”Œc.device_remove_file_self”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒVbool device_remove_file_self (struct device *dev, const struct device_attribute *attr)”h]”hù)�”}”(hŒUbool device_remove_file_self(struct device *dev, const struct device_attribute *attr)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj— h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MO ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj— h²hh³j¨ h´MO ubj")�”}”(hŒdevice_remove_file_self”h]”j()�”}”(hŒdevice_remove_file_self”h]”hŒdevice_remove_file_self”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj· ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj— h²hh³j¨ h´MO ubj÷7)�”}”(hŒ9(struct device *dev, const struct device_attribute *attr)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÓ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjò ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j÷ Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j½ sbŒc.device_remove_file_self”†”asbuh1hhjÓ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj#¡h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÓ ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj0¡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÓ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÏ ubjý7)�”}”(hŒ#const struct device_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjI¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjE¡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE¡ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjd¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjE¡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE¡ubh)�”}”(hhh]”j()�”}”(hŒdevice_attribute”h]”hŒdevice_attribute”…”�”}”(hj‚¡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j„¡Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¡Œc.device_remove_file_self”†”asbuh1hhjE¡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE¡ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj®¡h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjE¡ubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hj»¡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjE¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÏ ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj— h²hh³j¨ h´MO ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj“ h²hh³j¨ h´MO ubah}”(h]”jŽ ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¨ h´MO hj� h²hubjV)�”}”(hhh]”j[)�”}”(hŒ0remove sysfs attribute file from its own method.”h]”hŒ0remove sysfs attribute file from its own method.”…”�”}”(hjå¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MO hjâ¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj� h²hh³j¨ h´MO ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjý¡j{jý¡j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ°**Parameters** ``struct device *dev`` device. ``const struct device_attribute *attr`` device attribute descriptor. **Description** See kernfs_remove_self() for details.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj¢h]”hŒ Parameters”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MS hj¢ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj&¢h]”hŒstruct device *dev”…”�”}”(hj(¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj$¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MP hj ¢ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj?¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j;¢h´MP hj<¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j;¢h´MP hj¢ubjÓ)�”}”(hŒE``const struct device_attribute *attr`` device attribute descriptor. ”h]”(jÙ)�”}”(hŒ'``const struct device_attribute *attr``”h]”jß)�”}”(hj_¢h]”hŒ#const struct device_attribute *attr”…”�”}”(hja¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj]¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MQ hjY¢ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice attribute descriptor.”h]”hŒdevice attribute descriptor.”…”�”}”(hjx¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jt¢h´MQ hju¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjY¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jt¢h´MQ hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¢ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjš¢h]”hŒ Description”…”�”}”(hjœ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj˜¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MS hj¢ubj[)�”}”(hŒ%See kernfs_remove_self() for details.”h]”hŒ%See kernfs_remove_self() for details.”…”�”}”(hj°¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MR hj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#device_create_bin_file (C function)”Œc.device_create_bin_file”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒQint device_create_bin_file (struct device *dev, const struct bin_attribute *attr)”h]”hù)�”}”(hŒPint device_create_bin_file(struct device *dev, const struct bin_attribute *attr)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjߢh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÛ¢h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M` ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ¢h²hh³jí¢h´M` ubj")�”}”(hŒdevice_create_bin_file”h]”j()�”}”(hŒdevice_create_bin_file”h]”hŒdevice_create_bin_file”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjü¢ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÛ¢h²hh³jí¢h´M` ubj÷7)�”}”(hŒ6(struct device *dev, const struct bin_attribute *attr)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj:£h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj7£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j<£Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j£sbŒc.device_create_bin_file”†”asbuh1hhj£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjh£h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj£ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hju£h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj£ubjý7)�”}”(hŒ const struct bin_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjŽ£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjŠ£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ£ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj©£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjŠ£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ£ubh)�”}”(hhh]”j()�”}”(hŒ bin_attribute”h]”hŒ bin_attribute”…”�”}”(hjÇ£h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÄ£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÉ£Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jV£Œc.device_create_bin_file”†”asbuh1hhjŠ£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ£ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjó£h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjŠ£ubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŠ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj£ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÛ¢h²hh³jí¢h´M` ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj×¢h²hh³jí¢h´M` ubah}”(h]”jÒ¢ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jí¢h´M` hjÔ¢h²hubjV)�”}”(hhh]”j[)�”}”(hŒ.create sysfs binary attribute file for device.”h]”hŒ.create sysfs binary attribute file for device.”…”�”}”(hj*¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M` hj'¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÔ¢h²hh³jí¢h´M` ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjB¤j{jB¤j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ|**Parameters** ``struct device *dev`` device. ``const struct bin_attribute *attr`` device binary attribute descriptor.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjL¤h]”hŒ Parameters”…”�”}”(hjN¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjJ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Md hjF¤ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjk¤h]”hŒstruct device *dev”…”�”}”(hjm¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhji¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Ma hje¤ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj„¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j€¤h´Ma hj�¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhje¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j€¤h´Ma hjb¤ubjÓ)�”}”(hŒH``const struct bin_attribute *attr`` device binary attribute descriptor.”h]”(jÙ)�”}”(hŒ$``const struct bin_attribute *attr``”h]”jß)�”}”(hj¤¤h]”hŒ const struct bin_attribute *attr”…”�”}”(hj¦¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¢¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mc hjž¤ubjõ)�”}”(hhh]”j[)�”}”(hŒ#device binary attribute descriptor.”h]”hŒ#device binary attribute descriptor.”…”�”}”(hj½¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mb hjº¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjž¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¹¤h´Mc hjb¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjF¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#device_remove_bin_file (C function)”Œc.device_remove_bin_file”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒRvoid device_remove_bin_file (struct device *dev, const struct bin_attribute *attr)”h]”hù)�”}”(hŒQvoid device_remove_bin_file(struct device *dev, const struct bin_attribute *attr)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþ¤h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjú¤h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mo ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú¤h²hh³j ¥h´Mo ubj")�”}”(hŒdevice_remove_bin_file”h]”j()�”}”(hŒdevice_remove_bin_file”h]”hŒdevice_remove_bin_file”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjú¤h²hh³j ¥h´Mo ubj÷7)�”}”(hŒ6(struct device *dev, const struct bin_attribute *attr)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj;¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj7¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7¥ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjY¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjV¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j[¥Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j!¥sbŒc.device_remove_bin_file”†”asbuh1hhj7¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7¥ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‡¥h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj7¥ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj”¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj7¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj3¥ubjý7)�”}”(hŒ const struct bin_attribute *attr”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj­¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj©¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©¥ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÈ¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj©¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©¥ubh)�”}”(hhh]”j()�”}”(hŒ bin_attribute”h]”hŒ bin_attribute”…”�”}”(hjæ¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjã¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j襌modname”NŒ classname”Nj:8j=8)�”}”j@8]”ju¥Œc.device_remove_bin_file”†”asbuh1hhj©¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©¥ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj©¥ubj()�”}”(hŒattr”h]”hŒattr”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj©¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj3¥ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjú¤h²hh³j ¥h´Mo ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjö¤h²hh³j ¥h´Mo ubah}”(h]”jñ¤ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j ¥h´Mo hjó¤h²hubjV)�”}”(hhh]”j[)�”}”(hŒ"remove sysfs binary attribute file”h]”hŒ"remove sysfs binary attribute file”…”�”}”(hjI¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mo hjF¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjó¤h²hh³j ¥h´Mo ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzja¦j{ja¦j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ|**Parameters** ``struct device *dev`` device. ``const struct bin_attribute *attr`` device binary attribute descriptor.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjk¦h]”hŒ Parameters”…”�”}”(hjm¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hji¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Ms hje¦ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjЦh]”hŒstruct device *dev”…”�”}”(hjŒ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mp hj„¦ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj£¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŸ¦h´Mp hj ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj„¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŸ¦h´Mp hj�¦ubjÓ)�”}”(hŒH``const struct bin_attribute *attr`` device binary attribute descriptor.”h]”(jÙ)�”}”(hŒ$``const struct bin_attribute *attr``”h]”jß)�”}”(hjæh]”hŒ const struct bin_attribute *attr”…”�”}”(hjŦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mr hj½¦ubjõ)�”}”(hhh]”j[)�”}”(hŒ#device binary attribute descriptor.”h]”hŒ#device binary attribute descriptor.”…”�”}”(hjܦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mq hjÙ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj½¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jئh´Mr hj�¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhje¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_initialize (C function)”Œc.device_initialize”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void device_initialize (struct device *dev)”h]”hù)�”}”(hŒ*void device_initialize(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj§h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MŒ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§h²hh³j+§h´MŒ ubj")�”}”(hŒdevice_initialize”h]”j()�”}”(hŒdevice_initialize”h]”hŒdevice_initialize”…”�”}”(hj>§h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj:§ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj§h²hh³j+§h´MŒ ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjZ§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjV§ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV§ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjx§h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hju§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jz§Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j@§sbŒc.device_initialize”†”asbuh1hhjV§ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV§ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦§h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjV§ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj³§h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjV§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjR§ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj§h²hh³j+§h´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj§h²hh³j+§h´MŒ ubah}”(h]”j§ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j+§h´MŒ hj§h²hubjV)�”}”(hhh]”j[)�”}”(hŒinit device structure.”h]”hŒinit device structure.”…”�”}”(hjݧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MŒ hjÚ§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj§h²hh³j+§h´MŒ ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjõ§j{jõ§j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXß**Parameters** ``struct device *dev`` device. **Description** This prepares the device for use by other layers by initializing its fields. It is the first half of device_register(), if called by that function, though it can also be called separately, so one may use **dev**'s fields. In particular, get_device()/put_device() may be used for reference counting of **dev** after calling this function. All fields in **dev** must be initialized by the caller to 0, except for those explicitly set to some other value. The simplest approach is to use kzalloc() to allocate the structure containing **dev**. **NOTE** Use put_device() to give up your reference instead of freeing **dev** directly once you have called this function.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÿ§h]”hŒ Parameters”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjý§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M� hjù§ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj¨h]”hŒstruct device *dev”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M� hj¨ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj7¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j3¨h´M� hj4¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j3¨h´M� hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjù§ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjY¨h]”hŒ Description”…”�”}”(hj[¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjW¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M� hjù§ubj[)�”}”(hXQThis prepares the device for use by other layers by initializing its fields. It is the first half of device_register(), if called by that function, though it can also be called separately, so one may use **dev**'s fields. In particular, get_device()/put_device() may be used for reference counting of **dev** after calling this function.”h]”(hŒÌThis prepares the device for use by other layers by initializing its fields. It is the first half of device_register(), if called by that function, though it can also be called separately, so one may use ”…”�”}”(hjo¨h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjw¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjo¨ubhŒ\’s fields. In particular, get_device()/put_device() may be used for reference counting of ”…”�”}”(hjo¨h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj‰¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjo¨ubhŒ after calling this function.”…”�”}”(hjo¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MŽ hjù§ubj[)�”}”(hŒËAll fields in **dev** must be initialized by the caller to 0, except for those explicitly set to some other value. The simplest approach is to use kzalloc() to allocate the structure containing **dev**.”h]”(hŒAll fields in ”…”�”}”(hj¢¨h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjª¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¢¨ubhŒ® must be initialized by the caller to 0, except for those explicitly set to some other value. The simplest approach is to use kzalloc() to allocate the structure containing ”…”�”}”(hj¢¨h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¼¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¢¨ubhŒ.”…”�”}”(hj¢¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M– hjù§ubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjרh]”hŒNOTE”…”�”}”(hjÙ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÕ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M› hjù§ubj[)�”}”(hŒrUse put_device() to give up your reference instead of freeing **dev** directly once you have called this function.”h]”(hŒ>Use put_device() to give up your reference instead of freeing ”…”�”}”(hjí¨h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjõ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjí¨ubhŒ- directly once you have called this function.”…”�”}”(hjí¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mœ hjù§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_set_name (C function)”Œc.dev_set_name”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;int dev_set_name (struct device *dev, const char *fmt, ...)”h]”hù)�”}”(hŒ:int dev_set_name(struct device *dev, const char *fmt, ...)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj.©h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj*©h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mâ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*©h²hh³j<©h´Mâ ubj")�”}”(hŒ dev_set_name”h]”j()�”}”(hŒ dev_set_name”h]”hŒ dev_set_name”…”�”}”(hjO©h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjK©ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj*©h²hh³j<©h´Mâ ubj÷7)�”}”(hŒ*(struct device *dev, const char *fmt, ...)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjk©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjg©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg©ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj‰©h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj†©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j‹©Œmodname”NŒ classname”Nj:8j=8•)�”}”j@8]”jC8)�”}”j68jQ©sbŒc.dev_set_name”†”asbuh1hhjg©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg©ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj·©h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjg©ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÄ©h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjg©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjc©ubjý7)�”}”(hŒconst char *fmt”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÝ©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÙ©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ©ubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjø©h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÙ©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ©ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÙ©ubj()�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj!ªh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÙ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjc©ubjý7)�”}”(hŒ...”h]”jW8)�”}”(hŒ...”h]”hŒ...”…”�”}”(hj:ªh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj6ªubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjc©ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj*©h²hh³j<©h´Mâ ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj&©h²hh³j<©h´Mâ ubah}”(h]”j!©ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j<©h´Mâ hj#©h²hubjV)�”}”(hhh]”j[)�”}”(hŒset a device name”h]”hŒset a device name”…”�”}”(hjdªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mâ hjaªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj#©h²hh³j<©h´Mâ ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj|ªj{j|ªj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒˆ**Parameters** ``struct device *dev`` device ``const char *fmt`` format string for the device's name ``...`` variable arguments”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj†ªh]”hŒ Parameters”…”�”}”(hjˆªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj„ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mæ hj€ªubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``struct device *dev`` device ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj¥ªh]”hŒstruct device *dev”…”�”}”(hj§ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj£ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mã hjŸªubjõ)�”}”(hhh]”j[)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¾ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jºªh´Mã hj»ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŸªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jºªh´Mã hjœªubjÓ)�”}”(hŒ8``const char *fmt`` format string for the device's name ”h]”(jÙ)�”}”(hŒ``const char *fmt``”h]”jß)�”}”(hjÞªh]”hŒconst char *fmt”…”�”}”(hjàªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjܪubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mä hjتubjõ)�”}”(hhh]”j[)�”}”(hŒ#format string for the device's name”h]”hŒ%format string for the device’s name”…”�”}”(hj÷ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jóªh´Mä hjôªubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjتubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jóªh´Mä hjœªubjÓ)�”}”(hŒ``...`` variable arguments”h]”(jÙ)�”}”(hŒ``...``”h]”jß)�”}”(hj«h]”hŒ...”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mæ hj«ubjõ)�”}”(hhh]”j[)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj0«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Khj-«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j,«h´Mæ hjœªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj€ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_add (C function)”Œ c.device_add”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#int device_add (struct device *dev)”h]”hù)�”}”(hŒ"int device_add(struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjq«h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjm«h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M!ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm«h²hh³j«h´M!ubj")�”}”(hŒ device_add”h]”j()�”}”(hŒ device_add”h]”hŒ device_add”…”�”}”(hj’«h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŽ«ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjm«h²hh³j«h´M!ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj®«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjª«ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª«ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÌ«h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÉ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jΫŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j”«sbŒ c.device_add”†”asbuh1hhjª«ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª«ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjú«h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjª«ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjª«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¦«ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjm«h²hh³j«h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhji«h²hh³j«h´M!ubah}”(h]”jd«ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j«h´M!hjf«h²hubjV)�”}”(hhh]”j[)�”}”(hŒadd device to device hierarchy.”h]”hŒadd device to device hierarchy.”…”�”}”(hj1¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M!hj.¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjf«h²hh³j«h´M!ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjI¬j{jI¬j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX\**Parameters** ``struct device *dev`` device. **Description** This is part 2 of device_register(), though may be called separately _iff_ device_initialize() has been called separately. This adds **dev** to the kobject hierarchy via kobject_add(), adds it to the global and sibling lists for the device, then adds it to the other relevant subsystems of the driver model. Do not call this routine or device_register() more than once for any device structure. The driver model core is not designed to work with devices that get unregistered and then spring back to life. (Among other things, it's very hard to guarantee that all references to the previous incarnation of **dev** have been dropped.) Allocate and register a fresh new struct device instead. **NOTE** _Never_ directly free **dev** after calling this function, even if it returned an error! Always use put_device() to give up your reference instead. Rule of thumb is: if device_add() succeeds, you should call device_del() when you want to get rid of it. If device_add() has *not* succeeded, use *only* put_device() to drop the reference count.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjS¬h]”hŒ Parameters”…”�”}”(hjU¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjQ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M%hjM¬ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjr¬h]”hŒstruct device *dev”…”�”}”(hjt¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjp¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M"hjl¬ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj‹¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‡¬h´M"hjˆ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjl¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‡¬h´M"hji¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjM¬ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj­¬h]”hŒ Description”…”�”}”(hj¯¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj«¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M$hjM¬ubj[)�”}”(hŒzThis is part 2 of device_register(), though may be called separately _iff_ device_initialize() has been called separately.”h]”hŒzThis is part 2 of device_register(), though may be called separately _iff_ device_initialize() has been called separately.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M#hjM¬ubj[)�”}”(hŒ¸This adds **dev** to the kobject hierarchy via kobject_add(), adds it to the global and sibling lists for the device, then adds it to the other relevant subsystems of the driver model.”h]”(hŒ This adds ”…”�”}”(hjÒ¬h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÚ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÒ¬ubhŒ§ to the kobject hierarchy via kobject_add(), adds it to the global and sibling lists for the device, then adds it to the other relevant subsystems of the driver model.”…”�”}”(hjÒ¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M&hjM¬ubj[)�”}”(hX€Do not call this routine or device_register() more than once for any device structure. The driver model core is not designed to work with devices that get unregistered and then spring back to life. (Among other things, it's very hard to guarantee that all references to the previous incarnation of **dev** have been dropped.) Allocate and register a fresh new struct device instead.”h]”(hX-Do not call this routine or device_register() more than once for any device structure. The driver model core is not designed to work with devices that get unregistered and then spring back to life. (Among other things, it’s very hard to guarantee that all references to the previous incarnation of ”…”�”}”(hjó¬h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjû¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjó¬ubhŒN have been dropped.) Allocate and register a fresh new struct device instead.”…”�”}”(hjó¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M*hjM¬ubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hj­h]”hŒNOTE”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M1hjM¬ubj[)�”}”(hŒ“_Never_ directly free **dev** after calling this function, even if it returned an error! Always use put_device() to give up your reference instead.”h]”(hŒ_Never_ directly free ”…”�”}”(hj,­h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj4­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj,­ubhŒv after calling this function, even if it returned an error! Always use put_device() to give up your reference instead.”…”�”}”(hj,­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M2hjM¬ubj[)�”}”(hŒÂRule of thumb is: if device_add() succeeds, you should call device_del() when you want to get rid of it. If device_add() has *not* succeeded, use *only* put_device() to drop the reference count.”h]”(hŒ}Rule of thumb is: if device_add() succeeds, you should call device_del() when you want to get rid of it. If device_add() has ”…”�”}”(hjM­h²hh³Nh´Nubju^)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hjU­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jt^hjM­ubhŒ succeeded, use ”…”�”}”(hjM­h²hh³Nh´Nubju^)�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hjg­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jt^hjM­ubhŒ* put_device() to drop the reference count.”…”�”}”(hjM­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M6hjM¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_register (C function)”Œc.device_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(int device_register (struct device *dev)”h]”hù)�”}”(hŒ'int device_register(struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjœ­h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mþubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ­h²hh³j®­h´Mþubj")�”}”(hŒdevice_register”h]”j()�”}”(hŒdevice_register”h]”hŒdevice_register”…”�”}”(hjÁ­h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½­ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjœ­h²hh³j®­h´Mþubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÝ­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÙ­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ­ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjû­h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjø­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jý­Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jísbŒc.device_register”†”asbuh1hhjÙ­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ­ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj)®h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÙ­ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj6®h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÙ­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÕ­ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjœ­h²hh³j®­h´Mþubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj˜­h²hh³j®­h´Mþubah}”(h]”j“­ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j®­h´Mþhj•­h²hubjV)�”}”(hhh]”j[)�”}”(hŒ"register a device with the system.”h]”hŒ"register a device with the system.”…”�”}”(hj`®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mþhj]®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj•­h²hh³j®­h´Mþubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjx®j{jx®j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX£**Parameters** ``struct device *dev`` pointer to the device structure **Description** This happens in two clean steps - initialize the device and add it to the system. The two steps can be called separately, but this is the easiest and most common. I.e. you should only call the two helpers separately if have a clearly defined need to use and refcount the device before it is added to the hierarchy. For more information, see the kerneldoc for device_initialize() and device_add(). **NOTE** _Never_ directly free **dev** after calling this function, even if it returned an error! Always use put_device() to give up the reference initialized in this function instead.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‚®h]”hŒ Parameters”…”�”}”(hj„®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj€®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj|®ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ7``struct device *dev`` pointer to the device structure ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj¡®h]”hŒstruct device *dev”…”�”}”(hj£®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŸ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mÿhj›®ubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to the device structure”h]”hŒpointer to the device structure”…”�”}”(hjº®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¶®h´Mÿhj·®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj›®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¶®h´Mÿhj˜®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj|®ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÜ®h]”hŒ Description”…”�”}”(hjÞ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÚ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj|®ubj[)�”}”(hX:This happens in two clean steps - initialize the device and add it to the system. The two steps can be called separately, but this is the easiest and most common. I.e. you should only call the two helpers separately if have a clearly defined need to use and refcount the device before it is added to the hierarchy.”h]”hX:This happens in two clean steps - initialize the device and add it to the system. The two steps can be called separately, but this is the easiest and most common. I.e. you should only call the two helpers separately if have a clearly defined need to use and refcount the device before it is added to the hierarchy.”…”�”}”(hjò®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj|®ubj[)�”}”(hŒQFor more information, see the kerneldoc for device_initialize() and device_add().”h]”hŒQFor more information, see the kerneldoc for device_initialize() and device_add().”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj|®ubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hj¯h]”hŒNOTE”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj|®ubj[)�”}”(hŒ¯_Never_ directly free **dev** after calling this function, even if it returned an error! Always use put_device() to give up the reference initialized in this function instead.”h]”(hŒ_Never_ directly free ”…”�”}”(hj(¯h²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj0¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj(¯ubhŒ’ after calling this function, even if it returned an error! Always use put_device() to give up the reference initialized in this function instead.”…”�”}”(hj(¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj|®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒget_device (C function)”Œ c.get_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/struct device * get_device (struct device *dev)”h]”hù)�”}”(hŒ-struct device *get_device(struct device *dev)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hji¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhje¯h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje¯h²hh³jv¯h´Mubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjˆ¯h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj…¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jНŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œ get_device”sbŒ c.get_device”†”asbuh1hhje¯h²hh³jv¯h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje¯h²hh³jv¯h´MubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj·¯h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hje¯h²hh³jv¯h´Mubj")�”}”(hŒ get_device”h]”j()�”}”(hj¦¯h]”hŒ get_device”…”�”}”(hjȯh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjįubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hje¯h²hh³jv¯h´Mubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjã¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj߯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj߯ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþ¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j°Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¤¯Œ c.get_device”†”asbuh1hhj߯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj߯ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj-°h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj߯ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj:°h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj߯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÛ¯ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hje¯h²hh³jv¯h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhja¯h²hh³jv¯h´Mubah}”(h]”j\¯ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jv¯h´Mhj^¯h²hubjV)�”}”(hhh]”j[)�”}”(hŒ%increment reference count for device.”h]”hŒ%increment reference count for device.”…”�”}”(hjd°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhja°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj^¯h²hh³jv¯h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj|°j{j|°j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÇ**Parameters** ``struct device *dev`` device. **Description** This simply forwards the call to kobject_get(), though we do take care to provide for the case that we get a NULL pointer passed in.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj†°h]”hŒ Parameters”…”�”}”(hjˆ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj„°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj€°ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj¥°h]”hŒstruct device *dev”…”�”}”(hj§°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj£°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MhjŸ°ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj¾°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jº°h´Mhj»°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŸ°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jº°h´Mhjœ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj€°ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjà°h]”hŒ Description”…”�”}”(hjâ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÞ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj€°ubj[)�”}”(hŒ„This simply forwards the call to kobject_get(), though we do take care to provide for the case that we get a NULL pointer passed in.”h]”hŒ„This simply forwards the call to kobject_get(), though we do take care to provide for the case that we get a NULL pointer passed in.”…”�”}”(hjö°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj€°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒput_device (C function)”Œ c.put_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void put_device (struct device *dev)”h]”hù)�”}”(hŒ#void put_device(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj%±h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj!±h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M%ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!±h²hh³j3±h´M%ubj")�”}”(hŒ put_device”h]”j()�”}”(hŒ put_device”h]”hŒ put_device”…”�”}”(hjF±h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjB±ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj!±h²hh³j3±h´M%ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjb±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj^±ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^±ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj€±h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj}±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j‚±Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jH±sbŒ c.put_device”†”asbuh1hhj^±ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^±ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj®±h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj^±ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj»±h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj^±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjZ±ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj!±h²hh³j3±h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj±h²hh³j3±h´M%ubah}”(h]”j±ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j3±h´M%hj±h²hubjV)�”}”(hhh]”j[)�”}”(hŒdecrement reference count.”h]”hŒdecrement reference count.”…”�”}”(hjå±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M%hjâ±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj±h²hh³j3±h´M%ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjý±j{jý±j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ<**Parameters** ``struct device *dev`` device in question.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj²h]”hŒ Parameters”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M)hj²ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ*``struct device *dev`` device in question.”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj&²h]”hŒstruct device *dev”…”�”}”(hj(²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj$²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M+hj ²ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice in question.”h]”hŒdevice in question.”…”�”}”(hj?²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M&hj<²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j;²h´M+hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_del (C function)”Œ c.device_del”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void device_del (struct device *dev)”h]”hù)�”}”(hŒ#void device_del(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€²h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj|²h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|²h²hh³j޲h´MCubj")�”}”(hŒ device_del”h]”j()�”}”(hŒ device_del”h]”hŒ device_del”…”�”}”(hj¡²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�²ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj|²h²hh³j޲h´MCubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj½²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¹²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʲh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹²ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÛ²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjزubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jݲŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j£²sbŒ c.device_del”†”asbuh1hhj¹²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹²ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¹²ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¹²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjµ²ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj|²h²hh³j޲h´MCubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjx²h²hh³j޲h´MCubah}”(h]”js²ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j޲h´MChju²h²hubjV)�”}”(hhh]”j[)�”}”(hŒdelete device from system.”h]”hŒdelete device from system.”…”�”}”(hj@³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MChj=³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhju²h²hh³j޲h´MCubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjX³j{jX³j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX–**Parameters** ``struct device *dev`` device. **Description** This is the first part of the device unregistration sequence. This removes the device from the lists we control from here, has it removed from the other driver model subsystems it was added to in device_add(), and removes it from the kobject hierarchy. **NOTE** this should be called manually _iff_ device_add() was also called manually.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjb³h]”hŒ Parameters”…”�”}”(hjd³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj`³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MGhj\³ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj�³h]”hŒstruct device *dev”…”�”}”(hjƒ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MDhj{³ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hjš³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j–³h´MDhj—³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj{³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j–³h´MDhjx³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj\³ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¼³h]”hŒ Description”…”�”}”(hj¾³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjº³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MFhj\³ubj[)�”}”(hŒüThis is the first part of the device unregistration sequence. This removes the device from the lists we control from here, has it removed from the other driver model subsystems it was added to in device_add(), and removes it from the kobject hierarchy.”h]”hŒüThis is the first part of the device unregistration sequence. This removes the device from the lists we control from here, has it removed from the other driver model subsystems it was added to in device_add(), and removes it from the kobject hierarchy.”…”�”}”(hjÒ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MEhj\³ubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjã³h]”hŒNOTE”…”�”}”(hjå³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjá³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MKhj\³ubj[)�”}”(hŒKthis should be called manually _iff_ device_add() was also called manually.”h]”hŒKthis should be called manually _iff_ device_add() was also called manually.”…”�”}”(hjù³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MLhj\³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_unregister (C function)”Œc.device_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void device_unregister (struct device *dev)”h]”hù)�”}”(hŒ*void device_unregister(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(´h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj$´h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M™ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$´h²hh³j6´h´M™ubj")�”}”(hŒdevice_unregister”h]”j()�”}”(hŒdevice_unregister”h]”hŒdevice_unregister”…”�”}”(hjI´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjE´ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj$´h²hh³j6´h´M™ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hje´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhja´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja´ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjƒ´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj€´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j…´Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jK´sbŒc.device_unregister”†”asbuh1hhja´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja´ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj±´h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hja´ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¾´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hja´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj]´ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj$´h²hh³j6´h´M™ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj ´h²hh³j6´h´M™ubah}”(h]”j´ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j6´h´M™hj´h²hubjV)�”}”(hhh]”j[)�”}”(hŒunregister device from system.”h]”hŒunregister device from system.”…”�”}”(hjè´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M™hjå´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj´h²hh³j6´h´M™ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjµj{jµj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXº**Parameters** ``struct device *dev`` device going away. **Description** We do this in two parts, like we do device_register(). First, we remove it from all the subsystems with device_del(), then we decrement the reference count via put_device(). If that is the final reference count, the device will be cleaned up via device_release() above. Otherwise, the structure will stick around until the final reference to the device is dropped.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj µh]”hŒ Parameters”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M�hjµubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ*``struct device *dev`` device going away. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj)µh]”hŒstruct device *dev”…”�”}”(hj+µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'µubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mšhj#µubjõ)�”}”(hhh]”j[)�”}”(hŒdevice going away.”h]”hŒdevice going away.”…”�”}”(hjBµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j>µh´Mšhj?µubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj#µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j>µh´Mšhj µubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjµubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjdµh]”hŒ Description”…”�”}”(hjfµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjbµubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mœhjµubj[)�”}”(hXlWe do this in two parts, like we do device_register(). First, we remove it from all the subsystems with device_del(), then we decrement the reference count via put_device(). If that is the final reference count, the device will be cleaned up via device_release() above. Otherwise, the structure will stick around until the final reference to the device is dropped.”h]”hXlWe do this in two parts, like we do device_register(). First, we remove it from all the subsystems with device_del(), then we decrement the reference count via put_device(). If that is the final reference count, the device will be cleaned up via device_release() above. Otherwise, the structure will stick around until the final reference to the device is dropped.”…”�”}”(hjzµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M›hjµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"device_for_each_child (C function)”Œc.device_for_each_child”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒOint device_for_each_child (struct device *parent, void *data, device_iter_t fn)”h]”hù)�”}”(hŒNint device_for_each_child(struct device *parent, void *data, device_iter_t fn)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj©µh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¥µh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mòubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥µh²hh³j·µh´Mòubj")�”}”(hŒdevice_for_each_child”h]”j()�”}”(hŒdevice_for_each_child”h]”hŒdevice_for_each_child”…”�”}”(hjʵh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjƵubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¥µh²hh³j·µh´Mòubj÷7)�”}”(hŒ5(struct device *parent, void *data, device_iter_t fn)”h]”(jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjæµh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjâµubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâµubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¶Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j̵sbŒc.device_for_each_child”†”asbuh1hhjâµubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâµubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj2¶h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjâµubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hj?¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjâµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÞµubjý7)�”}”(hŒ void *data”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjX¶h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjT¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT¶ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjt¶h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjT¶ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjT¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÞµubjý7)�”}”(hŒdevice_iter_t fn”h]”(h)�”}”(hhh]”j()�”}”(hŒ device_iter_t”h]”hŒ device_iter_t”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjš¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jŸ¶Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j ¶Œc.device_for_each_child”†”asbuh1hhj–¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–¶ubj()�”}”(hŒfn”h]”hŒfn”…”�”}”(hjɶh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj–¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÞµubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¥µh²hh³j·µh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¡µh²hh³j·µh´Mòubah}”(h]”jœµah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j·µh´Mòhjžµh²hubjV)�”}”(hhh]”j[)�”}”(hŒdevice child iterator.”h]”hŒdevice child iterator.”…”�”}”(hjó¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mòhjð¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjžµh²hh³j·µh´Mòubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj ·j{j ·j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX†**Parameters** ``struct device *parent`` parent struct device. ``void *data`` data for the callback. ``device_iter_t fn`` function to be called for each device. **Description** Iterate over **parent**'s child devices, and call **fn** for each, passing it **data**. We check the return of **fn** each time. If it returns anything other than 0, we break out and return that value.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj·h]”hŒ Parameters”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Möhj·ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct device *parent`` parent struct device. ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hj4·h]”hŒstruct device *parent”…”�”}”(hj6·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Móhj.·ubjõ)�”}”(hhh]”j[)�”}”(hŒparent struct device.”h]”hŒparent struct device.”…”�”}”(hjM·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jI·h´MóhjJ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj.·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jI·h´Móhj+·ubjÓ)�”}”(hŒ&``void *data`` data for the callback. ”h]”(jÙ)�”}”(hŒ``void *data``”h]”jß)�”}”(hjm·h]”hŒ void *data”…”�”}”(hjo·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjk·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Môhjg·ubjõ)�”}”(hhh]”j[)�”}”(hŒdata for the callback.”h]”hŒdata for the callback.”…”�”}”(hj†·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‚·h´Môhjƒ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjg·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‚·h´Môhj+·ubjÓ)�”}”(hŒ<``device_iter_t fn`` function to be called for each device. ”h]”(jÙ)�”}”(hŒ``device_iter_t fn``”h]”jß)�”}”(hj¦·h]”hŒdevice_iter_t fn”…”�”}”(hj¨·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¤·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mõhj ·ubjõ)�”}”(hhh]”j[)�”}”(hŒ&function to be called for each device.”h]”hŒ&function to be called for each device.”…”�”}”(hj¿·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j»·h´Mõhj¼·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j»·h´Mõhj+·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj·ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjá·h]”hŒ Description”…”�”}”(hjã·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjß·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M÷hj·ubj[)�”}”(hŒWIterate over **parent**'s child devices, and call **fn** for each, passing it **data**.”h]”(hŒ Iterate over ”…”�”}”(hj÷·h²hh³Nh´NubjŠ)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjÿ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj÷·ubhŒ’s child devices, and call ”…”�”}”(hj÷·h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj÷·ubhŒ for each, passing it ”…”�”}”(hj÷·h²hh³Nh´NubjŠ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj#¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj÷·ubhŒ.”…”�”}”(hj÷·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Möhj·ubj[)�”}”(hŒqWe check the return of **fn** each time. If it returns anything other than 0, we break out and return that value.”h]”(hŒWe check the return of ”…”�”}”(hj<¸h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjD¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj<¸ubhŒT each time. If it returns anything other than 0, we break out and return that value.”…”�”}”(hj<¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mùhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*device_for_each_child_reverse (C function)”Œc.device_for_each_child_reverse”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒWint device_for_each_child_reverse (struct device *parent, void *data, device_iter_t fn)”h]”hù)�”}”(hŒVint device_for_each_child_reverse(struct device *parent, void *data, device_iter_t fn)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj}¸h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjy¸h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy¸h²hh³j‹¸h´Mubj")�”}”(hŒdevice_for_each_child_reverse”h]”j()�”}”(hŒdevice_for_each_child_reverse”h]”hŒdevice_for_each_child_reverse”…”�”}”(hjž¸h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjš¸ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjy¸h²hh³j‹¸h´Mubj÷7)�”}”(hŒ5(struct device *parent, void *data, device_iter_t fn)”h]”(jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjº¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¶¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjǸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶¸ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjظh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÕ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÚ¸Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j ¸sbŒc.device_for_each_child_reverse”†”asbuh1hhj¶¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶¸ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¶¸ubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¶¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj²¸ubjý7)�”}”(hŒ void *data”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,¹h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj(¹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(¹ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjH¹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj(¹ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjU¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj(¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj²¸ubjý7)�”}”(hŒdevice_iter_t fn”h]”(h)�”}”(hhh]”j()�”}”(hŒ device_iter_t”h]”hŒ device_iter_t”…”�”}”(hjq¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjn¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”js¹Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jô¸Œc.device_for_each_child_reverse”†”asbuh1hhjj¹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj¹ubj()�”}”(hŒfn”h]”hŒfn”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj²¸ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjy¸h²hh³j‹¸h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhju¸h²hh³j‹¸h´Mubah}”(h]”jp¸ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j‹¸h´Mhjr¸h²hubjV)�”}”(hhh]”j[)�”}”(hŒ(device child iterator in reversed order.”h]”hŒ(device child iterator in reversed order.”…”�”}”(hjǹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MhjĹh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjr¸h²hh³j‹¸h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjß¹j{jß¹j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX†**Parameters** ``struct device *parent`` parent struct device. ``void *data`` data for the callback. ``device_iter_t fn`` function to be called for each device. **Description** Iterate over **parent**'s child devices, and call **fn** for each, passing it **data**. We check the return of **fn** each time. If it returns anything other than 0, we break out and return that value.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjé¹h]”hŒ Parameters”…”�”}”(hjë¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjç¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjã¹ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct device *parent`` parent struct device. ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjºh]”hŒstruct device *parent”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjºubjõ)�”}”(hhh]”j[)�”}”(hŒparent struct device.”h]”hŒparent struct device.”…”�”}”(hj!ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jºh´Mhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jºh´Mhjÿ¹ubjÓ)�”}”(hŒ&``void *data`` data for the callback. ”h]”(jÙ)�”}”(hŒ``void *data``”h]”jß)�”}”(hjAºh]”hŒ void *data”…”�”}”(hjCºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj?ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj;ºubjõ)�”}”(hhh]”j[)�”}”(hŒdata for the callback.”h]”hŒdata for the callback.”…”�”}”(hjZºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jVºh´MhjWºubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj;ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jVºh´Mhjÿ¹ubjÓ)�”}”(hŒ<``device_iter_t fn`` function to be called for each device. ”h]”(jÙ)�”}”(hŒ``device_iter_t fn``”h]”jß)�”}”(hjzºh]”hŒdevice_iter_t fn”…”�”}”(hj|ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjxºubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjtºubjõ)�”}”(hhh]”j[)�”}”(hŒ&function to be called for each device.”h]”hŒ&function to be called for each device.”…”�”}”(hj“ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j�ºh´Mhj�ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjtºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j�ºh´Mhjÿ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjã¹ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjµºh]”hŒ Description”…”�”}”(hj·ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj³ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjã¹ubj[)�”}”(hŒWIterate over **parent**'s child devices, and call **fn** for each, passing it **data**.”h]”(hŒ Iterate over ”…”�”}”(hj˺h²hh³Nh´NubjŠ)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjÓºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj˺ubhŒ’s child devices, and call ”…”�”}”(hj˺h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjåºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj˺ubhŒ for each, passing it ”…”�”}”(hj˺h²hh³Nh´NubjŠ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj÷ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj˺ubhŒ.”…”�”}”(hj˺h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjã¹ubj[)�”}”(hŒqWe check the return of **fn** each time. If it returns anything other than 0, we break out and return that value.”h]”(hŒWe check the return of ”…”�”}”(hj»h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj»ubhŒT each time. If it returns anything other than 0, we break out and return that value.”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjã¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/device_for_each_child_reverse_from (C function)”Œ$c.device_for_each_child_reverse_from”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒqint device_for_each_child_reverse_from (struct device *parent, struct device *from, void *data, device_iter_t fn)”h]”hù)�”}”(hŒpint device_for_each_child_reverse_from(struct device *parent, struct device *from, void *data, device_iter_t fn)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjQ»h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjM»h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M.ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjM»h²hh³j_»h´M.ubj")�”}”(hŒ"device_for_each_child_reverse_from”h]”j()�”}”(hŒ"device_for_each_child_reverse_from”h]”hŒ"device_for_each_child_reverse_from”…”�”}”(hjr»h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjn»ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjM»h²hh³j_»h´M.ubj÷7)�”}”(hŒJ(struct device *parent, struct device *from, void *data, device_iter_t fn)”h]”(jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŽ»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjŠ»ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ»ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¬»h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj©»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j®»Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jt»sbŒ$c.device_for_each_child_reverse_from”†”asbuh1hhjŠ»ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ»ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÚ»h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjŠ»ubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjç»h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŠ»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj†»ubjý7)�”}”(hŒstruct device *from”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjü»ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü»ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j ¼Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÈ»Œ$c.device_for_each_child_reverse_from”†”asbuh1hhjü»ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü»ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjJ¼h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjü»ubj()�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjW¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjü»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj†»ubjý7)�”}”(hŒ void *data”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjp¼h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjl¼ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl¼ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjŒ¼h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjl¼ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hj™¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjl¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj†»ubjý7)�”}”(hŒdevice_iter_t fn”h]”(h)�”}”(hhh]”j()�”}”(hŒ device_iter_t”h]”hŒ device_iter_t”…”�”}”(hjµ¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj²¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j·¼Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÈ»Œ$c.device_for_each_child_reverse_from”†”asbuh1hhj®¼ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®¼ubj()�”}”(hŒfn”h]”hŒfn”…”�”}”(hjá¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj®¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj†»ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjM»h²hh³j_»h´M.ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjI»h²hh³j_»h´M.ubah}”(h]”jD»ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j_»h´M.hjF»h²hubjV)�”}”(hhh]”j[)�”}”(hŒ(device child iterator in reversed order.”h]”hŒ(device child iterator in reversed order.”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M.hj½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjF»h²hh³j_»h´M.ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj#½j{j#½j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXf**Parameters** ``struct device *parent`` parent struct device. ``struct device *from`` optional starting point in child list ``void *data`` data for the callback. ``device_iter_t fn`` function to be called for each device. **Description** Iterate over **parent**'s child devices, starting at **from**, and call **fn** for each, passing it **data**. This helper is identical to device_for_each_child_reverse() when **from** is NULL. **fn** is checked each iteration. If it returns anything other than 0, iteration stop and that value is returned to the caller of device_for_each_child_reverse_from();”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj-½h]”hŒ Parameters”…”�”}”(hj/½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj+½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M2hj'½ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct device *parent`` parent struct device. ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjL½h]”hŒstruct device *parent”…”�”}”(hjN½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M/hjF½ubjõ)�”}”(hhh]”j[)�”}”(hŒparent struct device.”h]”hŒparent struct device.”…”�”}”(hje½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³ja½h´M/hjb½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjF½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³ja½h´M/hjC½ubjÓ)�”}”(hŒ>``struct device *from`` optional starting point in child list ”h]”(jÙ)�”}”(hŒ``struct device *from``”h]”jß)�”}”(hj…½h]”hŒstruct device *from”…”�”}”(hj‡½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjƒ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M0hj½ubjõ)�”}”(hhh]”j[)�”}”(hŒ%optional starting point in child list”h]”hŒ%optional starting point in child list”…”�”}”(hjž½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jš½h´M0hj›½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jš½h´M0hjC½ubjÓ)�”}”(hŒ&``void *data`` data for the callback. ”h]”(jÙ)�”}”(hŒ``void *data``”h]”jß)�”}”(hj¾½h]”hŒ void *data”…”�”}”(hjÀ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¼½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M1hj¸½ubjõ)�”}”(hhh]”j[)�”}”(hŒdata for the callback.”h]”hŒdata for the callback.”…”�”}”(hj×½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÓ½h´M1hjÔ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¸½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÓ½h´M1hjC½ubjÓ)�”}”(hŒ<``device_iter_t fn`` function to be called for each device. ”h]”(jÙ)�”}”(hŒ``device_iter_t fn``”h]”jß)�”}”(hj÷½h]”hŒdevice_iter_t fn”…”�”}”(hjù½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M2hjñ½ubjõ)�”}”(hhh]”j[)�”}”(hŒ&function to be called for each device.”h]”hŒ&function to be called for each device.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j ¾h´M2hj ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjñ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j ¾h´M2hjC½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj'½ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj2¾h]”hŒ Description”…”�”}”(hj4¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj0¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M4hj'½ubj[)�”}”(hŒÀIterate over **parent**'s child devices, starting at **from**, and call **fn** for each, passing it **data**. This helper is identical to device_for_each_child_reverse() when **from** is NULL.”h]”(hŒ Iterate over ”…”�”}”(hjH¾h²hh³Nh´NubjŠ)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjP¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjH¾ubhŒ ’s child devices, starting at ”…”�”}”(hjH¾h²hh³Nh´NubjŠ)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hjb¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjH¾ubhŒ , and call ”…”�”}”(hjH¾h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjt¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjH¾ubhŒ for each, passing it ”…”�”•}”(hjH¾h²hh³Nh´NubjŠ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj†¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjH¾ubhŒC. This helper is identical to device_for_each_child_reverse() when ”…”�”}”(hjH¾h²hh³Nh´NubjŠ)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hj˜¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjH¾ubhŒ is NULL.”…”�”}”(hjH¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M3hj'½ubj[)�”}”(hŒ§**fn** is checked each iteration. If it returns anything other than 0, iteration stop and that value is returned to the caller of device_for_each_child_reverse_from();”h]”(jŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjµ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj±¾ubhŒ¡ is checked each iteration. If it returns anything other than 0, iteration stop and that value is returned to the caller of device_for_each_child_reverse_from();”…”�”}”(hj±¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M7hj'½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_find_child (C function)”Œc.device_find_child”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒastruct device * device_find_child (struct device *parent, const void *data, device_match_t match)”h]”hù)�”}”(hŒ_struct device *device_find_child(struct device *parent, const void *data, device_match_t match)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjî¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjê¾h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MQubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê¾h²hh³jû¾h´MQubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¿Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdevice_find_child”sbŒc.device_find_child”†”asbuh1hhjê¾h²hh³jû¾h´MQubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê¾h²hh³jû¾h´MQubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj<¿h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjê¾h²hh³jû¾h´MQubj")�”}”(hŒdevice_find_child”h]”j()�”}”(hj+¿h]”hŒdevice_find_child”…”�”}”(hjM¿h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjI¿ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjê¾h²hh³jû¾h´MQubj÷7)�”}”(hŒ?(struct device *parent, const void *data, device_match_t match)”h]”(jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjh¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjd¿ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd¿ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj†¿h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjƒ¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jˆ¿Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j)¿Œc.device_find_child”†”asbuh1hhjd¿ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd¿ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj²¿h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjd¿ubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¿¿h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjd¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj`¿ubjý7)�”}”(hŒconst void *data”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjØ¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÔ¿ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔ¿ubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjó¿h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÔ¿ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔ¿ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÔ¿ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÔ¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj`¿ubjý7)�”}”(hŒdevice_match_t match”h]”(h)�”}”(hhh]”j()�”}”(hŒdevice_match_t”h]”hŒdevice_match_t”…”�”}”(hj8Àh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj5Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j:ÀŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j)¿Œc.device_find_child”†”asbuh1hhj1Àubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1Àubj()�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjdÀh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj1Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj`¿ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjê¾h²hh³jû¾h´MQubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjæ¾h²hh³jû¾h´MQubah}”(h]”já¾ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jû¾h´MQhjã¾h²hubjV)�”}”(hhh]”j[)�”}”(hŒ1device iterator for locating a particular device.”h]”hŒ1device iterator for locating a particular device.”…”�”}”(hjŽÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MQhj‹Àh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjã¾h²hh³jû¾h´MQubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¦Àj{j¦Àj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX¼**Parameters** ``struct device *parent`` parent struct device ``const void *data`` Data to pass to match function ``device_match_t match`` Callback function to check device **Description** This is similar to the device_for_each_child() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback. The callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero and a reference to the current device can be obtained, this function will return to the caller and not iterate over any more devices. **NOTE** you will need to drop the reference with put_device() after use.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj°Àh]”hŒ Parameters”…”�”}”(hj²Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj®Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MUhjªÀubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ/``struct device *parent`` parent struct device ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjÏÀh]”hŒstruct device *parent”…”�”}”(hjÑÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÍÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MRhjÉÀubjõ)�”}”(hhh]”j[)�”}”(hŒparent struct device”h]”hŒparent struct device”…”�”}”(hjèÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jäÀh´MRhjåÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÉÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jäÀh´MRhjÆÀubjÓ)�”}”(hŒ4``const void *data`` Data to pass to match function ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hjÁh]”hŒconst void *data”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MShjÁubjõ)�”}”(hhh]”j[)�”}”(hŒData to pass to match function”h]”hŒData to pass to match function”…”�”}”(hj!Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÁh´MShjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÁh´MShjÆÀubjÓ)�”}”(hŒ;``device_match_t match`` Callback function to check device ”h]”(jÙ)�”}”(hŒ``device_match_t match``”h]”jß)�”}”(hjAÁh]”hŒdevice_match_t match”…”�”}”(hjCÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj?Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MThj;Áubjõ)�”}”(hhh]”j[)�”}”(hŒ!Callback function to check device”h]”hŒ!Callback function to check device”…”�”}”(hjZÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jVÁh´MThjWÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj;Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jVÁh´MThjÆÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjªÀubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj|Áh]”hŒ Description”…”�”}”(hj~Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjzÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MVhjªÀubj[)�”}”(hŒ­This is similar to the device_for_each_child() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback.”h]”(hŒžThis is similar to the device_for_each_child() function above, but it returns a reference to a device that is ‘found’ for later use, as determined by the ”…”�”}”(hj’Áh²hh³Nh´NubjŠ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjšÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj’ÁubhŒ callback.”…”�”}”(hj’Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MUhjªÀubj[)�”}”(hŒùThe callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero and a reference to the current device can be obtained, this function will return to the caller and not iterate over any more devices.”h]”hŒûThe callback should return 0 if the device doesn’t match and non-zero if it does. If the callback returns non-zero and a reference to the current device can be obtained, this function will return to the caller and not iterate over any more devices.”…”�”}”(hj³Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MYhjªÀubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjÄÁh]”hŒNOTE”…”�”}”(hjÆÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÂÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M^hjªÀubj[)�”}”(hŒ@you will need to drop the reference with put_device() after use.”h]”hŒ@you will need to drop the reference with put_device() after use.”…”�”}”(hjÚÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M_hjªÀubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#__root_device_register (C function)”Œc.__root_device_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒOstruct device * __root_device_register (const char *name, struct module *owner)”h]”hù)�”}”(hŒMstruct device *__root_device_register(const char *name, struct module *owner)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÂh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Möubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂh²hh³jÂh´Möubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj(Âh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj%Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j*ÂŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œ__root_device_register”sbŒc.__root_device_register”†”asbuh1hhjÂh²hh³jÂh´Möubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂh²hh³jÂh´MöubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjWÂh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÂh²hh³jÂh´Möubj")�”}”(hŒ__root_device_register”h]”j()�”}”(hjFÂh]”hŒ__root_device_register”…”�”}”(hjhÂh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjdÂubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÂh²hh³jÂh´Möubj÷7)�”}”(hŒ((const char *name, struct module *owner)”h]”(jý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjƒÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÂubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjžÂh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÂubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjºÂh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÂubj()�”}”(hŒname”h]”hŒname”…”�”}”(hjÇÂh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj{Âubjý7)�”}”(hŒstruct module *owner”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjàÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÜÂubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜÂubh)�”}”(hhh]”j()�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hjþÂh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjûÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÃŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jDÂŒc.__root_device_register”†”asbuh1hhjÜÂubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜÂubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj*Ãh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÜÂubj()�”}”(hŒowner”h]”hŒowner”…”�”}”(hj7Ãh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÜÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj{Âubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÂh²hh³jÂh´Möubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÂh²hh³jÂh´Möubah}”(h]”jüÁah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÂh´MöhjþÁh²hubjV)�”}”(hhh]”j[)�”}”(hŒ#allocate and register a root device”h]”hŒ#allocate and register a root device”…”�”}”(hjaÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Möhj^Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjþÁh²hh³jÂh´Möubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjyÃj{jyÃj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``const char *name`` root device name ``struct module *owner`` owner module of the root device, usually THIS_MODULE **Description** This function allocates a root device and registers it using device_register(). In order to free the returned device, use root_device_unregister(). Root devices are dummy devices which allow other devices to be grouped under /sys/devices. Use this function to allocate a root device and then use it as the parent of any device which should appear under /sys/devices/{name} The /sys/devices/{name} directory will also contain a 'module' symlink which points to the **owner** directory in sysfs. Returns :c:type:`struct device ` pointer on success, or ERR_PTR() on error. **Note** You probably want to use root_device_register().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjƒÃh]”hŒ Parameters”…”�”}”(hj…Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Múhj}ÃubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ&``const char *name`` root device name ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj¢Ãh]”hŒconst char *name”…”�”}”(hj¤Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M÷hjœÃubjõ)�”}”(hhh]”j[)�”}”(hŒroot device name”h]”hŒroot device name”…”�”}”(hj»Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j·Ãh´M÷hj¸Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjœÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j·Ãh´M÷hj™ÃubjÓ)�”}”(hŒN``struct module *owner`` owner module of the root device, usually THIS_MODULE ”h]”(jÙ)�”}”(hŒ``struct module *owner``”h]”jß)�”}”(hjÛÃh]”hŒstruct module *owner”…”�”}”(hjÝÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÙÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MøhjÕÃubjõ)�”}”(hhh]”j[)�”}”(hŒ4owner module of the root device, usually THIS_MODULE”h]”hŒ4owner module of the root device, usually THIS_MODULE”…”�”}”(hjôÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jðÃh´MøhjñÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÕÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jðÃh´Møhj™Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj}Ãubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÄh]”hŒ Description”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Múhj}Ãubj[)�”}”(hŒ“This function allocates a root device and registers it using device_register(). In order to free the returned device, use root_device_unregister().”h]”hŒ“This function allocates a root device and registers it using device_register(). In order to free the returned device, use root_device_unregister().”…”�”}”(hj,Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mùhj}Ãubj[)�”}”(hŒàRoot devices are dummy devices which allow other devices to be grouped under /sys/devices. Use this function to allocate a root device and then use it as the parent of any device which should appear under /sys/devices/{name}”h]”hŒàRoot devices are dummy devices which allow other devices to be grouped under /sys/devices. Use this function to allocate a root device and then use it as the parent of any device which should appear under /sys/devices/{name}”…”�”}”(hj;Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mýhj}Ãubj[)�”}”(hŒxThe /sys/devices/{name} directory will also contain a 'module' symlink which points to the **owner** directory in sysfs.”h]”(hŒ_The /sys/devices/{name} directory will also contain a ‘module’ symlink which points to the ”…”�”}”(hjJÄh²hh³Nh´NubjŠ)�”}”(hŒ **owner**”h]”hŒowner”…”�”}”(hjRÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjJÄubhŒ directory in sysfs.”…”�”}”(hjJÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj}Ãubj[)�”}”(hŒSReturns :c:type:`struct device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hjkÄh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”jß)�”}”(hjuÄh]”hŒ struct device”…”�”}”(hjwÄh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jtŒc-type”eh"]”h$]”h&]”uh1jÞhjsÄubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/infrastructure”Œ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j=8)�”}”j@8]”sbŒ reftarget”Œdevice”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MhjkÄubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hjkÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j˜Äh´Mhj}Ãubj[)�”}”(hŒ**Note**”h]”jŠ)�”}”(hj¥Äh]”hŒNote”…”�”}”(hj§Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj£Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj}Ãubj[)�”}”(hŒ0You probably want to use root_device_register().”h]”hŒ0You probably want to use root_device_register().”…”�”}”(hj»Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj}Ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#root_device_unregister (C function)”Œc.root_device_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0void root_device_unregister (struct device *dev)”h]”hù)�”}”(hŒ/void root_device_unregister(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjêÄh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjæÄh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæÄh²hh³jøÄh´M4ubj")�”}”(hŒroot_device_unregister”h]”j()�”}”(hŒroot_device_unregister”h]”hŒroot_device_unregister”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÅubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjæÄh²hh³jøÄh´M4ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj'Åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj#Åubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#Åubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjEÅh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjBÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jGÅŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j ÅsbŒc.root_device_unregister”†”asbuh1hhj#Åubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#ÅubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjsÅh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj#Åubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj€Åh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj#Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÅubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjæÄh²hh³jøÄh´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjâÄh²hh³jøÄh´M4ubah}”(h]”jÝÄah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jøÄh´M4hjßÄh²hubjV)�”}”(hhh]”j[)�”}”(hŒ!unregister and free a root device”h]”hŒ!unregister and free a root device”…”�”}”(hjªÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M4hj§Åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjßÄh²hh³jøÄh´M4ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÂÅj{jÂÅj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ©**Parameters** ``struct device *dev`` device going away **Description** This function unregisters and cleans up a device that was created by root_device_register().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÌÅh]”hŒ Parameters”…”�”}”(hjÎÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÊÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M8hjÆÅubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ)``struct device *dev`` device going away ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjëÅh]”hŒstruct device *dev”…”�”}”(hjíÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjéÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M5hjåÅubjõ)�”}”(hhh]”j[)�”}”(hŒdevice going away”h]”hŒdevice going away”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÆh´M5hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjåÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÆh´M5hjâÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÆÅubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj&Æh]”hŒ Description”…”�”}”(hj(Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj$Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M7hjÆÅubj[)�”}”(hŒ\This function unregisters and cleans up a device that was created by root_device_register().”h]”hŒ\This function unregisters and cleans up a device that was created by root_device_register().”…”�”}”(hj<Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M6hjÆÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_create (C function)”Œc.device_create”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ�struct device * device_create (const struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...)”h]”hù)�”}”(hŒstruct device *device_create(const struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjkÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjgÆh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mvubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÆh²hh³jxÆh´Mvubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjŠÆh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‡Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jŒÆŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œ device_create”sbŒc.device_create”†”asbuh1hhjgÆh²hh³jxÆh´Mvubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÆh²hh³jxÆh´MvubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¹Æh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjgÆh²hh³jxÆh´Mvubj")�”}”(hŒ device_create”h]”j()�”}”(hj¨Æh]”hŒ device_create”…”�”}”(hjÊÆh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÆÆubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjgÆh²hh³jxÆh´Mvubj÷7)�”}”(hŒc(const struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjåÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjáÆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÆubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjáÆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÆubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j ÇŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¦ÆŒc.device_create”†”asbuh1hhjáÆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÆubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjJÇh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjáÆubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjWÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjáÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÝÆubjý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjpÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjlÇubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlÇubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjŽÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‹Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j�ÇŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¦ÆŒc.device_create”†”asbuh1hhjlÇubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlÇubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjºÇh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjlÇubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÇÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjlÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÝÆubjý7)�”}”(hŒ dev_t devt”h]”(h)�”}”(hhh]”j()�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjãÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjàÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jåÇŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¦ÆŒc.device_create”†”asbuh1hhjÜÇubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜÇubj()�”}”(hŒdevt”h]”hŒdevt”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÜÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÝÆubjý7)�”}”(hŒ void *drvdata”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(Èh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj$Èubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ÈubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjDÈh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj$Èubj()�”}”(hŒdrvdata”h]”hŒdrvdata”…”�”}”(hjQÈh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj$Èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÝÆubjý7)�”}”(hŒconst char *fmt”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjjÈh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjfÈubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfÈubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj…Èh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjfÈubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfÈubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¡Èh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjfÈubj()�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj®Èh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjfÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÝÆubjý7)�”}”(hŒ...”h]”jW8)�”}”(hj<ªh]”hŒ...”…”�”}”(hjÇÈh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÃÈubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÝÆubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjgÆh²hh³jxÆh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjcÆh²hh³jxÆh´Mvubah}”(h]”j^Æah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jxÆh´Mvhj`Æh²hubjV)�”}”(hhh]”j[)�”}”(hŒ,creates a device and registers it with sysfs”h]”hŒ,creates a device and registers it with sysfs”…”�”}”(hjðÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MvhjíÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj`Æh²hh³jxÆh´Mvubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÉj{jÉj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXö**Parameters** ``const struct class *class`` pointer to the struct class that this device should be registered to ``struct device *parent`` pointer to the parent struct device of this new device, if any ``dev_t devt`` the dev_t for the char device to be added ``void *drvdata`` the data to be added to the device for callbacks ``const char *fmt`` string for the device's name ``...`` variable arguments **Description** This function can be used by char device classes. A struct device will be created in sysfs, registered to the specified class. A "dev" file will be created, showing the dev_t for the device, if the dev_t is not 0,0. If a pointer to a parent struct device is passed in, the newly created struct device will be a child of that device in sysfs. The pointer to the struct device will be returned from the call. Any further sysfs files that might be required can be created using this pointer. Returns :c:type:`struct device ` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÉh]”hŒ Parameters”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mzhj ÉubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒc``const struct class *class`` pointer to the struct class that this device should be registered to ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hj1Éh]”hŒconst struct class *class”…”�”}”(hj3Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj/Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mwhj+Éubjõ)�”}”(hhh]”j[)�”}”(hŒDpointer to the struct class that this device should be registered to”h]”hŒDpointer to the struct class that this device should be registered to”…”�”}”(hjJÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jFÉh´MwhjGÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj+Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jFÉh´Mwhj(ÉubjÓ)�”}”(hŒY``struct device *parent`` pointer to the parent struct device of this new device, if any ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjjÉh]”hŒstruct device *parent”…”�”}”(hjlÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjhÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MxhjdÉubjõ)�”}”(hhh]”j[)�”}”(hŒ>pointer to the parent struct device of this new device, if any”h]”hŒ>pointer to the parent struct device of this new device, if any”…”�”}”(hjƒÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÉh´Mxhj€Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjdÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÉh´Mxhj(ÉubjÓ)�”}”(hŒ9``dev_t devt`` the dev_t for the char device to be added ”h]”(jÙ)�”}”(hŒ``dev_t devt``”h]”jß)�”}”(hj£Éh]”hŒ dev_t devt”…”�”}”(hj¥Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Myhj�Éubjõ)�”}”(hhh]”j[)�”}”(hŒ)the dev_t for the char device to be added”h]”hŒ)the dev_t for the char device to be added”…”�”}”(hj¼Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¸Éh´Myhj¹Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¸Éh´Myhj(ÉubjÓ)�”}”(hŒC``void *drvdata`` the data to be added to the device for callbacks ”h]”(jÙ)�”}”(hŒ``void *drvdata``”h]”jß)�”}”(hjÜÉh]”hŒ void *drvdata”…”�”}”(hjÞÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MzhjÖÉubjõ)�”}”(hhh]”j[)�”}”(hŒ0the data to be added to the device for callbacks”h]”hŒ0the data to be added to the device for callbacks”…”�”}”(hjõÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jñÉh´MzhjòÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÖÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jñÉh´Mzhj(ÉubjÓ)�”}”(hŒ1``const char *fmt`` string for the device's name ”h]”(jÙ)�”}”(hŒ``const char *fmt``”h]”jß)�”}”(hjÊh]”hŒconst char *fmt”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M{hjÊubjõ)�”}”(hhh]”j[)�”}”(hŒstring for the device's name”h]”hŒstring for the device’s name”…”�”}”(hj.Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j*Êh´M{hj+Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j*Êh´M{hj(ÉubjÓ)�”}”(hŒ``...`` variable arguments ”h]”(jÙ)�”}”(hŒ``...``”h]”jß)�”}”(hjNÊh]”hŒ...”…”�”}”(hjPÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´KhjHÊubjõ)�”}”(hhh]”j[)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjgÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jcÊh´KhjdÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjHÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jcÊh´Khj(Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj Éubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj‰Êh]”hŒ Description”…”�”}”(hj‹Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‡Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Khj Éubj[)�”}”(hŒThis function can be used by char device classes. A struct device will be created in sysfs, registered to the specified class.”h]”hŒThis function can be used by char device classes. A struct device will be created in sysfs, registered to the specified class.”…”�”}”(hjŸÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M|hj Éubj[)�”}”(hXiA "dev" file will be created, showing the dev_t for the device, if the dev_t is not 0,0. If a pointer to a parent struct device is passed in, the newly created struct device will be a child of that device in sysfs. The pointer to the struct device will be returned from the call. Any further sysfs files that might be required can be created using this pointer.”h]”hXmA “devâ€� file will be created, showing the dev_t for the device, if the dev_t is not 0,0. If a pointer to a parent struct device is passed in, the newly created struct device will be a child of that device in sysfs. The pointer to the struct device will be returned from the call. Any further sysfs files that might be required can be created using this pointer.”…”�”}”(hj®Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj Éubj[)�”}”(hŒSReturns :c:type:`struct device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hj½Êh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”jß)�”}”(hjÇÊh]”hŒ struct device”…”�”}”(hjÉÊh²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhjÅÊubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒdevice”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M‡hj½ÊubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hj½Êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jäÊh´M‡hj Éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&device_create_with_groups (C function)”Œc.device_create_with_groups”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ´struct device * device_create_with_groups (const struct class *class, struct device *parent, dev_t devt, void *drvdata, const struct attribute_group **groups, const char *fmt, ...)”h]”hù)�”}”(hŒ²struct device *device_create_with_groups(const struct class *class, struct device *parent, dev_t devt, void *drvdata, const struct attribute_group **groups, const char *fmt, ...)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj Ëh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M™ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Ëh²hh³jËh´M™ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj.Ëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj+Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j0ËŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œdevice_create_with_groups”sbŒc.device_create_with_groups”†”asbuh1hhj Ëh²hh³jËh´M™ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Ëh²hh³jËh´M™ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj]Ëh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj Ëh²hh³jËh´M™ubj")�”}”(hŒdevice_create_with_groups”h]”j()�”}”(hjLËh]”hŒdevice_create_with_groups”…”�”}”(hjnËh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjËubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj Ëh²hh³jËh´M™ubj÷7)�”}”(hŒŠ(const struct class *class, struct device *parent, dev_t devt, void *drvdata, const struct attribute_group **groups, const char *fmt, ...)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj‰Ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj…Ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Ëubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¤Ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj…Ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Ëubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjÂËh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¿Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÄËŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jJËŒc.device_create_with_groups”†”asbuh1hhj…Ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ËubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjîËh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj…Ëubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjûËh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj…Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubjý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÌubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj2Ìh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj/Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j4ÌŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jJËŒc.device_create_with_groups”†”asbuh1hhjÌubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj^Ìh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÌubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjkÌh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubjý7)�”}”(hŒ dev_t devt”h]”(h)�”}”(hhh]”j()�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hj‡Ìh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj„Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j‰ÌŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jJËŒc.device_create_with_groups”†”asbuh1hhj€Ìubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Ìubj()�”}”(hŒdevt”h]”hŒdevt”…”�”}”(hj³Ìh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj€Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubjý7)�”}”(hŒ void *drvdata”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌÌh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÈÌubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈÌubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjèÌh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÈÌubj()�”}”(hŒdrvdata”h]”hŒdrvdata”…”�”}”(hjõÌh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubjý7)�”}”(hŒ%const struct attribute_group **groups”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj Íubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Íubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj)Íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj Íubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Íubh)�”}”(hhh]”j()�”}”(hŒattribute_group”h]”hŒattribute_group”…”�”}”(hjGÍh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjDÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jIÍŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jJËŒc.device_create_with_groups”†”asbuh1hhj Íubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ÍubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjsÍh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj ÍubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj€Íh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj Íubj()�”}”(hŒgroups”h]”hŒgroups”…”�”}”(hj�Íh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubjý7)�”}”(hŒconst char *fmt”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¦Íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¢Íubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢Íubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÁÍh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¢Íubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢ÍubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÝÍh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¢Íubj()�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjêÍh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¢Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubjý7)�”}”(hŒ...”h]”jW8)�”}”(hj<ªh]”hŒ...”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÿÍubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�Ëubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj Ëh²hh³jËh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjËh²hh³jËh´M™ubah}”(h]”jËah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jËh´M™hjËh²hubjV)�”}”(hhh]”j[)�”}”(hŒ,creates a device and registers it with sysfs”h]”hŒ,creates a device and registers it with sysfs”…”�”}”(hj,Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M™hj)Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjËh²hh³jËh´M™ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjDÎj{jDÎj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX¶**Parameters** ``const struct class *class`` pointer to the struct class that this device should be registered to ``struct device *parent`` pointer to the parent struct device of this new device, if any ``dev_t devt`` the dev_t for the char device to be added ``void *drvdata`` the data to be added to the device for callbacks ``const struct attribute_group **groups`` NULL-terminated list of attribute groups to be created ``const char *fmt`` string for the device's name ``...`` variable arguments **Description** This function can be used by char device classes. A struct device will be created in sysfs, registered to the specified class. Additional attributes specified in the groups parameter will also be created automatically. A "dev" file will be created, showing the dev_t for the device, if the dev_t is not 0,0. If a pointer to a parent struct device is passed in, the newly created struct device will be a child of that device in sysfs. The pointer to the struct device will be returned from the call. Any further sysfs files that might be required can be created using this pointer. Returns :c:type:`struct device ` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjNÎh]”hŒ Parameters”…”�”}”(hjPÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjLÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M�hjHÎubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒc``const struct class *class`` pointer to the struct class that this device should be registered to ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hjmÎh]”hŒconst struct class *class”…”�”}”(hjoÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjkÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MšhjgÎubjõ)�”}”(hhh]”j[)�”}”(hŒDpointer to the struct class that this device should be registered to”h]”hŒDpointer to the struct class that this device should be registered to”…”�”}”(hj†Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‚Îh´MšhjƒÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjgÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‚Îh´MšhjdÎubjÓ)�”}”(hŒY``struct device *parent`` pointer to the parent struct device of this new device, if any ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hj¦Îh]”hŒstruct device *parent”…”�”}”(hj¨Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¤Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M›hj Îubjõ)�”}”(hhh]”j[)�”}”(hŒ>pointer to the parent struct device of this new device, if any”h]”hŒ>pointer to the parent struct device of this new device, if any”…”�”}”(hj¿Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j»Îh´M›hj¼Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j»Îh´M›hjdÎubjÓ)�”}”(hŒ9``dev_t devt`` the dev_t for the char device to be added ”h]”(jÙ)�”}”(hŒ``dev_t devt``”h]”jß)�”}”(hjßÎh]”hŒ dev_t devt”…”�”}”(hjáÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÝÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MœhjÙÎubjõ)�”}”(hhh]”j[)�”}”(hŒ)the dev_t for the char device to be added”h]”hŒ)the dev_t for the char device to be added”…”�”}”(hjøÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jôÎh´MœhjõÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÙÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jôÎh´MœhjdÎubjÓ)�”}”(hŒC``void *drvdata`` the data to be added to the device for callbacks ”h]”(jÙ)�”}”(hŒ``void *drvdata``”h]”jß)�”}”(hjÏh]”hŒ void *drvdata”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M�hjÏubjõ)�”}”(hhh]”j[)�”}”(hŒ0the data to be added to the device for callbacks”h]”hŒ0the data to be added to the device for callbacks”…”�”}”(hj1Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j-Ïh´M�hj.Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j-Ïh´M�hjdÎubjÓ)�”}”(hŒa``const struct attribute_group **groups`` NULL-terminated list of attribute groups to be created ”h]”(jÙ)�”}”(hŒ)``const struct attribute_group **groups``”h]”jß)�”}”(hjQÏh]”hŒ%const struct attribute_group **groups”…”�”}”(hjSÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjOÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MžhjKÏubjõ)�”}”(hhh]”j[)�”}”(hŒ6NULL-terminated list of attribute groups to be created”h]”hŒ6NULL-terminated list of attribute groups to be created”…”�”}”(hjjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jfÏh´MžhjgÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjKÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jfÏh´MžhjdÎubjÓ)�”}”(hŒ1``const char *fmt`` string for the device's name ”h]”(jÙ)�”}”(hŒ``const char *fmt``”h]”jß)�”}”(hjŠÏh]”hŒconst char *fmt”…”�”}”(hjŒÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjˆÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MŸhj„Ïubjõ)�”}”(hhh]”j[)�”}”(hŒstring for the device's name”h]”hŒstring for the device’s name”…”�”}”(hj£Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŸÏh´MŸhj Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj„Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŸÏh´MŸhjdÎubjÓ)�”}”(hŒ``...`` variable arguments ”h]”(jÙ)�”}”(hŒ``...``”h]”jß)�”}”(hjÃÏh]”hŒ...”…”�”}”(hjÅÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÁÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Khj½Ïubjõ)�”}”(hhh]”j[)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjÜÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jØÏh´KhjÙÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj½Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jØÏh´KhjdÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjHÎubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjþÏh]”hŒ Description”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjüÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´KhjHÎubj[)�”}”(hŒÛThis function can be used by char device classes. A struct device will be created in sysfs, registered to the specified class. Additional attributes specified in the groups parameter will also be created automatically.”h]”hŒÛThis function can be used by char device classes. A struct device will be created in sysfs, registered to the specified class. Additional attributes specified in the groups parameter will also be created automatically.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hjHÎubj[)�”}”(hXiA "dev" file will be created, showing the dev_t for the device, if the dev_t is not 0,0. If a pointer to a parent struct device is passed in, the newly created struct device will be a child of that device in sysfs. The pointer to the struct device will be returned from the call. Any further sysfs files that might be required can be created using this pointer.”h]”hXmA “devâ€� file will be created, showing the dev_t for the device, if the dev_t is not 0,0. If a pointer to a parent struct device is passed in, the newly created struct device will be a child of that device in sysfs. The pointer to the struct device will be returned from the call. Any further sysfs files that might be required can be created using this pointer.”…”�”}”(hj#Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¥hjHÎubj[)�”}”(hŒSReturns :c:type:`struct device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hj2Ðh²hh³Nh´Nubh)�”}”(hŒ :c:type:`struct device `”h]”jß)�”}”(hj<Ðh]”hŒ struct device”…”�”}”(hj>Ðh²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhj:Ðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒdevice”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M­hj2ÐubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hj2Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jYÐh´M­hjHÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_destroy (C function)”Œc.device_destroy”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;void device_destroy (const struct class *class, dev_t devt)”h]”hù)�”}”(hŒ:void device_destroy(const struct class *class, dev_t devt)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„Ðh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj€Ðh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÂubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Ðh²hh³j’Ðh´MÂubj")�”}”(hŒdevice_destroy”h]”j()�”}”(hŒdevice_destroy”h]”hŒdevice_destroy”…”�”}”(hj¥Ðh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¡Ðubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj€Ðh²hh³j’Ðh´MÂubj÷7)�”}”(hŒ'(const struct class *class, dev_t devt)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÁÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj½Ðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Ðubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÜÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj½Ðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Ðubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjúÐh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj÷Ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jüÐŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j§ÐsbŒc.device_destroy”†”asbuh1hhj½Ðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½ÐubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj(Ñh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj½Ðubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj5Ñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¹Ðubjý7)�”}”(hŒ dev_t devt”h]”(h)�”}”(hhh]”j()�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjQÑh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjNÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jSÑŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÑŒc.device_destroy”†”asbuh1hhjJÑubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJÑubj()�”}”(hŒdevt”h]”hŒdevt”…”�”}”(hj}Ñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjJÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¹Ðubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj€Ðh²hh³j’Ðh´MÂubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj|Ðh²hh³j’Ðh´MÂubah}”(h]”jwÐah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j’Ðh´MÂhjyÐh²hubjV)�”}”(hhh]”j[)�”}”(hŒ6removes a device that was created with device_create()”h]”hŒ6removes a device that was created with device_create()”…”�”}”(hj§Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÂhj¤Ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjyÐh²hh³j’Ðh´MÂubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¿Ñj{j¿Ñj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX)**Parameters** ``const struct class *class`` pointer to the struct class that this device was registered with ``dev_t devt`` the dev_t of the device that was previously registered **Description** This call unregisters and cleans up a device that was created with a call to device_create().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÉÑh]”hŒ Parameters”…”�”}”(hjËÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÇÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÆhjÃÑubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ_``const struct class *class`` pointer to the struct class that this device was registered with ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hjèÑh]”hŒconst struct class *class”…”�”}”(hjêÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjæÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÃhjâÑubjõ)�”}”(hhh]”j[)�”}”(hŒ@pointer to the struct class that this device was registered with”h]”hŒ@pointer to the struct class that this device was registered with”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jýÑh´MÃhjþÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjâÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jýÑh´MÃhjßÑubjÓ)�”}”(hŒF``dev_t devt`` the dev_t of the device that was previously registered ”h]”(jÙ)�”}”(hŒ``dev_t devt``”h]”jß)�”}”(hj!Òh]”hŒ dev_t devt”…”�”}”(hj#Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÄhjÒubjõ)�”}”(hhh]”j[)�”}”(hŒ6the dev_t of the device that was previously registered”h]”hŒ6the dev_t of the device that was previously registered”…”�”}”(hj:Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j6Òh´MÄhj7Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j6Òh´MÄhjßÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÃÑubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj\Òh]”hŒ Description”…”�”}”(hj^Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjZÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÆhjÃÑubj[)�”}”(hŒ]This call unregisters and cleans up a device that was created with a call to device_create().”h]”hŒ]This call unregisters and cleans up a device that was created with a call to device_create().”…”�”}”(hjrÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÅhjÃÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_rename (C function)”Œc.device_rename”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒÕsbŒ c.device_move”†”asbuh1hhjTÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÕubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¤Õh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjTÕubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj±Õh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjTÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÕubjý7)�”}”(hŒstruct device *new_parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÊÕh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÆÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆÕubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjèÕh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjåÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jêÕŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j’ÕŒ c.device_move”†”asbuh1hhjÆÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆÕubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÆÕubj()�”}”(hŒ new_parent”h]”hŒ new_parent”…”�”}”(hj!Öh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÆÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÕubjý7)�”}”(hŒenum dpm_order dpm_order”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hj:Öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj6Öubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Öubh)�”}”(hhh]”j()�”}”(hŒ dpm_order”h]”hŒ dpm_order”…”�”}”(hjXÖh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjUÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jZÖŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j’ÕŒ c.device_move”†”asbuh1hhj6Öubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Öubj()�”}”(hŒ dpm_order”h]”hŒ dpm_order”…”�”}”(hj„Öh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj6Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÕubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÕh²hh³j)Õh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÕh²hh³j)Õh´M:ubah}”(h]”jÕah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j)Õh´M:hjÕh²hubjV)�”}”(hhh]”j[)�”}”(hŒmoves a device to a new parent”h]”hŒmoves a device to a new parent”…”�”}”(hj®Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M:hj«Öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÕh²hh³j)Õh´M:ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÆÖj{jÆÖj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÝ**Parameters** ``struct device *dev`` the pointer to the struct device to be moved ``struct device *new_parent`` the new parent of the device (can be NULL) ``enum dpm_order dpm_order`` how to reorder the dpm_list”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÐÖh]”hŒ Parameters”…”�”}”(hjÒÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÎÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M>hjÊÖubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒD``struct device *dev`` the pointer to the struct device to be moved ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjïÖh]”hŒstruct device *dev”…”�”}”(hjñÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjíÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M;hjéÖubjõ)�”}”(hhh]”j[)�”}”(hŒ,the pointer to the struct device to be moved”h]”hŒ,the pointer to the struct device to be moved”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j×h´M;hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjéÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j×h´M;hjæÖubjÓ)�”}”(hŒI``struct device *new_parent`` the new parent of the device (can be NULL) ”h]”(jÙ)�”}”(hŒ``struct device *new_parent``”h]”jß)�”}”(hj(×h]”hŒstruct device *new_parent”…”�”}”(hj*×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj&×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M<hj"×ubjõ)�”}”(hhh]”j[)�”}”(hŒ*the new parent of the device (can be NULL)”h]”hŒ*the new parent of the device (can be NULL)”…”�”}”(hjA×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j=×h´M<hj>×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj"×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j=×h´M<hjæÖubjÓ)�”}”(hŒ8``enum dpm_order dpm_order`` how to reorder the dpm_list”h]”(jÙ)�”}”(hŒ``enum dpm_order dpm_order``”h]”jß)�”}”(hja×h]”hŒenum dpm_order dpm_order”…”�”}”(hjc×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj_×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M>hj[×ubjõ)�”}”(hhh]”j[)�”}”(hŒhow to reorder the dpm_list”h]”hŒhow to reorder the dpm_list”…”�”}”(hjz×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M=hjw×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj[×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jv×h´M>hjæÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÊÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_err_probe (C function)”Œc.dev_err_probe”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒKint dev_err_probe (const struct device *dev, int err, const char *fmt, ...)”h]”hù)�”}”(hŒJint dev_err_probe(const struct device *dev, int err, const char *fmt, ...)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj»×h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj·×h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mýubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·×h²hh³jÉ×h´Mýubj")�”}”(hŒ dev_err_probe”h]”j()�”}”(hŒ dev_err_probe”h]”hŒ dev_err_probe”…”�”}”(hjÜ×h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjØ×ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj·×h²hh³jÉ×h´Mýubj÷7)�”}”(hŒ9(const struct device *dev, int err, const char *fmt, ...)”h]”(jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjø×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjô×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô×ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjô×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô×ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj1Øh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj.Øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j3ØŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÞ×sbŒc.dev_err_probe”†”asbuh1hhjô×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô×ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj_Øh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjô×ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjlØh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjô×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjð×ubjý7)�”}”(hŒint err”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj…Øh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj�Øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Øubj()�”}”(hŒerr”h]”hŒerr”…”�”}”(hj¡Øh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjð×ubjý7)�”}”(hŒconst char *fmt”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjºØh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¶Øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶Øubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÕØh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¶Øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ØubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjñØh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¶Øubj()�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjþØh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¶Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjð×ubjý7)�”}”(hŒ...”h]”jW8)�”}”(hj<ªh]”hŒ...”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÙubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjð×ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj·×h²hh³jÉ×h´Mýubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj³×h²hh³jÉ×h´Mýubah}”(h]”j®×ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÉ×h´Mýhj°×h²hubjV)�”}”(hhh]”j[)�”}”(hŒ probe error check and log helper”h]”hŒ probe error check and log helper”…”�”}”(hj@Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mýhj=Ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj°×h²hh³jÉ×h´Mýubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjXÙj{jXÙj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXk**Parameters** ``const struct device *dev`` the pointer to the struct device ``int err`` error value to test ``const char *fmt`` printf-style format string ``...`` arguments as specified in the format string **Description** This helper implements common pattern present in probe functions for error checking: print debug or error message depending if the error value is -EPROBE_DEFER and propagate error upwards. In case of -EPROBE_DEFER it sets also defer probe reason, which can be checked later by reading devices_deferred debugfs attribute. It replaces the following code sequence:: if (err != -EPROBE_DEFER) dev_err(dev, ...); else dev_dbg(dev, ...); return err; with:: return dev_err_probe(dev, err, ...); Using this helper in your probe function is totally fine even if **err** is known to never be -EPROBE_DEFER. The benefit compared to a normal dev_err() is the standardized format of the error code, which is emitted symbolically (i.e. you get "EAGAIN" instead of "-35"), and having the error code returned allows more compact error paths. Returns **err**.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjbÙh]”hŒ Parameters”…”�”}”(hjdÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj`Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\ÙubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ>``const struct device *dev`` the pointer to the struct device ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hj�Ùh]”hŒconst struct device *dev”…”�”}”(hjƒÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mþhj{Ùubjõ)�”}”(hhh]”j[)�”}”(hŒ the pointer to the struct device”h]”hŒ the pointer to the struct device”…”�”}”(hjšÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j–Ùh´Mþhj—Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj{Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j–Ùh´MþhjxÙubjÓ)�”}”(hŒ ``int err`` error value to test ”h]”(jÙ)�”}”(hŒ ``int err``”h]”jß)�”}”(hjºÙh]”hŒint err”…”�”}”(hj¼Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mÿhj´Ùubjõ)�”}”(hhh]”j[)�”}”(hŒerror value to test”h]”hŒerror value to test”…”�”}”(hjÓÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÏÙh´MÿhjÐÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj´Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÏÙh´MÿhjxÙubjÓ)�”}”(hŒ/``const char *fmt`` printf-style format string ”h]”(jÙ)�”}”(hŒ``const char *fmt``”h]”jß)�”}”(hjóÙh]”hŒconst char *fmt”…”�”}”(hjõÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MhjíÙubjõ)�”}”(hhh]”j[)�”}”(hŒprintf-style format string”h]”hŒprintf-style format string”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÚh´Mhj Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjíÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÚh´MhjxÙubjÓ)�”}”(hŒ4``...`` arguments as specified in the format string ”h]”(jÙ)�”}”(hŒ``...``”h]”jß)�”}”(hj,Úh]”hŒ...”…”�”}”(hj.Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj*Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj&Úubjõ)�”}”(hhh]”j[)�”}”(hŒ+arguments as specified in the format string”h]”hŒ+arguments as specified in the format string”…”�”}”(hjEÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jAÚh´MhjBÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj&Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jAÚh´MhjxÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj\Ùubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjgÚh]”hŒ Description”…”�”}”(hjiÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjeÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\Ùubj[)�”}”(hXjThis helper implements common pattern present in probe functions for error checking: print debug or error message depending if the error value is -EPROBE_DEFER and propagate error upwards. In case of -EPROBE_DEFER it sets also defer probe reason, which can be checked later by reading devices_deferred debugfs attribute. It replaces the following code sequence::”h]”hXiThis helper implements common pattern present in probe functions for error checking: print debug or error message depending if the error value is -EPROBE_DEFER and propagate error upwards. In case of -EPROBE_DEFER it sets also defer probe reason, which can be checked later by reading devices_deferred debugfs attribute. It replaces the following code sequence:”…”�”}”(hj}Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\Ùubj¥)�”}”(hŒ`if (err != -EPROBE_DEFER) dev_err(dev, ...); else dev_dbg(dev, ...); return err;”h]”hŒ`if (err != -EPROBE_DEFER) dev_err(dev, ...); else dev_dbg(dev, ...); return err;”…”�”}”hjŒÚsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M hj\Ùubj[)�”}”(hŒwith::”h]”hŒwith:”…”�”}”(hj›Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\Ùubj¥)�”}”(hŒ$return dev_err_probe(dev, err, ...);”h]”hŒ$return dev_err_probe(dev, err, ...);”…”�”}”hjªÚsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\Ùubj[)�”}”(hXQUsing this helper in your probe function is totally fine even if **err** is known to never be -EPROBE_DEFER. The benefit compared to a normal dev_err() is the standardized format of the error code, which is emitted symbolically (i.e. you get "EAGAIN" instead of "-35"), and having the error code returned allows more compact error paths.”h]”(hŒAUsing this helper in your probe function is totally fine even if ”…”�”}”(hj¹Úh²hh³Nh´NubjŠ)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hjÁÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¹ÚubhX is known to never be -EPROBE_DEFER. The benefit compared to a normal dev_err() is the standardized format of the error code, which is emitted symbolically (i.e. you get “EAGAINâ€� instead of “-35â€�), and having the error code returned allows more compact error paths.”…”�”}”(hj¹Úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\Ùubj[)�”}”(hŒReturns **err**.”h]”(hŒReturns ”…”�”}”(hjÚÚh²hh³Nh´NubjŠ)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hjâÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÚÚubhŒ.”…”�”}”(hjÚÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhj\Ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdev_warn_probe (C function)”Œc.dev_warn_probe”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLint dev_warn_probe (const struct device *dev, int err, const char *fmt, ...)”h]”hù)�”}”(hŒKint dev_warn_probe(const struct device *dev, int err, const char *fmt, ...)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÛh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M-ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛh²hh³j)Ûh´M-ubj")�”}”(hŒdev_warn_probe”h]”j()�”}”(hŒdev_warn_probe”h]”hŒdev_warn_probe”…”�”}”(hj<Ûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj8Ûubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÛh²hh³j)Ûh´M-ubj÷7)�”}”(hŒ9(const struct device *dev, int err, const char *fmt, ...)”h]”(jý7)�”}”(hŒconst struct device *dev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjXÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjTÛubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÛubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjsÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjTÛubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÛubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj‘Ûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŽÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j“ÛŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j>ÛsbŒc.dev_warn_probe”†”asbuh1hhjTÛubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÛubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¿Ûh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjTÛubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÌÛh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjTÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÛubjý7)�”}”(hŒint err”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjåÛh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjáÛubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÛubj()�”}”(hŒerr”h]”hŒerr”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjáÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÛubjý7)�”}”(hŒconst char *fmt”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÜubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj5Üh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÜubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjQÜh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÜubj()�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj^Üh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÛubjý7)�”}”(hŒ...”h]”jW8)�”}”(hj<ªh]”hŒ...”…”�”}”(hjwÜh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjsÜubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÛubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÛh²hh³j)Ûh´M-ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÛh²hh³j)Ûh´M-ubah}”(h]”jÛah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j)Ûh´M-hjÛh²hubjV)�”}”(hhh]”j[)�”}”(hŒ probe error check and log helper”h]”hŒ probe error check and log helper”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M-hj�Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÛh²hh³j)Ûh´M-ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¸Üj{j¸Üj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXp**Parameters** ``const struct device *dev`` the pointer to the struct device ``int err`` error value to test ``const char *fmt`` printf-style format string ``...`` arguments as specified in the format string **Description** This helper implements common pattern present in probe functions for error checking: print debug or warning message depending if the error value is -EPROBE_DEFER and propagate error upwards. In case of -EPROBE_DEFER it sets also defer probe reason, which can be checked later by reading devices_deferred debugfs attribute. It replaces the following code sequence:: if (err != -EPROBE_DEFER) dev_warn(dev, ...); else dev_dbg(dev, ...); return err; with:: return dev_warn_probe(dev, err, ...); Using this helper in your probe function is totally fine even if **err** is known to never be -EPROBE_DEFER. The benefit compared to a normal dev_warn() is the standardized format of the error code, which is emitted symbolically (i.e. you get "EAGAIN" instead of "-35"), and having the error code returned allows more compact error paths. Returns **err**.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÂÜh]”hŒ Parameters”…”�”}”(hjÄÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÀÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M1hj¼ÜubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ>``const struct device *dev`` the pointer to the struct device ”h]”(jÙ)�”}”(hŒ``const struct device *dev``”h]”jß)�”}”(hjáÜh]”hŒconst struct device *dev”…”�”}”(hjãÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjßÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M.hjÛÜubjõ)�”}”(hhh]”j[)�”}”(hŒ the pointer to the struct device”h]”hŒ the pointer to the struct device”…”�”}”(hjúÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jöÜh´M.hj÷Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÛÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jöÜh´M.hjØÜubjÓ)�”}”(hŒ ``int err`` error value to test ”h]”(jÙ)�”}”(hŒ ``int err``”h]”jß)�”}”(hjÝh]”hŒint err”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M/hjÝubjõ)�”}”(hhh]”j[)�”}”(hŒerror value to test”h]”hŒerror value to test”…”�”}”(hj3Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j/Ýh´M/hj0Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j/Ýh´M/hjØÜubjÓ)�”}”(hŒ/``const char *fmt`` printf-style format string ”h]”(jÙ)�”}”(hŒ``const char *fmt``”h]”jß)�”}”(hjSÝh]”hŒconst char *fmt”…”�”}”(hjUÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M0hjMÝubjõ)�”}”(hhh]”j[)�”}”(hŒprintf-style format string”h]”hŒprintf-style format string”…”�”}”(hjlÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jhÝh´M0hjiÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjMÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jhÝh´M0hjØÜubjÓ)�”}”(hŒ4``...`` arguments as specified in the format string ”h]”(jÙ)�”}”(hŒ``...``”h]”jß)�”}”(hjŒÝh]”hŒ...”…”�”}”(hjŽÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M1hj†Ýubjõ)�”}”(hhh]”j[)�”}”(hŒ+arguments as specified in the format string”h]”hŒ+arguments as specified in the format string”…”�”}”(hj¥Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¡Ýh´M1hj¢Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡Ýh´M1hjØÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¼Üubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÇÝh]”hŒ Description”…”�”}”(hjÉÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÅÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M3hj¼Üubj[)�”}”(hXlThis helper implements common pattern present in probe functions for error checking: print debug or warning message depending if the error value is -EPROBE_DEFER and propagate error upwards. In case of -EPROBE_DEFER it sets also defer probe reason, which can be checked later by reading devices_deferred debugfs attribute. It replaces the following code sequence::”h]”hXkThis helper implements common pattern present in probe functions for error checking: print debug or warning message depending if the error value is -EPROBE_DEFER and propagate error upwards. In case of -EPROBE_DEFER it sets also defer probe reason, which can be checked later by reading devices_deferred debugfs attribute. It replaces the following code sequence:”…”�”}”(hjÝÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M2hj¼Üubj¥)�”}”(hŒaif (err != -EPROBE_DEFER) dev_warn(dev, ...); else dev_dbg(dev, ...); return err;”h]”hŒaif (err != -EPROBE_DEFER) dev_warn(dev, ...); else dev_dbg(dev, ...); return err;”…”�”}”hjìÝsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M9hj¼Üubj[)�”}”(hŒwith::”h]”hŒwith:”…”�”}”(hjûÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M?hj¼Üubj¥)�”}”(hŒ%return dev_warn_probe(dev, err, ...);”h]”hŒ%return dev_warn_probe(dev, err, ...);”…”�”}”hj Þsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MAhj¼Üubj[)�”}”(hXRUsing this helper in your probe function is totally fine even if **err** is known to never be -EPROBE_DEFER. The benefit compared to a normal dev_warn() is the standardized format of the error code, which is emitted symbolically (i.e. you get "EAGAIN" instead of "-35"), and having the error code returned allows more compact error paths.”h]”(hŒAUsing this helper in your probe function is totally fine even if ”…”�”}”(hjÞh²hh³Nh´NubjŠ)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hj!Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÞubhX is known to never be -EPROBE_DEFER. The benefit compared to a normal dev_warn() is the standardized format of the error code, which is emitted symbolically (i.e. you get “EAGAINâ€� instead of “-35â€�), and having the error code returned allows more compact error paths.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MChj¼Üubj[)�”}”(hŒReturns **err**.”h]”(hŒReturns ”…”�”}”(hj:Þh²hh³Nh´NubjŠ)�”}”(hŒ**err**”h]”hŒerr”…”�”}”(hjBÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj:ÞubhŒ.”…”�”}”(hj:Þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MJhj¼Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒset_primary_fwnode (C function)”Œc.set_primary_fwnode”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒJvoid set_primary_fwnode (struct device *dev, struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒIvoid set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj{Þh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjwÞh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mbubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwÞh²hh³j‰Þh´Mbubj")�”}”(hŒset_primary_fwnode”h]”j()�”}”(hŒset_primary_fwnode”h]”hŒset_primary_fwnode”…”�”}”(hjœÞh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj˜Þubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjwÞh²hh³j‰Þh´Mbubj÷7)�”}”(hŒ2(struct device *dev, struct fwnode_handle *fwnode)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¸Þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj´Þubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Þubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÖÞh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÓÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jØÞŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jžÞsbŒc.set_primary_fwnode”†”asbuh1hhj´Þubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´ÞubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj´Þubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj°Þubjý7)�”}”(hŒstruct fwnode_handle *fwnode”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj*ßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj&ßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ßubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjHßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjEßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jJߌmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jòÞŒc.set_primary_fwnode”†”asbuh1hhj&ßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ßubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjtßh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj&ßubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj&ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj°Þubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjwÞh²hh³j‰Þh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjsÞh²hh³j‰Þh´Mbubah}”(h]”jnÞah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j‰Þh´MbhjpÞh²hubjV)�”}”(hhh]”j[)�”}”(hŒ3Change the primary firmware node of a given device.”h]”hŒ3Change the primary firmware node of a given device.”…”�”}”(hj«ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mbhj¨ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjpÞh²hh³j‰Þh´Mbubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÃßj{jÃßj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXŠ**Parameters** ``struct device *dev`` Device to handle. ``struct fwnode_handle *fwnode`` New primary firmware node of the device. **Description** Set the device's firmware node pointer to **fwnode**, but if a secondary firmware node of the device is present, preserve it. Valid fwnode cases are: - primary --> secondary --> -ENODEV - primary --> NULL - secondary --> -ENODEV - NULL”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÍßh]”hŒ Parameters”…”�”}”(hjÏßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjËßubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MfhjÇßubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``struct device *dev`` Device to handle. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjìßh]”hŒstruct device *dev”…”�”}”(hjîßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjêßubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mchjæßubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to handle.”h]”hŒDevice to handle.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jàh´Mchjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjæßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jàh´MchjãßubjÓ)�”}”(hŒJ``struct fwnode_handle *fwnode`` New primary firmware node of the device. ”h]”(jÙ)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jß)�”}”(hj%àh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hj'àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj#àubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mdhjàubjõ)�”}”(hhh]”j[)�”}”(hŒ(New primary firmware node of the device.”h]”hŒ(New primary firmware node of the device.”…”�”}”(hj>àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j:àh´Mdhj;àubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j:àh´Mdhjãßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÇßubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj`àh]”hŒ Description”…”�”}”(hjbàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj^àubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MfhjÇßubj[)�”}”(hŒ}Set the device's firmware node pointer to **fwnode**, but if a secondary firmware node of the device is present, preserve it.”h]”(hŒ,Set the device’s firmware node pointer to ”…”�”}”(hjvàh²hh³Nh´NubjŠ)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hj~àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjvàubhŒI, but if a secondary firmware node of the device is present, preserve it.”…”�”}”(hjvàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MehjÇßubjÎ)�”}”(hhh]”jÓ)�”}”(hŒmValid fwnode cases are: - primary --> secondary --> -ENODEV - primary --> NULL - secondary --> -ENODEV - NULL”h]”(jÙ)�”}”(hŒValid fwnode cases are:”h]”hŒValid fwnode cases are:”…”�”}”(hjžàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mkhjšàubjõ)�”}”(hhh]”jlj)�”}”(hhh]”(jqj)�”}”(hŒ!primary --> secondary --> -ENODEV”h]”j[)�”}”(hjµàh]”hŒ!primary --> secondary --> -ENODEV”…”�”}”(hj·àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mihj³àubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj°àubjqj)�”}”(hŒprimary --> NULL”h]”j[)�”}”(hjÍàh]”hŒprimary --> NULL”…”�”}”(hjÏàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MjhjËàubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj°àubjqj)�”}”(hŒsecondary --> -ENODEV”h]”j[)�”}”(hjåàh]”hŒsecondary --> -ENODEV”…”�”}”(hjçàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¬àh´Mkhjãàubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj°àubjqj)�”}”(hŒNULL”h]”j[)�”}”(hjüàh]”hŒNULL”…”�”}”(hjþàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mlhjúàubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj°àubeh}”(h]”h ]”h"]”h$]”h&]”j�jj‘juh1jkjh³jÄàh´Mihj­àubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjšàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¬àh´Mkhj—àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÇßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!set_secondary_fwnode (C function)”Œc.set_secondary_fwnode”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLvoid set_secondary_fwnode (struct device *dev, struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒKvoid set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJáh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjFáh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFáh²hh³jXáh´M�ubj")�”}”(hŒset_secondary_fwnode”h]”j()�”}”(hŒset_secondary_fwnode”h]”hŒset_secondary_fwnode”…”�”}”(hjkáh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjgáubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjFáh²hh³jXáh´M�ubj÷7)�”}”(hŒ2(struct device *dev, struct fwnode_handle *fwnode)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‡áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjƒáubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒáubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¥áh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¢áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j§áŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jmásbŒc.set_secondary_fwnode”†”asbuh1hhjƒáubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒáubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÓáh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjƒáubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjàáh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjƒáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjáubjý7)�”}”(hŒstruct fwnode_handle *fwnode”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjùáh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjõáubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõáubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jâŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÁáŒc.set_secondary_fwnode”†”asbuh1hhjõáubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõáubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjCâh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjõáubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjPâh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjõáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjáubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjFáh²hh³jXáh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjBáh²hh³jXáh´M�ubah}”(h]”j=áah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jXáh´M�hj?áh²hubjV)�”}”(hhh]”j[)�”}”(hŒ5Change the secondary firmware node of a given device.”h]”hŒ5Change the secondary firmware node of a given device.”…”�”}”(hjzâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M�hjwâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj?áh²hh³jXáh´M�ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj’âj{j’âj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX;**Parameters** ``struct device *dev`` Device to handle. ``struct fwnode_handle *fwnode`` New secondary firmware node of the device. **Description** If a primary firmware node of the device is present, set its secondary pointer to **fwnode**. Otherwise, set the device's firmware node pointer to **fwnode**.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjœâh]”hŒ Parameters”…”�”}”(hjžâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjšâubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M“hj–âubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``struct device *dev`` Device to handle. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj»âh]”hŒstruct device *dev”…”�”}”(hj½âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹âubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M�hjµâubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to handle.”h]”hŒDevice to handle.”…”�”}”(hjÔâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÐâh´M�hjÑâubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjµâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÐâh´M�hj²âubjÓ)�”}”(hŒL``struct fwnode_handle *fwnode`` New secondary firmware node of the device. ”h]”(jÙ)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jß)�”}”(hjôâh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hjöâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòâubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M‘hjîâubjõ)�”}”(hhh]”j[)�”}”(hŒ*New secondary firmware node of the device.”h]”hŒ*New secondary firmware node of the device.”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j ãh´M‘hj ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjîâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j ãh´M‘hj²âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj–âubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj/ãh]”hŒ Description”…”�”}”(hj1ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj-ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M“hj–âubj[)�”}”(hŒŸIf a primary firmware node of the device is present, set its secondary pointer to **fwnode**. Otherwise, set the device's firmware node pointer to **fwnode**.”h]”(hŒRIf a primary firmware node of the device is present, set its secondary pointer to ”…”�”}”(hjEãh²hh³Nh´NubjŠ)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hjMãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjEãubhŒ:. Otherwise, set the device’s firmware node pointer to ”…”�”}”(hjEãh²hh³Nh´NubjŠ)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hj_ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjEãubhŒ.”…”�”}”(hjEãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M’hj–âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"device_remove_of_node (C function)”Œc.device_remove_of_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void device_remove_of_node (struct device *dev)”h]”hù)�”}”(hŒ.void device_remove_of_node(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj˜ãh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj”ãh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¤ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”ãh²hh³j¦ãh´M¤ubj")�”}”(hŒdevice_remove_of_node”h]”j()�”}”(hŒdevice_remove_of_node”h]”hŒdevice_remove_of_node”…”�”}”(hj¹ãh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjµãubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj”ãh²hh³j¦ãh´M¤ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÕãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÑãubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑãubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjóãh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjðãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jõãŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j»ãsbŒc.device_remove_of_node”†”asbuh1hhjÑãubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑãubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj!äh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÑãubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj.äh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÑãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÍãubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj”ãh²hh³j¦ãh´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj�ãh²hh³j¦ãh´M¤ubah}”(h]”j‹ãah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¦ãh´M¤hj�ãh²hubjV)�”}”(hhh]”j[)�”}”(hŒRemove an of_node from a device”h]”hŒRemove an of_node from a device”…”�”}”(hjXäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¤hjUäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj�ãh²hh³j¦ãh´M¤ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjpäj{jpäj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒW**Parameters** ``struct device *dev`` device whose device tree node is being removed”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjzäh]”hŒ Parameters”…”�”}”(hj|äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjxäubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¨hjtäubjÎ)�”}”(hhh]”jÓ)�”}”(hŒE``struct device *dev`` device whose device tree node is being removed”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj™äh]”hŒstruct device *dev”…”�”}”(hj›äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj—äubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mªhj“äubjõ)�”}”(hhh]”j[)�”}”(hŒ.device whose device tree node is being removed”h]”hŒ.device whose device tree node is being removed”…”�”}”(hj²äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¥hj¯äubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj“äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j®äh´Mªhj�äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjtäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_add_of_node (C function)”Œc.device_add_of_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHint device_add_of_node (struct device *dev, struct device_node *of_node)”h]”hù)�”}”(hŒGint device_add_of_node(struct device *dev, struct device_node *of_node)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjóäh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjïäh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¼ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïäh²hh³jåh´M¼ubj")�”}”(hŒdevice_add_of_node”h]”j()�”}”(hŒdevice_add_of_node”h]”hŒdevice_add_of_node”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjåubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjïäh²hh³jåh´M¼ubj÷7)�”}”(hŒ1(struct device *dev, struct device_node *of_node)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj0åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj,åubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,åubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjNåh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjKåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jPåŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jåsbŒc.device_add_of_node”†”asbuh1hhj,åubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,åubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj|åh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj,åubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj‰åh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj,åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj(åubjý7)�”}”(hŒstruct device_node *of_node”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¢åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjžåubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžåubh)�”}”(hhh]”j()�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hjÀåh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÂåŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jjåŒc.device_add_of_node”†”asbuh1hhjžåubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžåubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjìåh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjžåubj()�”}”(hŒof_node”h]”hŒof_node”…”�”}”(hjùåh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjžåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj(åubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjïäh²hh³jåh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjëäh²hh³jåh´M¼ubah}”(h]”jæäah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jåh´M¼hjèäh²hubjV)�”}”(hhh]”j[)�”}”(hŒ$Add an of_node to an existing device”h]”hŒ$Add an of_node to an existing device”…”�”}”(hj#æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¼hj æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjèäh²hh³jåh´M¼ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj;æj{j;æj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ»**Parameters** ``struct device *dev`` device whose device tree node is being added ``struct device_node *of_node`` of_node to add **Return** 0 on success or error code on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjEæh]”hŒ Parameters”…”�”}”(hjGæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjCæubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÀhj?æubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒD``struct device *dev`` device whose device tree node is being added ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjdæh]”hŒstruct device *dev”…”�”}”(hjfæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjbæubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M½hj^æubjõ)�”}”(hhh]”j[)�”}”(hŒ,device whose device tree node is being added”h]”hŒ,device whose device tree node is being added”…”�”}”(hj}æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jyæh´M½hjzæubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj^æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jyæh´M½hj[æubjÓ)�”}”(hŒ/``struct device_node *of_node`` of_node to add ”h]”(jÙ)�”}”(hŒ``struct device_node *of_node``”h]”jß)�”}”(hj�æh]”hŒstruct device_node *of_node”…”�”}”(hjŸæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›æubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´M¾hj—æubjõ)�”}”(hhh]”j[)�”}”(hŒof_node to add”h]”hŒof_node to add”…”�”}”(hj¶æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j²æh´M¾hj³æubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj—æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j²æh´M¾hj[æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj?æubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjØæh]”hŒReturn”…”�”}”(hjÚæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÖæubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÀhj?æubj[)�”}”(hŒ&0 on success or error code on failure.”h]”hŒ&0 on success or error code on failure.”…”�”}”(hjîæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MÀhj?æubeh}”(h• ]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(device_set_of_node_from_dev (C function)”Œc.device_set_of_node_from_dev”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPvoid device_set_of_node_from_dev (struct device *dev, const struct device *dev2)”h]”hù)�”}”(hŒOvoid device_set_of_node_from_dev(struct device *dev, const struct device *dev2)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjçh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Máubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçh²hh³j+çh´Máubj")�”}”(hŒdevice_set_of_node_from_dev”h]”j()�”}”(hŒdevice_set_of_node_from_dev”h]”hŒdevice_set_of_node_from_dev”…”�”}”(hj>çh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj:çubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjçh²hh³j+çh´Máubj÷7)�”}”(hŒ/(struct device *dev, const struct device *dev2)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjZçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjVçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVçubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjxçh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjuçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jzçŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j@çsbŒc.device_set_of_node_from_dev”†”asbuh1hhjVçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVçubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦çh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjVçubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj³çh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjVçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubjý7)�”}”(hŒconst struct device *dev2”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÌçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÈçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈçubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjççh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÈçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈçubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jèŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j”çŒc.device_set_of_node_from_dev”†”asbuh1hhjÈçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈçubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj1èh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÈçubj()�”}”(hŒdev2”h]”hŒdev2”…”�”}”(hj>èh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjçh²hh³j+çh´Máubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjçh²hh³j+çh´Máubah}”(h]”jçah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j+çh´Máhjçh²hubjV)�”}”(hhh]”j[)�”}”(hŒ(reuse device-tree node of another device”h]”hŒ(reuse device-tree node of another device”…”�”}”(hjhèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Máhjeèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjçh²hh³j+çh´Máubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj€èj{j€èj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX!**Parameters** ``struct device *dev`` device whose device-tree node is being set ``const struct device *dev2`` device whose device-tree node is being reused **Description** Takes another reference to the new device-tree node after first dropping any reference held to the old node.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjŠèh]”hŒ Parameters”…”�”}”(hjŒèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjˆèubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Måhj„èubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒB``struct device *dev`` device whose device-tree node is being set ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj©èh]”hŒstruct device *dev”…”�”}”(hj«èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§èubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mâhj£èubjõ)�”}”(hhh]”j[)�”}”(hŒ*device whose device-tree node is being set”h]”hŒ*device whose device-tree node is being set”…”�”}”(hjÂèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¾èh´Mâhj¿èubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj£èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¾èh´Mâhj èubjÓ)�”}”(hŒL``const struct device *dev2`` device whose device-tree node is being reused ”h]”(jÙ)�”}”(hŒ``const struct device *dev2``”h]”jß)�”}”(hjâèh]”hŒconst struct device *dev2”…”�”}”(hjäèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjàèubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MãhjÜèubjõ)�”}”(hhh]”j[)�”}”(hŒ-device whose device-tree node is being reused”h]”hŒ-device whose device-tree node is being reused”…”�”}”(hjûèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j÷èh´Mãhjøèubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÜèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j÷èh´Mãhj èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj„èubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjéh]”hŒ Description”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Måhj„èubj[)�”}”(hŒlTakes another reference to the new device-tree node after first dropping any reference held to the old node.”h]”hŒlTakes another reference to the new device-tree node after first dropping any reference held to the old node.”…”�”}”(hj3éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mähj„èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ get_dev_from_fwnode (C function)”Œc.get_dev_from_fwnode”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBstruct device * get_dev_from_fwnode (struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒ@struct device *get_dev_from_fwnode(struct fwnode_handle *fwnode)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjbéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj^éh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Møubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^éh²hh³joéh´Møubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj�éh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj~éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jƒéŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œget_dev_from_fwnode”sbŒc.get_dev_from_fwnode”†”asbuh1hhj^éh²hh³joéh´Møubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^éh²hh³joéh´MøubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj°éh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj^éh²hh³joéh´Møubj")�”}”(hŒget_dev_from_fwnode”h]”j()�”}”(hjŸéh]”hŒget_dev_from_fwnode”…”�”}”(hjÁéh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½éubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj^éh²hh³joéh´Møubj÷7)�”}”(hŒ(struct fwnode_handle *fwnode)”h]”jý7)�”}”(hŒstruct fwnode_handle *fwnode”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÜéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjØéubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjééh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØéubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjúéh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj÷éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jüéŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j�éŒc.get_dev_from_fwnode”†”asbuh1hhjØéubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØéubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj&êh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjØéubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj3êh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjØéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÔéubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj^éh²hh³joéh´Møubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjZéh²hh³joéh´Møubah}”(h]”jUéah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³joéh´MøhjWéh²hubjV)�”}”(hhh]”j[)�”}”(hŒZObtain a reference count of the struct device the struct fwnode_handle is associated with.”h]”hŒZObtain a reference count of the struct device the struct fwnode_handle is associated with.”…”�”}”(hj]êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MøhjZêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjWéh²hh³joéh´Møubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjuêj{juêj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXÜ**Parameters** ``struct fwnode_handle *fwnode`` The pointer to the struct fwnode_handle to obtain the struct device reference count of. **Description** This function obtains a reference count of the device the device pointer embedded in the struct fwnode_handle points to. Note that the struct device pointer embedded in struct fwnode_handle does *not* have a reference count of the struct device itself. Hence, it is a UAF (and thus a bug) to call this function if the caller can't guarantee that the last reference count of the corresponding struct device is not dropped concurrently. This is possible since struct fwnode_handle has its own reference count and hence can out-live the struct device it is associated with.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjêh]”hŒ Parameters”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj}êubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´MühjyêubjÎ)�”}”(hhh]”jÓ)�”}”(hŒy``struct fwnode_handle *fwnode`` The pointer to the struct fwnode_handle to obtain the struct device reference count of. ”h]”(jÙ)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jß)�”}”(hjžêh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœêubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mûhj˜êubjõ)�”}”(hhh]”j[)�”}”(hŒWThe pointer to the struct fwnode_handle to obtain the struct device reference count of.”h]”hŒWThe pointer to the struct fwnode_handle to obtain the struct device reference count of.”…”�”}”(hj·êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Múhj´êubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj˜êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j³êh´Mûhj•êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjyêubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÚêh]”hŒ Description”…”�”}”(hjÜêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjØêubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mýhjyêubj[)�”}”(hŒxThis function obtains a reference count of the device the device pointer embedded in the struct fwnode_handle points to.”h]”hŒxThis function obtains a reference count of the device the device pointer embedded in the struct fwnode_handle points to.”…”�”}”(hjðêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mühjyêubj[)�”}”(hŒƒNote that the struct device pointer embedded in struct fwnode_handle does *not* have a reference count of the struct device itself.”h]”(hŒJNote that the struct device pointer embedded in struct fwnode_handle does ”…”�”}”(hjÿêh²hh³Nh´Nubju^)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jt^hjÿêubhŒ4 have a reference count of the struct device itself.”…”�”}”(hjÿêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mÿhjyêubj[)�”}”(hŒµHence, it is a UAF (and thus a bug) to call this function if the caller can't guarantee that the last reference count of the corresponding struct device is not dropped concurrently.”h]”hŒ·Hence, it is a UAF (and thus a bug) to call this function if the caller can’t guarantee that the last reference count of the corresponding struct device is not dropped concurrently.”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjyêubj[)�”}”(hŒ‡This is possible since struct fwnode_handle has its own reference count and hence can out-live the struct device it is associated with.”h]”hŒ‡This is possible since struct fwnode_handle has its own reference count and hence can out-live the struct device it is associated with.”…”�”}”(hj/ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:36: ./drivers/base/core.c”h´Mhjyêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒregister_syscore (C function)”Œc.register_syscore”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void register_syscore (struct syscore *syscore)”h]”hù)�”}”(hŒ.void register_syscore(struct syscore *syscore)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^ëh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjZëh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZëh²hh³jlëh´Kubj")�”}”(hŒregister_syscore”h]”j()�”}”(hŒregister_syscore”h]”hŒregister_syscore”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj{ëubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjZëh²hh³jlëh´Kubj÷7)�”}”(hŒ(struct syscore *syscore)”h]”jý7)�”}”(hŒstruct syscore *syscore”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj›ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj—ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—ëubh)�”}”(hhh]”j()�”}”(hŒsyscore”h]”hŒsyscore”…”�”}”(hj¹ëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¶ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j»ëŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j�ësbŒc.register_syscore”†”asbuh1hhj—ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—ëubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjçëh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj—ëubj()�”}”(hŒsyscore”h]”hŒsyscore”…”�”}”(hjôëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj—ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj“ëubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjZëh²hh³jlëh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjVëh²hh³jlëh´Kubah}”(h]”jQëah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jlëh´KhjSëh²hubjV)�”}”(hhh]”j[)�”}”(hŒ)Register a set of system core operations.”h]”hŒ)Register a set of system core operations.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjSëh²hh³jlëh´Kubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj6ìj{j6ìj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒQ**Parameters** ``struct syscore *syscore`` System core operations to register.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj@ìh]”hŒ Parameters”…”�”}”(hjBìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj>ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khj:ìubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ?``struct syscore *syscore`` System core operations to register.”h]”(jÙ)�”}”(hŒ``struct syscore *syscore``”h]”jß)�”}”(hj_ìh]”hŒstruct syscore *syscore”…”�”}”(hjaìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj]ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´KhjYìubjõ)�”}”(hhh]”j[)�”}”(hŒ#System core operations to register.”h]”hŒ#System core operations to register.”…”�”}”(hjxìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khjuìubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjYìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jtìh´KhjVìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj:ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒunregister_syscore (C function)”Œc.unregister_syscore”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1void unregister_syscore (struct syscore *syscore)”h]”hù)�”}”(hŒ0void unregister_syscore(struct syscore *syscore)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹ìh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjµìh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµìh²hh³jÇìh´Kubj")�”}”(hŒunregister_syscore”h]”j()�”}”(hŒunregister_syscore”h]”hŒunregister_syscore”…”�”}”(hjÚìh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÖìubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjµìh²hh³jÇìh´Kubj÷7)�”}”(hŒ(struct syscore *syscore)”h]”jý7)�”}”(hŒstruct syscore *syscore”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjöìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjòìubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòìubh)�”}”(hhh]”j()�”}”(hŒsyscore”h]”hŒsyscore”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jíŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÜìsbŒc.unregister_syscore”†”asbuh1hhjòìubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòìubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjBíh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjòìubj()�”}”(hŒsyscore”h]”hŒsyscore”…”�”}”(hjOíh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjòìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjîìubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjµìh²hh³jÇìh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj±ìh²hh³jÇìh´Kubah}”(h]”j¬ìah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÇìh´Khj®ìh²hubjV)�”}”(hhh]”j[)�”}”(hŒ+Unregister a set of system core operations.”h]”hŒ+Unregister a set of system core operations.”…”�”}”(hjyíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khjvíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj®ìh²hh³jÇìh´Kubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj‘íj{j‘íj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒS**Parameters** ``struct syscore *syscore`` System core operations to unregister.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj›íh]”hŒ Parameters”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj™íubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K"hj•íubjÎ)�”}”(hhh]”jÓ)�”}”(hŒA``struct syscore *syscore`` System core operations to unregister.”h]”(jÙ)�”}”(hŒ``struct syscore *syscore``”h]”jß)�”}”(hjºíh]”hŒstruct syscore *syscore”…”�”}”(hj¼íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸íubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K$hj´íubjõ)�”}”(hhh]”j[)�”}”(hŒ%System core operations to unregister.”h]”hŒ%System core operations to unregister.”…”�”}”(hjÓíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´KhjÐíubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj´íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÏíh´K$hj±íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj•íubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsyscore_suspend (C function)”Œc.syscore_suspend”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒint syscore_suspend (void)”h]”hù)�”}”(hŒint syscore_suspend(void)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjîh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K+ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîh²hh³j"îh´K+ubj")�”}”(hŒsyscore_suspend”h]”j()�”}”(hŒsyscore_suspend”h]”hŒsyscore_suspend”…”�”}”(hj5îh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj1îubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjîh²hh³j"îh´K+ubj÷7)�”}”(hŒ(void)”h]”jý7)�”}”(hŒvoid”h]”j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQîh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjMîubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjIîubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjîh²hh³j"îh´K+ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj îh²hh³j"îh´K+ubah}”(h]”jîah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j"îh´K+hj îh²hubjV)�”}”(hhh]”j[)�”}”(hŒ9Execute all the registered system core suspend callbacks.”h]”hŒ9Execute all the registered system core suspend callbacks.”…”�”}”(hj{îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K+hjxîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj îh²hh³j"îh´K+ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj“îj{j“îj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ�**Parameters** ``void`` no arguments **Description** This function is executed with one CPU on-line and disabled interrupts.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj�îh]”hŒ Parameters”…”�”}”(hjŸîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj›îubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K/hj—îubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``void`` no arguments ”h]”(jÙ)�”}”(hŒ``void``”h]”jß)�”}”(hj¼îh]”hŒvoid”…”�”}”(hj¾îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjºîubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khj¶îubjõ)�”}”(hhh]”j[)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjÕîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÑîh´KhjÒîubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¶îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÑîh´Khj³îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj—îubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj÷îh]”hŒ Description”…”�”}”(hjùîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjõîubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khj—îubj[)�”}”(hŒGThis function is executed with one CPU on-line and disabled interrupts.”h]”hŒGThis function is executed with one CPU on-line and disabled interrupts.”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K,hj—îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsyscore_resume (C function)”Œc.syscore_resume”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid syscore_resume (void)”h]”hù)�”}”(hŒvoid syscore_resume(void)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<ïh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj8ïh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´KYubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ïh²hh³jJïh´KYubj")�”}”(hŒsyscore_resume”h]”j()�”}”(hŒsyscore_resume”h]”hŒsyscore_resume”…”�”}”(hj]ïh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjYïubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj8ïh²hh³jJïh´KYubj÷7)�”}”(hŒ(void)”h]”jý7)�”}”(hŒvoid”h]”j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyïh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjuïubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjqïubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj8ïh²hh³jJïh´KYubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj4ïh²hh³jJïh´KYubah}”(h]”j/ïah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jJïh´KYhj1ïh²hubjV)�”}”(hhh]”j[)�”}”(hŒ8Execute all the registered system core resume callbacks.”h]”hŒ8Execute all the registered system core resume callbacks.”…”�”}”(hj£ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´KYhj ïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj1ïh²hh³jJïh´KYubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj»ïj{j»ïj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ�**Parameters** ``void`` no arguments **Description** This function is executed with one CPU on-line and disabled interrupts.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÅïh]”hŒ Parameters”…”�”}”(hjÇïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÃïubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´K]hj¿ïubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``void`` no arguments ”h]”(jÙ)�”}”(hŒ``void``”h]”jß)�”}”(hjäïh]”hŒvoid”…”�”}”(hjæïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâïubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´KhjÞïubjõ)�”}”(hhh]”j[)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjýïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jùïh´Khjúïubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÞïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jùïh´KhjÛïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¿ïubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjðh]”hŒ Description”…”�”}”(hj!ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´Khj¿ïubj[)�”}”(hŒGThis function is executed with one CPU on-line and disabled interrupts.”h]”hŒGThis function is executed with one CPU on-line and disabled interrupts.”…”�”}”(hj5ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:39: ./drivers/base/syscore.c”h´KZhj¿ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&class_find_device_by_name (C function)”Œc.class_find_device_by_name”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒWstruct device * class_find_device_by_name (const struct class *class, const char *name)”h]”hù)�”}”(hŒUstruct device *class_find_device_by_name(const struct class *class, const char *name)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjdðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj`ðh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´Kcubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ðh²hh³jqðh´Kcubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjƒðh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj€ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j…ðŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_find_device_by_name”sbŒc.class_find_device_by_name”†”asbuh1hhj`ðh²hh³jqðh´Kcubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ðh²hh³jqðh´KcubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj²ðh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj`ðh²hh³jqðh´Kcubj")�”}”(hŒclass_find_device_by_name”h]”j()�”}”(hj¡ðh]”hŒclass_find_device_by_name”…”�”}”(hjÃðh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¿ðubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj`ðh²hh³jqðh´Kcubj÷7)�”}”(hŒ-(const struct class *class, const char *name)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÞðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÚðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚðubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjùðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÚðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚðubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jñŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jŸðŒc.class_find_device_by_name”†”asbuh1hhjÚðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚðubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjCñh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÚðubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjPñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÚðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÖðubjý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjiñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjeñubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeñubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj„ñh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjeñubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeñubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjeñubj()�”}”(hŒname”h]”hŒname”…”�”}”(hj­ñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjeñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÖðubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj`ðh²hh³jqðh´Kcubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj\ðh²hh³jqðh´Kcubah}”(h]”jWðah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jqðh´KchjYðh²hubjV)�”}”(hhh]”j[)�”}”(hŒDdevice iterator for locating a particular device of a specific name.”h]”hŒDdevice iterator for locating a particular device of a specific name.”…”�”}”(hj×ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KchjÔñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjYðh²hh³jqðh´Kcubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjïñj{jïñj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒn**Parameters** ``const struct class *class`` class type ``const char *name`` name of the device to match”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjùñh]”hŒ Parameters”…”�”}”(hjûñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj÷ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KghjóñubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const struct class *class`` class type ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hjòh]”hŒconst struct class *class”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´Kehjòubjõ)�”}”(hhh]”j[)�”}”(hŒ class type”h]”hŒ class type”…”�”}”(hj1òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j-òh´Kehj.òubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j-òh´KehjòubjÓ)�”}”(hŒ0``const char *name`` name of the device to match”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hjQòh]”hŒconst char *name”…”�”}”(hjSòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjOòubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KghjKòubjõ)�”}”(hhh]”j[)�”}”(hŒname of the device to match”h]”hŒname of the device to match”…”�”}”(hjjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´Kfhjgòubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjKòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jfòh´Kghjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjóñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)class_find_device_by_of_node (C function)”Œc.class_find_device_by_of_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒfstruct device * class_find_device_by_of_node (const struct class *class, const struct device_node *np)”h]”hù)�”}”(hŒdstruct device *class_find_device_by_of_node(const struct class *class, const struct device_node *np)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj«òh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj§òh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´Koubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§òh²hh³j¸òh´Koubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÊòh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÇòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÌòŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_find_device_by_of_node”sbŒc.class_find_device_by_of_node”†”asbuh1hhj§òh²hh³j¸òh´Koubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§òh²hh³j¸òh´KoubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjùòh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj§òh²hh³j¸òh´Koubj")�”}”(hŒclass_find_device_by_of_node”h]”j()�”}”(hjèòh]”hŒclass_find_device_by_of_node”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjóubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj§òh²hh³j¸òh´Koubj÷7)�”}”(hŒ9(const struct class *class, const struct device_node *np)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj%óh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj!óubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!óubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj@óh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj!óubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!óubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj^óh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj[óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j`óŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jæòŒc.class_find_device_by_of_node”†”asbuh1hhj!óubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!óubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjŠóh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj!óubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj—óh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj!óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjóubjý7)�”}”(hŒconst struct device_node *np”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj°óh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¬óubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬óubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjËóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¬óubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬óubh)�”}”(hhh]”j()�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hjéóh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjæóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jëóŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jæòŒc.class_find_device_by_of_node”†”asbuh1hhj¬óubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬óubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¬óubj()�”}”(hŒnp”h]”hŒnp”…”�”}”(hj"ôh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¬óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjóubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj§òh²hh³j¸òh´Koubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj£òh²hh³j¸òh´Koubah}”(h]”jžòah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¸òh´Kohj òh²hubjV)�”}”(hhh]”j[)�”}”(hŒFdevice iterator for locating a particular device matching the of_node.”h]”hŒFdevice iterator for locating a particular device matching the of_node.”…”�”}”(hjLôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KohjIôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj òh²hh³j¸òh´Koubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjdôj{jdôj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ~**Parameters** ``const struct class *class`` class type ``const struct device_node *np`` of_node of the device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjnôh]”hŒ Parameters”…”�”}”(hjpôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjlôubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KshjhôubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const struct class *class`` class type ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hj�ôh]”hŒconst struct class *class”…”�”}”(hj�ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´Kqhj‡ôubjõ)�”}”(hhh]”j[)�”}”(hŒ class type”h]”hŒ class type”…”�”}”(hj¦ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¢ôh´Kqhj£ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‡ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¢ôh´Kqhj„ôubjÓ)�”}”(hŒ@``const struct device_node *np`` of_node of the device to match.”h]”(jÙ)�”}”(hŒ ``const struct device_node *np``”h]”jß)�”}”(hjÆôh]”hŒconst struct device_node *np”…”�”}”(hjÈôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄôubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KshjÀôubjõ)�”}”(hhh]”j[)�”}”(hŒof_node of the device to match.”h]”hŒof_node of the device to match.”…”�”}”(hjßôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KrhjÜôubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛôh´Kshj„ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjhôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(class_find_device_by_fwnode (C function)”Œc.class_find_device_by_fwnode”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒkstruct device * class_find_device_by_fwnode (const struct class *class, const struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒistruct device *class_find_device_by_fwnode(const struct class *class, const struct fwnode_handle *fwnode)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjõh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K{ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõh²hh³j-õh´K{ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj?õh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj<õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jAõŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_find_device_by_fwnode”sbŒc.class_find_device_by_fwnode”†”asbuh1hhjõh²hh³j-õh´K{ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõh²hh³j-õh´K{ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjnõh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjõh²hh³j-õh´K{ubj")�”}”(hŒclass_find_device_by_fwnode”h]”j()�”}”(hj]õh]”hŒclass_find_device_by_fwnode”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj{õubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjõh²hh³j-õh´K{ubj÷7)�”}”(hŒ?(const struct class *class, const struct fwnode_handle *fwnode)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjšõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj–õubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–õubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjµõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj–õubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–õubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjÓõh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÐõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÕõŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j[õŒc.class_find_device_by_fwnode”†”asbuh1hhj–õubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–õubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÿõh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj–õubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj–õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj’õubjý7)�”}”(hŒ"const struct fwnode_handle *fwnode”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj%öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj!öubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!öubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj@öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj!öubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!öubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj^öh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj[öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j`öŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j[õŒc.class_find_device_by_fwnode”†”asbuh1hhj!öubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!öubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjŠöh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj!öubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hj—öh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj!öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj’õubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjõh²hh³j-õh´K{ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjõh²hh³j-õh´K{ubah}”(h]”jõah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j-õh´K{hjõh²hubjV)�”}”(hhh]”j[)�”}”(hŒEdevice iterator for locating a particular device matching the fwnode.”h]”hŒEdevice iterator for locating a particular device matching the fwnode.”…”�”}”(hjÁöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K{hj¾öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjõh²hh³j-õh´K{ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÙöj{jÙöj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒƒ**Parameters** ``const struct class *class`` class type ``const struct fwnode_handle *fwnode`` fwnode of the device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjãöh]”hŒ Parameters”…”�”}”(hjåöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjáöubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KhjÝöubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const struct class *class`` class type ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hj÷h]”hŒconst struct class *class”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K}hjüöubjõ)�”}”(hhh]”j[)�”}”(hŒ class type”h]”hŒ class type”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j÷h´K}hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjüöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j÷h´K}hjùöubjÓ)�”}”(hŒE``const struct fwnode_handle *fwnode`` fwnode of the device to match.”h]”(jÙ)�”}”(hŒ&``const struct fwnode_handle *fwnode``”h]”jß)�”}”(hj;÷h]”hŒ"const struct fwnode_handle *fwnode”…”�”}”(hj=÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj9÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´Khj5÷ubjõ)�”}”(hhh]”j[)�”}”(hŒfwnode of the device to match.”h]”hŒfwnode of the device to match.”…”�”}”(hjT÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K~hjQ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj5÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jP÷h´Khjùöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÝöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&class_find_device_by_devt (C function)”Œc.class_find_device_by_devt”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒQstruct device * class_find_device_by_devt (const struct class *class, dev_t devt)”h]”hù)�”}”(hŒOstruct device *class_find_device_by_devt(const struct class *class, dev_t devt)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj•÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj‘÷h²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K‡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘÷h²hh³j¢÷h´K‡ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj´÷h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj±÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¶÷Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_find_device_by_devt”sbŒc.class_find_device_by_devt”†”asbuh1hhj‘÷h²hh³j¢÷h´K‡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘÷h²hh³j¢÷h´K‡ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjã÷h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj‘÷h²hh³j¢÷h´K‡ubj")�”}”(hŒclass_find_device_by_devt”h]”j()�”}”(hjÒ÷h]”hŒclass_find_device_by_devt”…”�”}”(hjô÷h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjð÷ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj‘÷h²hh³j¢÷h´K‡ubj÷7)�”}”(hŒ'(const struct class *class, dev_t devt)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj øubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj*øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj øubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjHøh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjEøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jJøŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÐ÷Œc.class_find_device_by_devt”†”asbuh1hhj øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjføh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj øubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjtøh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj øubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjøubjý7)�”}”(hŒ dev_t devt”h]”(h)�”}”(hhh]”j()�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjšøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jŸøŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÐ÷Œc.class_find_device_by_devt”†”asbuh1hhj–øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–øubj()�”}”(hŒdevt”h]”hŒdevt”…”�”}”(hjÉøh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj–øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjøubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj‘÷h²hh³j¢÷h´K‡ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj�÷h²hh³j¢÷h´K‡ubah}”(h]”jˆ÷ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¢÷h´K‡hjŠ÷h²hubjV)�”}”(hhh]”j[)�”}”(hŒJdevice iterator for locating a particular device matching the device type.”h]”hŒJdevice iterator for locating a particular device matching the device type.”…”�”}”(hjóøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K‡hjðøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjŠ÷h²hh³j¢÷h´K‡ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj ùj{j ùj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒp**Parameters** ``const struct class *class`` class type ``dev_t devt`` device type of the device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjùh]”hŒ Parameters”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K‹hjùubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const struct class *class`` class type ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hj4ùh]”hŒconst struct class *class”…”�”}”(hj6ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K‰hj.ùubjõ)�”}”(hhh]”j[)�”}”(hŒ class type”h]”hŒ class type”…”�”}”(hjMùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jIùh´K‰hjJùubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj.ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jIùh´K‰hj+ùubjÓ)�”}”(hŒ2``dev_t devt`` device type of the device to match.”h]”(jÙ)�”}”(hŒ``dev_t devt``”h]”jß)�”}”(hjmùh]”hŒ dev_t devt”…”�”}”(hjoùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjkùubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K‹hjgùubjõ)�”}”(hhh]”j[)�”}”(hŒ#device type of the device to match.”h]”hŒ#device type of the device to match.”…”�”}”(hj†ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´KŠhjƒùubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjgùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‚ùh´K‹hj+ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*class_find_device_by_acpi_dev (C function)”Œc.class_find_device_by_acpi_dev”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒistruct device * class_find_device_by_acpi_dev (const struct class *class, const struct acpi_device *adev)”h]”hù)�”}”(hŒgstruct device *class_find_device_by_acpi_dev(const struct class *class, const struct acpi_device *adev)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÇùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÃùh²hh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃùh²hh³jÔùh´K•ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjæùh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjãùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jèùŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_find_device_by_acpi_dev”sbŒc.class_find_device_by_acpi_dev”†”asbuh1hhjÃùh²hh³jÔùh´K•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃùh²hh³jÔùh´K•ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÃùh²hh³jÔùh´K•ubj")�”}”(hŒclass_find_device_by_acpi_dev”h]”j()�”}”(hjúh]”hŒclass_find_device_by_acpi_dev”…”�”}”(hj&úh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj"úubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÃùh²hh³jÔùh´K•ubj÷7)�”}”(hŒ;(const struct class *class, const struct acpi_device *adev)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjAúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj=úubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=úubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj\úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj=úubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=úubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjzúh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjwúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j|úŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”júŒc.class_find_device_by_acpi_dev”†”asbuh1hhj=úubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=úubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦úh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj=úubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj³úh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj=úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj9úubjý7)�”}”(hŒconst struct acpi_device *adev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÌúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÈúubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈúubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjçúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÈúubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈúubh)�”}”(hhh]”j()�”}”(hŒ acpi_device”h]”hŒ acpi_device”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jûŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”júŒc.class_find_device_by_acpi_dev”†”asbuh1hhjÈúubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈúubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj1ûh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÈúubj()�”}”(hŒadev”h]”hŒadev”…”�”}”(hj>ûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj9úubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÃùh²hh³jÔùh´K•ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¿ùh²hh³jÔùh´K•ubah}”(h]”jºùah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÔùh´K•hj¼ùh²hubjV)�”}”(hhh]”j[)�”}”(hŒTdevice iterator for locating a particular device matching the ACPI_COMPANION device.”h]”hŒTdevice iterator for locating a particular device matching the ACPI_COMPANION device.”…”�”}”(hjhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K•hjeûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¼ùh²hh³jÔùh´K•ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj€ûj{j€ûj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ€**Parameters** ``const struct class *class`` class type ``const struct acpi_device *adev`` ACPI_COMPANION device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjŠûh]”hŒ Parameters”…”�”}”(hjŒûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjˆûubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K™hj„ûubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const struct class *class`` class type ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hj©ûh]”hŒconst struct class *class”…”�”}”(hj«ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K—hj£ûubjõ)�”}”(hhh]”j[)�”}”(hŒ class type”h]”hŒ class type”…”�”}”(hjÂûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¾ûh´K—hj¿ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj£ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¾ûh´K—hj ûubjÓ)�”}”(hŒB``const struct acpi_device *adev`` ACPI_COMPANION device to match.”h]”(jÙ)�”}”(hŒ"``const struct acpi_device *adev``”h]”jß)�”}”(hjâûh]”hŒconst struct acpi_device *adev”…”�”}”(hjäûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjàûubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K™hjÜûubjõ)�”}”(hhh]”j[)�”}”(hŒACPI_COMPANION device to match.”h]”hŒACPI_COMPANION device to match.”…”�”}”(hjûûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œf/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:42: ./include/linux/device/class.h”h´K˜hjøûubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÜûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j÷ûh´K™hj ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj„ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒclass_create (C function)”Œc.class_create”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.struct class * class_create (const char *name)”h]”hù)�”}”(hŒ,struct class *class_create(const char *name)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj<üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj8üh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Kÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8üh²hh³jIüh´Kÿubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj[üh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjXüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j]üŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œ class_create”sbŒc.class_create”†”asbuh1hhj8üh²hh³jIüh´Kÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8üh²hh³jIüh´KÿubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjŠüh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj8üh²hh³jIüh´Kÿubj")�”}”(hŒ class_create”h]”j()�”}”(hjyüh]”hŒ class_create”…”�”}”(hj›üh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj—üubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj8üh²hh³jIüh´Kÿubj÷7)�”}”(hŒ(const char *name)”h]”jý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¶üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj²üubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²üubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÑüh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj²üubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²üubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjíüh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj²üubj()�”}”(hŒname”h]”hŒname”…”�”}”(hjúüh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj²üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj®üubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj8üh²hh³jIüh´Kÿubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj4üh²hh³jIüh´Kÿubah}”(h]”j/üah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jIüh´Kÿhj1üh²hubjV)�”}”(hhh]”j[)�”}”(hŒcreate a struct class structure”h]”hŒcreate a struct class structure”…”�”}”(hj$ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Kÿhj!ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj1üh²hh³jIüh´Kÿubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj<ýj{j<ýj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX‚**Parameters** ``const char *name`` pointer to a string for the name of this class. **Description** This is used to create a struct class pointer that can then be used in calls to device_create(). Returns :c:type:`struct class ` pointer on success, or ERR_PTR() on error. Note, the pointer created here is to be destroyed when finished by making a call to class_destroy().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjFýh]”hŒ Parameters”…”�”}”(hjHýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjDýubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”•h´Mhj@ýubjÎ)�”}”(hhh]”jÓ)�”}”(hŒE``const char *name`` pointer to a string for the name of this class. ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hjeýh]”hŒconst char *name”…”�”}”(hjgýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjcýubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mhj_ýubjõ)�”}”(hhh]”j[)�”}”(hŒ/pointer to a string for the name of this class.”h]”hŒ/pointer to a string for the name of this class.”…”�”}”(hj~ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jzýh´Mhj{ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj_ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jzýh´Mhj\ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj@ýubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj ýh]”hŒ Description”…”�”}”(hj¢ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjžýubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mhj@ýubj[)�”}”(hŒ`This is used to create a struct class pointer that can then be used in calls to device_create().”h]”hŒ`This is used to create a struct class pointer that can then be used in calls to device_create().”…”�”}”(hj¶ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mhj@ýubj[)�”}”(hŒQReturns :c:type:`struct class ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hjÅýh²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct class `”h]”jß)�”}”(hjÏýh]”hŒ struct class”…”�”}”(hjÑýh²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhjÍýubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒclass”uh1hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MhjÅýubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hjÅýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jìýh´Mhj@ýubj[)�”}”(hŒdNote, the pointer created here is to be destroyed when finished by making a call to class_destroy().”h]”hŒdNote, the pointer created here is to be destroyed when finished by making a call to class_destroy().”…”�”}”(hj÷ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mhj@ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒclass_destroy (C function)”Œc.class_destroy”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void class_destroy (const struct class *cls)”h]”hù)�”}”(hŒ+void class_destroy(const struct class *cls)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&þh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj"þh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M%ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"þh²hh³j4þh´M%ubj")�”}”(hŒ class_destroy”h]”j()�”}”(hŒ class_destroy”h]”hŒ class_destroy”…”�”}”(hjGþh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjCþubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj"þh²hh³j4þh´M%ubj÷7)�”}”(hŒ(const struct class *cls)”h]”jý7)�”}”(hŒconst struct class *cls”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjcþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj_þubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_þubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj~þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj_þubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_þubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjœþh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj™þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jžþŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jIþsbŒc.class_destroy”†”asbuh1hhj_þubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_þubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÊþh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj_þubj()�”}”(hŒcls”h]”hŒcls”…”�”}”(hj×þh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj_þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj[þubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj"þh²hh³j4þh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjþh²hh³j4þh´M%ubah}”(h]”jþah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j4þh´M%hjþh²hubjV)�”}”(hhh]”j[)�”}”(hŒ!destroys a struct class structure”h]”hŒ!destroys a struct class structure”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M%hjþþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjþh²hh³j4þh´M%ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÿj{jÿj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒË**Parameters** ``const struct class *cls`` pointer to the struct class that is to be destroyed **Description** Note, the pointer to be destroyed must have been created with a call to class_create().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj#ÿh]”hŒ Parameters”…”�”}”(hj%ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj!ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M)hjÿubjÎ)�”}”(hhh]”jÓ)�”}”(hŒP``const struct class *cls`` pointer to the struct class that is to be destroyed ”h]”(jÙ)�”}”(hŒ``const struct class *cls``”h]”jß)�”}”(hjBÿh]”hŒconst struct class *cls”…”�”}”(hjDÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj@ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M&hj<ÿubjõ)�”}”(hhh]”j[)�”}”(hŒ3pointer to the struct class that is to be destroyed”h]”hŒ3pointer to the struct class that is to be destroyed”…”�”}”(hj[ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jWÿh´M&hjXÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj<ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jWÿh´M&hj9ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÿubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj}ÿh]”hŒ Description”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj{ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M(hjÿubj[)�”}”(hŒWNote, the pointer to be destroyed must have been created with a call to class_create().”h]”hŒWNote, the pointer to be destroyed must have been created with a call to class_create().”…”�”}”(hj“ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M'hjÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ class_dev_iter_init (C function)”Œc.class_dev_iter_init”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ�void class_dev_iter_init (struct class_dev_iter *iter, const struct class *class, const struct device *start, const struct device_type *type)”h]”hù)�”}”(hŒŒvoid class_dev_iter_init(struct class_dev_iter *iter, const struct class *class, const struct device *start, const struct device_type *type)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÂÿh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¾ÿh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ÿh²hh³jÐÿh´M5ubj")�”}”(hŒclass_dev_iter_init”h]”j()�”}”(hŒclass_dev_iter_init”h]”hŒclass_dev_iter_init”…”�”}”(hjãÿh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjßÿubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¾ÿh²hh³jÐÿh´M5ubj÷7)�”}”(hŒt(struct class_dev_iter *iter, const struct class *class, const struct device *start, const struct device_type *type)”h]”(jý7)�”}”(hŒstruct class_dev_iter *iter”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÿÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjûÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÿubh)�”}”(hhh]”j()�”}”(hŒclass_dev_iter”h]”hŒclass_dev_iter”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jåÿsbŒc.class_dev_iter_init”†”asbuh1hhjûÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÿubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjûÿubj()�”}”(hŒiter”h]”hŒiter”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjûÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj÷ÿubjý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjmubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjmubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¬Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j9Œc.class_dev_iter_init”†”asbuh1hhjmubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjmubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj÷ÿubjý7)�”}”(hŒconst struct device *start”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjøubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjøubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j7Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j9Œc.class_dev_iter_init”†”asbuh1hhjøubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjøubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj÷ÿubjý7)�”}”(hŒconst struct device_type *type”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjƒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjƒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubh)�”}”(hhh]”j()�”}”(hŒ device_type”h]”hŒ device_type”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÂŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j9Œc.class_dev_iter_init”†”asbuh1hhjƒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjƒubj()�”}”(hŒtype”h]”hŒtype”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj÷ÿubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¾ÿh²hh³jÐÿh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjºÿh²hh³jÐÿh´M5ubah}”(h]”jµÿah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÐÿh´M5hj·ÿh²hubjV)�”}”(hhh]”j[)�”}”(hŒ initialize class device iterator”h]”hŒ initialize class device iterator”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M5hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj·ÿh²hh³jÐÿh´M5ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj;j{j;j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX(**Parameters** ``struct class_dev_iter *iter`` class iterator to initialize ``const struct class *class`` the class we wanna iterate over ``const struct device *start`` the device to start iterating from, if any ``const struct device_type *type`` device_type of the devices to iterate over, NULL for all **Description** Initialize class iterator **iter** such that it iterates over devices of **class**. If **start** is set, the list iteration will start there, otherwise if it is NULL, the iteration starts at the beginning of the list.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjEh]”hŒ Parameters”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M9hj?ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ=``struct class_dev_iter *iter`` class iterator to initialize ”h]”(jÙ)�”}”(hŒ``struct class_dev_iter *iter``”h]”jß)�”}”(hjdh]”hŒstruct class_dev_iter *iter”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M6hj^ubjõ)�”}”(hhh]”j[)�”}”(hŒclass iterator to initialize”h]”hŒclass iterator to initialize”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jyh´M6hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jyh´M6hj[ubjÓ)�”}”(hŒ>``const struct class *class`` the class we wanna iterate over ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hj�h]”hŒconst struct class *class”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M7hj—ubjõ)�”}”(hhh]”j[)�”}”(hŒthe class we wanna iterate over”h]”hŒthe class we wanna iterate over”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j²h´M7hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j²h´M7hj[ubjÓ)�”}”(hŒJ``const struct device *start`` the device to start iterating from, if any ”h]”(jÙ)�”}”(hŒ``const struct device *start``”h]”jß)�”}”(hjÖh]”hŒconst struct device *start”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M8hjÐubjõ)�”}”(hhh]”j[)�”}”(hŒ*the device to start iterating from, if any”h]”hŒ*the device to start iterating from, if any”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jëh´M8hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jëh´M8hj[ubjÓ)�”}”(hŒ\``const struct device_type *type`` device_type of the devices to iterate over, NULL for all ”h]”(jÙ)�”}”(hŒ"``const struct device_type *type``”h]”jß)�”}”(hjh]”hŒconst struct device_type *type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M9hj ubjõ)�”}”(hhh]”j[)�”}”(hŒ8device_type of the devices to iterate over, NULL for all”h]”hŒ8device_type of the devices to iterate over, NULL for all”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j$h´M9hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j$h´M9hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj?ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjJh]”hŒ Description”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M;hj?ubj[)�”}”(hŒÚInitialize class iterator **iter** such that it iterates over devices of **class**. If **start** is set, the list iteration will start there, otherwise if it is NULL, the iteration starts at the beginning of the list.”h]”(hŒInitialize class iterator ”…”�”}”(hj`h²hh³Nh´NubjŠ)�”}”(hŒ**iter**”h]”hŒiter”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj`ubhŒ' such that it iterates over devices of ”…”�”}”(hj`h²hh³Nh´NubjŠ)�”}”(hŒ **class**”h]”hŒclass”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj`ubhŒ. If ”…”�”}”(hj`h²hh³Nh´NubjŠ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj`ubhŒy is set, the list iteration will start there, otherwise if it is NULL, the iteration starts at the beginning of the list.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M:hj?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ class_dev_iter_next (C function)”Œc.class_dev_iter_next”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAstruct device * class_dev_iter_next (struct class_dev_iter *iter)”h]”hù)�”}”(hŒ?struct device *class_dev_iter_next(struct class_dev_iter *iter)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÁh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MVubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁh²hh³jÒh´MVubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jæŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_dev_iter_next”sbŒc.class_dev_iter_next”†”asbuh1hhjÁh²hh³jÒh´MVubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁh²hh³jÒh´MVubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÁh²hh³jÒh´MVubj")�”}”(hŒclass_dev_iter_next”h]”j()�”}”(hjh]”hŒclass_dev_iter_next”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÁh²hh³jÒh´MVubj÷7)�”}”(hŒ(struct class_dev_iter *iter)”h]”jý7)�”}”(hŒstruct class_dev_iter *iter”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ubh)�”}”(hhh]”j()�”}”(hŒclass_dev_iter”h]”hŒclass_dev_iter”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j_Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jŒc.class_dev_iter_next”†”asbuh1hhj;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj;ubj()�”}”(hŒiter”h]”hŒiter”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj7ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÁh²hh³jÒh´MVubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj½h²hh³jÒh´MVubah}”(h]”j¸ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÒh´MVhjºh²hubjV)�”}”(hhh]”j[)�”}”(hŒiterate to the next device”h]”hŒiterate to the next device”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MVhj½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjºh²hh³jÒh´MVubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjØj{jØj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX’**Parameters** ``struct class_dev_iter *iter`` class iterator to proceed **Description** Proceed **iter** to the next device and return it. Returns NULL if iteration is complete. The returned device is referenced and won't be released till iterator is proceed to the next device or exited. The caller is free to do whatever it wants to do with the device including calling back into class code.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjâh]”hŒ Parameters”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MZhjÜubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ:``struct class_dev_iter *iter`` class iterator to proceed ”h]”(jÙ)�”}”(hŒ``struct class_dev_iter *iter``”h]”jß)�”}”(hjh]”hŒstruct class_dev_iter *iter”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MWhjûubjõ)�”}”(hhh]”j[)�”}”(hŒclass iterator to proceed”h]”hŒclass iterator to proceed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´MWhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´MWhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÜubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj<h]”hŒ Description”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MYhjÜubj[)�”}”(hŒZProceed **iter** to the next device and return it. Returns NULL if iteration is complete.”h]”(hŒProceed ”…”�”}”(hjRh²hh³Nh´NubjŠ)�”}”(hŒ**iter**”h]”hŒiter”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjRubhŒJ to the next device and return it. Returns NULL if iteration is complete.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MXhjÜubj[)�”}”(hŒØThe returned device is referenced and won't be released till iterator is proceed to the next device or exited. The caller is free to do whatever it wants to do with the device including calling back into class code.”h]”hŒÚThe returned device is referenced and won’t be released till iterator is proceed to the next device or exited. The caller is free to do whatever it wants to do with the device including calling back into class code.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M[hjÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ class_dev_iter_exit (C function)”Œc.class_dev_iter_exit”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6void class_dev_iter_exit (struct class_dev_iter *iter)”h]”hù)�”}”(hŒ5void class_dev_iter_exit(struct class_dev_iter *iter)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjžh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Muubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžh²hh³j°h´Muubj")�”}”(hŒclass_dev_iter_exit”h]”j()�”}”(hŒclass_dev_iter_exit”h]”hŒclass_dev_iter_exit”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¿ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjžh²hh³j°h´Muubj÷7)�”}”(hŒ(struct class_dev_iter *iter)”h]”jý7)�”}”(hŒstruct class_dev_iter *iter”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÛubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛubh)�”}”(hhh]”j()�”}”(hŒclass_dev_iter”h]”hŒclass_dev_iter”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÿŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÅsbŒc.class_dev_iter_exit”†”asbuh1hhjÛubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÛubj()�”}”(hŒiter”h]”hŒiter”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj×ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjžh²hh³j°h´Muubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjšh²hh³j°h´Muubah}”(h]”j•ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j°h´Muhj—h²hubjV)�”}”(hhh]”j[)�”}”(hŒfinish iteration”h]”hŒfinish iteration”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Muhj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj—h²hh³j°h´Muubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjzj{jzj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ×**Parameters** ``struct class_dev_iter *iter`` class iterator to finish **Description** Finish an iteration. Always call this function after iteration is complete whether the iteration ran till the end or not.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj„h]”hŒ Parameters”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Myhj~ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ9``struct class_dev_iter *iter`` class iterator to finish ”h]”(jÙ)�”}”(hŒ``struct class_dev_iter *iter``”h]”jß)�”}”(hj£h]”hŒstruct class_dev_iter *iter”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mvhj�ubjõ)�”}”(hhh]”j[)�”}”(hŒclass iterator to finish”h]”hŒclass iterator to finish”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¸h´Mvhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¸h´Mvhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj~ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÞh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mxhj~ubj[)�”}”(hŒzFinish an iteration. Always call this function after iteration is complete whether the iteration ran till the end or not.”h]”hŒzFinish an iteration. Always call this function after iteration is complete whether the iteration ran till the end or not.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mwhj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"class_for_each_device (C function)”Œc.class_for_each_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒoint class_for_each_device (const struct class *class, const struct device *start, void *data, device_iter_t fn)”h]”hù)�”}”(hŒnint class_for_each_device(const struct class *class, const struct device *start, void *data, device_iter_t fn)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mƒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³j1h´Mƒubj")�”}”(hŒclass_for_each_device”h]”j()�”}”(hŒclass_for_each_device”h]”hŒclass_for_each_device”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj@ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjh²hh³j1h´Mƒubj÷7)�”}”(hŒU(const struct class *class, const struct device *start, void *data, device_iter_t fn)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj\ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj\ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j›Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jFsbŒc.class_for_each_device”†”asbuh1hhj\ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj\ubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjXubjý7)�”}”(hŒconst struct device *start”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjéubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjéubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j(Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jµŒc.class_for_each_device”†”asbuh1hhjéubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjéubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjXubjý7)�”}”(hŒ void *data”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjtubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjtubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjXubjý7)�”}”(hŒdevice_iter_t fn”h]”(h)�”}”(hhh]”j()�”}”(hŒ device_iter_t”h]”hŒ device_iter_t”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¿Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jµŒc.class_for_each_device”†”asbuh1hhj¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubj()�”}”(hŒfn”h]”hŒfn”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjXubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjh²hh³j1h´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjh²hh³j1h´Mƒubah}”(h]”jah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j1h´Mƒhjh²hubjV)�”}”(hhh]”j[)�”}”(hŒdevice iterator”h]”hŒdevice iterator”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mƒhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjh²hh³j1h´Mƒubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj+ j{j+ j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXÏ**Parameters** ``const struct class *class`` the class we're iterating ``const struct device *start`` the device to start with in the list, if any. ``void *data`` data for the callback ``device_iter_t fn`` function to be called for each device **Description** Iterate over **class**'s list of devices, and call **fn** for each, passing it **data**. If **start** is set, the list iteration will start there, otherwise if it is NULL, the iteration starts at the beginning of the list. We check the return of **fn** each time. If it returns anything other than 0, we break out and return that value. **fn** is allowed to do anything including calling back into class code. There's no locking restriction.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj5 h]”hŒ Parameters”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M‡hj/ ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ8``const struct class *class`` the class we're iterating ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hjT h]”hŒconst struct class *class”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M„hjN ubjõ)�”}”(hhh]”j[)�”}”(hŒthe class we're iterating”h]”hŒthe class we’re iterating”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³ji h´M„hjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjN ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³ji h´M„hjK ubjÓ)�”}”(hŒM``const struct device *start`` the device to start with in the list, if any. ”h]”(jÙ)�”}”(hŒ``const struct device *start``”h]”jß)�”}”(hj� h]”hŒconst struct device *start”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M…hj‡ ubjõ)�”}”(hhh]”j[)�”}”(hŒ-the device to start with in the list, if any.”h]”hŒ-the device to start with in the list, if any.”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¢ h´M…hj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¢ h´M…hjK ubjÓ)�”}”(hŒ%``void *data`` data for the callback ”h]”(jÙ)�”}”(hŒ``void *data``”h]”jß)�”}”(hjÆ h]”hŒ void *data”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M†hjÀ ubjõ)�”}”(hhh]”j[)�”}”(hŒdata for the callback”h]”hŒdata for the callback”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÛ h´M†hjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛ h´M†hjK ubjÓ)�”}”(hŒ;``device_iter_t fn`` function to be called for each device ”h]”(jÙ)�”}”(hŒ``device_iter_t fn``”h]”jß)�”}”(hjÿ h]”hŒdevice_iter_t fn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M‡hjù ubjõ)�”}”(hhh]”j[)�”}”(hŒ%function to be called for each device”h]”hŒ%function to be called for each device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´M‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjù ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´M‡hjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj/ ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj: h]”hŒ Description”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M‰hj/ ubj[)�”}”(hŒßIterate over **class**'s list of devices, and call **fn** for each, passing it **data**. If **start** is set, the list iteration will start there, otherwise if it is NULL, the iteration starts at the beginning of the list.”h]”(hŒ Iterate over ”…”�”}”(hjP h²hh³Nh´NubjŠ)�”}”(hŒ **class**”h]”hŒclass”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjP ubhŒ’s list of devices, and call ”…”�”}”(hjP h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjP ubhŒ for each, passing it ”…”�”}”(hjP h²hh³Nh´NubjŠ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjP ubhŒ. If ”…”�”}”(hjP h²hh³Nh´NubjŠ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjP ubhŒy is set, the list iteration will start there, otherwise if it is NULL, the iteration starts at the beginning of the list.”…”�”}”(hjP h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mˆhj/ ubj[)�”}”(hŒqWe check the return of **fn** each time. If it returns anything other than 0, we break out and return that value.”h]”(hŒWe check the return of ”…”�”}”(hj§ h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj§ ubhŒT each time. If it returns anything other than 0, we break out and return that value.”…”�”}”(hj§ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M�hj/ ubj[)�”}”(hŒi**fn** is allowed to do anything including calling back into class code. There's no locking restriction.”h]”(jŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÈ ubhŒe is allowed to do anything including calling back into class code. There’s no locking restriction.”…”�”}”(hjÈ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M�hj/ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒclass_find_device (C function)”Œc.class_find_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ�struct device * class_find_device (const struct class *class, const struct device *start, const void *data, device_match_t match)”h]”hù)�”}”(hŒstruct device *class_find_device(const struct class *class, const struct device *start, const void *data, device_match_t match)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj h²hh³j h´M²ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj! ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j& Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œclass_find_device”sbŒc.class_find_device”†”asbuh1hhj h²hh³j h´M²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj h²hh³j h´M²ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj h²hh³j h´M²ubj")�”}”(hŒclass_find_device”h]”j()�”}”(hjB h]”hŒclass_find_device”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj` ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj h²hh³j h´M²ubj÷7)�”}”(hŒ_(const struct class *class, const struct device *start, const void *data, device_match_t match)”h]”(jý7)�”}”(hŒconst struct class *class”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj{ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj{ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ ubh)�”}”(hhh]”j()�”}”(hŒclass”h]”hŒclass”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjµ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jº Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j@ Œc.class_find_device”†”asbuh1hhj{ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj{ ubj()�”}”(hŒclass”h]”hŒclass”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj{ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjw ubjý7)�”}”(hŒconst struct device *start”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj@ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jE Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j@ Œc.class_find_device”†”asbuh1hhj ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj ubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjw ubjý7)�”}”(hŒconst void *data”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj‘ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ ubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj‘ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj‘ ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‘ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjw ubjý7)�”}”(hŒdevice_match_t match”h]”(h)�”}”(hhh]”j()�”}”(hŒdevice_match_t”h]”hŒdevice_match_t”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjò ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j÷ Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j@ Œc.class_find_device”†”asbuh1hhjî ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî ubj()�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjî ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjw ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj h²hh³j h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjý h²hh³j h´M²ubah}”(h]”jø ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j h´M²hjú h²hubjV)�”}”(hhh]”j[)�”}”(hŒ0device iterator for locating a particular device”h]”hŒ0device iterator for locating a particular device”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M²hjH h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjú h²hh³j h´M²ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjc j{jc j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX!**Parameters** ``const struct class *class`` the class we're iterating ``const struct device *start`` Device to begin with ``const void *data`` data for the match function ``device_match_t match`` function to check device **Description** This is similar to the class_for_each_dev() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback. The callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices. Note, you will need to drop the reference with put_device() after use. **match** is allowed to do anything including calling back into class code. There's no locking restriction.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjm h]”hŒ Parameters”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M¶hjg ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ8``const struct class *class`` the class we're iterating ”h]”(jÙ)�”}”(hŒ``const struct class *class``”h]”jß)�”}”(hjŒ h]”hŒconst struct class *class”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M³hj† ubjõ)�”}”(hhh]”j[)�”}”(hŒthe class we're iterating”h]”hŒthe class we’re iterating”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¡ h´M³hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡ h´M³hjƒ ubjÓ)�”}”(hŒ4``const struct device *start`` Device to begin with ”h]”(jÙ)�”}”(hŒ``const struct device *start``”h]”jß)�”}”(hjÅ h]”hŒconst struct device *start”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M´hj¿ ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to begin with”h]”hŒDevice to begin with”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÚ h´M´hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÚ h´M´hjƒ ubjÓ)�”}”(hŒ1``const void *data`` data for the match function ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hjþ h]”hŒconst void *data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´Mµhjø ubjõ)�”}”(hhh]”j[)�”}”(hŒdata for the match function”h]”hŒdata for the match function”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´Mµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjø ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´Mµhjƒ ubjÓ)�”}”(hŒ2``device_match_t match`` function to check device ”h]”(jÙ)�”}”(hŒ``device_match_t match``”h]”jß)�”}”(hj7h]”hŒdevice_match_t match”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M¶hj1ubjõ)�”}”(hhh]”j[)�”}”(hŒfunction to check device”h]”hŒfunction to check device”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jLh´M¶hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jLh´M¶hjƒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjg ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjrh]”hŒ Description”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M¸hjg ubj[)�”}”(hŒªThis is similar to the class_for_each_dev() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback.”h]”(hŒ›This is similar to the class_for_each_dev() function above, but it returns a reference to a device that is ‘found’ for later use, as determined by the ”…”�”}”(hjˆh²hh³Nh´NubjŠ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjˆubhŒ callback.”…”�”}”(hjˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M·hjg ubj[)�”}”(hŒÃThe callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”h]”hŒÅThe callback should return 0 if the device doesn’t match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M»hjg ubj[)�”}”(hŒFNote, you will need to drop the reference with put_device() after use.”h]”hŒFNote, you will need to drop the reference with put_device() after use.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´M¿hjg ubj[)�”}”(hŒl**match** is allowed to do anything including calling back into class code. There's no locking restriction.”h]”(jŠ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÇubhŒe is allowed to do anything including calling back into class code. There’s no locking restriction.”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:45: ./drivers/base/class.c”h´MÁhjg ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"class_compat_register (C function)”Œc.class_compat_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>struct class_compat * class_compat_register (const char *name)”h]”hù)�”}”(hŒ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´KOhj6%ubjõ)�”}”(hhh]”j[)�”}”(hŒ,Heterogeneous memory performance coordinates”h]”hŒ,Heterogeneous memory performance coordinates”…”�”}”(hjU%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´KPhjR%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj6%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jQ%h´KOhjˆ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj@$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒnode_cache_info (C struct)”Œc.node_cache_info”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒnode_cache_info”h]”hù)�”}”(hŒstruct node_cache_info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj–%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj’%h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´KVubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’%h²hh³j£%h´KVubj")�”}”(hŒnode_cache_info”h]”j()�”}”(hj�%h]”hŒnode_cache_info”…”�”}”(hj¶%h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj²%ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj’%h²hh³j£%h´KVubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjŽ%h²hh³j£%h´KVubah}”(h]”j‰%ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j£%h´KVhj‹%h²hubjV)�”}”(hhh]”j[)�”}”(hŒ(Internal tracking for memory node caches”h]”hŒ(Internal tracking for memory node caches”…”�”}”(hjØ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M"hjÕ%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‹%h²hh³j£%h´KVubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjð%j{jð%j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX2**Definition**:: struct node_cache_info { struct device dev; struct list_head node; struct node_cache_attrs cache_attrs; }; **Members** ``dev`` Device represeting the cache level ``node`` List element for tracking in the node ``cache_attrs`` Attributes for this cache level”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjü%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjø%ubhŒ:”…”�”}”(hjø%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M&hjô%ubj¥)�”}”(hŒvstruct node_cache_info { struct device dev; struct list_head node; struct node_cache_attrs cache_attrs; };”h]”hŒvstruct node_cache_info { struct device dev; struct list_head node; struct node_cache_attrs cache_attrs; };”…”�”}”hj&sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M(hjô%ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj&&h]”hŒMembers”…”�”}”(hj(&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj$&ubah}”(h•]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M.hjô%ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ+``dev`` Device represeting the cache level ”h]”(jÙ)�”}”(hŒ``dev``”h]”jß)�”}”(hjE&h]”hŒdev”…”�”}”(hjG&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjC&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M$hj?&ubjõ)�”}”(hhh]”j[)�”}”(hŒ"Device represeting the cache level”h]”hŒ"Device represeting the cache level”…”�”}”(hj^&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jZ&h´M$hj[&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj?&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jZ&h´M$hj<&ubjÓ)�”}”(hŒ/``node`` List element for tracking in the node ”h]”(jÙ)�”}”(hŒ``node``”h]”jß)�”}”(hj~&h]”hŒnode”…”�”}”(hj€&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj|&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M%hjx&ubjõ)�”}”(hhh]”j[)�”}”(hŒ%List element for tracking in the node”h]”hŒ%List element for tracking in the node”…”�”}”(hj—&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j“&h´M%hj”&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjx&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j“&h´M%hj<&ubjÓ)�”}”(hŒ/``cache_attrs`` Attributes for this cache level”h]”(jÙ)�”}”(hŒ``cache_attrs``”h]”jß)�”}”(hj·&h]”hŒ cache_attrs”…”�”}”(hj¹&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjµ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M%hj±&ubjõ)�”}”(hhh]”j[)�”}”(hŒAttributes for this cache level”h]”hŒAttributes for this cache level”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M&hjÍ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj±&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÌ&h´M%hj<&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjô%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒnode_add_cache (C function)”Œc.node_add_cache”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLvoid node_add_cache (unsigned int nid, struct node_cache_attrs *cache_attrs)”h]”hù)�”}”(hŒKvoid node_add_cache(unsigned int nid, struct node_cache_attrs *cache_attrs)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj 'h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mlubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 'h²hh³j'h´Mlubj")�”}”(hŒnode_add_cache”h]”j()�”}”(hŒnode_add_cache”h]”hŒnode_add_cache”…”�”}”(hj2'h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj.'ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj 'h²hh³j'h´Mlubj÷7)�”}”(hŒ8(unsigned int nid, struct node_cache_attrs *cache_attrs)”h]”(jý7)�”}”(hŒunsigned int nid”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjN'h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjJ'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ'ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjj'h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjJ'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ'ubj()�”}”(hŒnid”h]”hŒnid”…”�”}”(hj†'h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjJ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjF'ubjý7)�”}”(hŒ$struct node_cache_attrs *cache_attrs”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŸ'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj›'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›'ubh)�”}”(hhh]”j()�”}”(hŒnode_cache_attrs”h]”hŒnode_cache_attrs”…”�”}”(hj½'h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjº'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¿'Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j4'sbŒc.node_add_cache”†”asbuh1hhj›'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›'ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjë'h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj›'ubj()�”}”(hŒ cache_attrs”h]”hŒ cache_attrs”…”�”}”(hjø'h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj›'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjF'ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj 'h²hh³j'h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj 'h²hh³j'h´Mlubah}”(h]”j'ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j'h´Mlhj'h²hubjV)�”}”(hhh]”j[)�”}”(hŒ$add cache attribute to a memory node”h]”hŒ$add cache attribute to a memory node”…”�”}”(hj"(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mlhj(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj'h²hh³j'h´Mlubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj:(j{j:(j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ¥**Parameters** ``unsigned int nid`` Node identifier that has new cache attributes ``struct node_cache_attrs *cache_attrs`` Attributes for the cache being added”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjD(h]”hŒ Parameters”…”�”}”(hjF(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjB(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mphj>(ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒC``unsigned int nid`` Node identifier that has new cache attributes ”h]”(jÙ)�”}”(hŒ``unsigned int nid``”h]”jß)�”}”(hjc(h]”hŒunsigned int nid”…”�”}”(hje(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhja(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mmhj](ubjõ)�”}”(hhh]”j[)�”}”(hŒ-Node identifier that has new cache attributes”h]”hŒ-Node identifier that has new cache attributes”…”�”}”(hj|(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jx(h´Mmhjy(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj](ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jx(h´MmhjZ(ubjÓ)�”}”(hŒM``struct node_cache_attrs *cache_attrs`` Attributes for the cache being added”h]”(jÙ)�”}”(hŒ(``struct node_cache_attrs *cache_attrs``”h]”jß)�”}”(hjœ(h]”hŒ$struct node_cache_attrs *cache_attrs”…”�”}”(hjž(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjš(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mohj–(ubjõ)�”}”(hhh]”j[)�”}”(hŒ$Attributes for the cache being added”h]”hŒ$Attributes for the cache being added”…”�”}”(hjµ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mnhj²(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj–(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j±(h´MohjZ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj>(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ4register_memory_node_under_compute_node (C function)”Œ)c.register_memory_node_under_compute_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ}int register_memory_node_under_compute_node (unsigned int mem_nid, unsigned int cpu_nid, enum access_coordinate_class access)”h]”hù)�”}”(hŒ|int register_memory_node_under_compute_node(unsigned int mem_nid, unsigned int cpu_nid, enum access_coordinate_class access)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjö(h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjò(h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MËubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò(h²hh³j)h´MËubj")�”}”(hŒ'register_memory_node_under_compute_node”h]”j()�”}”(hŒ'register_memory_node_under_compute_node”h]”hŒ'register_memory_node_under_compute_node”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj)ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjò(h²hh³j)h´MËubj÷7)�”}”(hŒQ(unsigned int mem_nid, unsigned int cpu_nid, enum access_coordinate_class access)”h]”(jý7)�”}”(hŒunsigned int mem_nid”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj3)h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj/)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/)ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjO)h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj/)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj])h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/)ubj()�”}”(hŒmem_nid”h]”hŒmem_nid”…”�”}”(hjk)h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj/)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj+)ubjý7)�”}”(hŒunsigned int cpu_nid”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj„)h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj€)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€)ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj€)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€)ubj()�”}”(hŒcpu_nid”h]”hŒcpu_nid”…”�”}”(hj¼)h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj€)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj+)ubjý7)�”}”(hŒ#enum access_coordinate_class access”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hjÕ)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÑ)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ)ubh)�”}”(hhh]”j()�”}”(hŒaccess_coordinate_class”h]”hŒaccess_coordinate_class”…”�”}”(hjó)h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjð)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jõ)Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j)sbŒ)c.register_memory_node_under_compute_node”†”asbuh1hhjÑ)ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ)ubj()�”}”(hŒaccess”h]”hŒaccess”…”�”}”(hj!*h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÑ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj+)ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjò(h²hh³j)h´MËubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjî(h²hh³j)h´MËubah}”(h]”jé(ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j)h´MËhjë(h²hubjV)�”}”(hhh]”j[)�”}”(hŒ>link memory node to its compute node for a given access class.”h]”hŒ>link memory node to its compute node for a given access class.”…”�”}”(hjK*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MËhjH*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjë(h²hh³j)h´MËubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjc*j{jc*j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX¨**Parameters** ``unsigned int mem_nid`` Memory node number ``unsigned int cpu_nid`` Cpu node number ``enum access_coordinate_class access`` Access class to register **Description** For use with platforms that may have separate memory and compute nodes. This function will export node relationships linking which memory initiator nodes can access memory targets at a given ranked access class.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjm*h]”hŒ Parameters”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjk*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MÏhjg*ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ,``unsigned int mem_nid`` Memory node number ”h]”(jÙ)�”}”(hŒ``unsigned int mem_nid``”h]”jß)�”}”(hjŒ*h]”hŒunsigned int mem_nid”…”�”}”(hjŽ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MÍhj†*ubjõ)�”}”(hhh]”j[)�”}”(hŒMemory node number”h]”hŒMemory node number”…”�”}”(hj¥*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¡*h´MÍhj¢*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡*h´MÍhjƒ*ubjÓ)�”}”(hŒ*``unsigned int cpu_nid`` Cpu node number ”h]”(jÙ)�”}”(hŒ``unsigned int cpu_nid``”h]”jß)�”}”(hjÅ*h]”hŒunsigned int cpu_nid”…”�”}”(hjÇ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÃ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MÎhj¿*ubjõ)�”}”(hhh]”j[)�”}”(hŒCpu node number”h]”hŒCpu node number”…”�”}”(hjÞ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÚ*h´MÎhjÛ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¿*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÚ*h´MÎhjƒ*ubjÓ)�”}”(hŒA``enum access_coordinate_class access`` Access class to register ”h]”(jÙ)�”}”(hŒ'``enum access_coordinate_class access``”h]”jß)�”}”(hjþ*h]”hŒ#enum access_coordinate_class access”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjü*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MÏhjø*ubjõ)�”}”(hhh]”j[)�”}”(hŒAccess class to register”h]”hŒAccess class to register”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j+h´MÏhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjø*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j+h´MÏhjƒ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjg*ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj9+h]”hŒ Description”…”�”}”(hj;+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj7+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MÑhjg*ubj3)�”}”(hŒÓFor use with platforms that may have separate memory and compute nodes. This function will export node relationships linking which memory initiator nodes can access memory targets at a given ranked access class.”h]”j[)�”}”(hŒÓFor use with platforms that may have separate memory and compute nodes. This function will export node relationships linking which memory initiator nodes can access memory targets at a given ranked access class.”h]”hŒÓFor use with platforms that may have separate memory and compute nodes. This function will export node relationships linking which memory initiator nodes can access memory targets at a given ranked access class.”…”�”}”(hjS+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MÑhjO+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³ja+h´MÑhjg*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒregister_node (C function)”Œc.register_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒint register_node (int nid)”h]”hù)�”}”(hŒint register_node(int nid)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjˆ+h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj„+h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mjubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„+h²hh³j–+h´Mjubj")�”}”(hŒ register_node”h]”j()�”}”(hŒ register_node”h]”hŒ register_node”…”�”}”(hj©+h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥+ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj„+h²hh³j–+h´Mjubj÷7)�”}”(hŒ (int nid)”h]”jý7)�”}”(hŒint nid”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅ+h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÁ+ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ+ubj()�”}”(hŒnid”h]”hŒnid”…”�”}”(hjá+h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÁ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj½+ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj„+h²hh³j–+h´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj€+h²hh³j–+h´Mjubah}”(h]”j{+ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j–+h´Mjhj}+h²hubjV)�”}”(hhh]”j[)�”}”(hŒ(Initialize and register the node device.”h]”hŒ(Initialize and register the node device.”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mjhj,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj}+h²hh³j–+h´Mjubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj#,j{j#,j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒv**Parameters** ``int nid`` Node number to use when creating the device. **Return** 0 on success, -errno otherwise”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj-,h]”hŒ Parameters”…”�”}”(hj/,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj+,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mnhj',ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ9``int nid`` Node number to use when creating the device. ”h]”(jÙ)�”}”(hŒ ``int nid``”h]”jß)�”}”(hjL,h]”hŒint nid”…”�”}”(hjN,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´MkhjF,ubjõ)�”}”(hhh]”j[)�”}”(hŒ,Node number to use when creating the device.”h]”hŒ,Node number to use when creating the device.”…”�”}”(hje,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³ja,h´Mkhjb,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjF,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³ja,h´MkhjC,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj',ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hj‡,h]”hŒReturn”…”�”}”(hj‰,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj…,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mmhj',ubj[)�”}”(hŒ0 on success, -errno otherwise”h]”hŒ0 on success, -errno otherwise”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mmhj',ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒunregister_node (C function)”Œc.unregister_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid unregister_node (int nid)”h]”hù)�”}”(hŒvoid unregister_node(int nid)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌ,h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÈ,h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M–ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ,h²hh³jÚ,h´M–ubj")�”}”(hŒunregister_node”h]”j()�”}”(hŒunregister_node”h]”hŒunregister_node”…”�”}”(hjí,h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjé,ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÈ,h²hh³jÚ,h´M–ubj÷7)�”}”(hŒ (int nid)”h]”jý7)�”}”(hŒint nid”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj-ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-ubj()�”}”(hŒnid”h]”hŒnid”…”�”}”(hj%-h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj-ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÈ,h²hh³jÚ,h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÄ,h²hh³jÚ,h´M–ubah}”(h]”j¿,ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÚ,h´M–hjÁ,h²hubjV)�”}”(hhh]”j[)�”}”(hŒunregister a node device”h]”hŒunregister a node device”…”�”}”(hjO-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M–hjL-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÁ,h²hh³jÚ,h´M–ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjg-j{jg-j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÉ**Parameters** ``int nid`` nid of the node going away **Description** Unregisters the node device at node id **nid**. All the devices on the node must be unregistered before calling this function.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjq-h]”hŒ Parameters”…”�”}”(hjs-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjo-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´Mšhjk-ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ'``int nid`` nid of the node going away ”h]”(jÙ)�”}”(hŒ ``int nid``”h]”jß)�”}”(hj�-h]”hŒint nid”…”�”}”(hj’-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŽ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M—hjŠ-ubjõ)�”}”(hhh]”j[)�”}”(hŒnid of the node going away”h]”hŒnid of the node going away”…”�”}”(hj©-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¥-h´M—hj¦-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŠ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¥-h´M—hj‡-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjk-ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjË-h]”hŒ Description”…”�”}”(hjÍ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÉ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M™hjk-ubj[)�”}”(hŒ~Unregisters the node device at node id **nid**. All the devices on the node must be unregistered before calling this function.”h]”(hŒ'Unregisters the node device at node id ”…”�”}”(hjá-h²hh³Nh´NubjŠ)�”}”(hŒ**nid**”h]”hŒnid”…”�”}”(hjé-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjá-ubhŒP. All the devices on the node must be unregistered before calling this function.”…”�”}”(hjá-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:54: ./drivers/base/node.c”h´M˜hjk-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%transport_class_register (C function)”Œc.transport_class_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=int transport_class_register (struct transport_class *tclass)”h]”hù)�”}”(hŒhjŽ0ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒE``struct transport_class *tclass`` The transport class to unregister ”h]”(jÙ)�”}”(hŒ"``struct transport_class *tclass``”h]”jß)�”}”(hj³0h]”hŒstruct transport_class *tclass”…”�”}”(hjµ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KhjŽ0ubj[)�”}”(hŒHMust be called prior to deallocating the memory for the transport class.”h]”hŒHMust be called prior to deallocating the memory for the transport class.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K=hjŽ0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*anon_transport_class_register (C function)”Œc.anon_transport_class_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒEvoid anon_transport_class_register (struct anon_transport_class *atc)”h]”hù)�”}”(hŒDvoid anon_transport_class_register(struct anon_transport_class *atc)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj/1h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KPubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/1h²hh³jA1h´KPubj")�”}”(hŒanon_transport_class_register”h]”j()�”}”(hŒanon_transport_class_register”h]”hŒanon_transport_class_register”…”�”}”(hjT1h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjP1ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj/1h²hh³jA1h´KPubj÷7)�”}”(hŒ"(struct anon_transport_class *atc)”h]”jý7)�”}”(hŒ struct anon_transport_class *atc”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjp1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjl1ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl1ubh)�”}”(hhh]”j()�”}”(hŒanon_transport_class”h]”hŒanon_transport_class”…”�”}”(hjŽ1h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‹1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j�1Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jV1sbŒc.anon_transport_class_register”†”asbuh1hhjl1ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl1ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¼1h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjl1ubj()�”}”(hŒatc”h]”hŒatc”…”�”}”(hjÉ1h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjl1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjh1ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj/1h²hh³jA1h´KPubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj+1h²hh³jA1h´KPubah}”(h]”j&1ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jA1h´KPhj(1h²hubjV)�”}”(hhh]”j[)�”}”(hŒregister an anonymous class”h]”hŒregister an anonymous class”…”�”}”(hjó1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KPhjð1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj(1h²hh³jA1h´KPubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj 2j{j 2j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXâ**Parameters** ``struct anon_transport_class *atc`` The anon transport class to register **Description** The anonymous transport class contains both a transport class and a container. The idea of an anonymous class is that it never actually has any device attributes associated with it (and thus saves on container storage). So it can only be used for triggering events. Use prezero and then use DECLARE_ANON_TRANSPORT_CLASS() to initialise the anon transport class storage.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj2h]”hŒ Parameters”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KThj2ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒJ``struct anon_transport_class *atc`` The anon transport class to register ”h]”(jÙ)�”}”(hŒ$``struct anon_transport_class *atc``”h]”jß)�”}”(hj42h]”hŒ struct anon_transport_class *atc”…”�”}”(hj62h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj22ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KRhj.2ubjõ)�”}”(hhh]”j[)�”}”(hŒ$The anon transport class to register”h]”hŒ$The anon transport class to register”…”�”}”(hjM2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jI2h´KRhjJ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj.2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jI2h´KRhj+2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj2ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjo2h]”hŒ Description”…”�”}”(hjq2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjm2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KThj2ubj[)�”}”(hXtThe anonymous transport class contains both a transport class and a container. The idea of an anonymous class is that it never actually has any device attributes associated with it (and thus saves on container storage). So it can only be used for triggering events. Use prezero and then use DECLARE_ANON_TRANSPORT_CLASS() to initialise the anon transport class storage.”h]”hXtThe anonymous transport class contains both a transport class and a container. The idea of an anonymous class is that it never actually has any device attributes associated with it (and thus saves on container storage). So it can only be used for triggering events. Use prezero and then use DECLARE_ANON_TRANSPORT_CLASS() to initialise the anon transport class storage.”…”�”}”(hj…2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KShj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,anon_transport_class_unregister (C function)”Œ!c.anon_transport_class_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGvoid anon_transport_class_unregister (struct anon_transport_class *atc)”h]”hù)�”}”(hŒFvoid anon_transport_class_unregister(struct anon_transport_class *atc)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´2h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj°2h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kfubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°2h²hh³jÂ2h´Kfubj")�”}”(hŒanon_transport_class_unregister”h]”j()�”}”(hŒanon_transport_class_unregister”h]”hŒanon_transport_class_unregister”…”�”}”(hjÕ2h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÑ2ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj°2h²hh³jÂ2h´Kfubj÷7)�”}”(hŒ"(struct anon_transport_class *atc)”h]”jý7)�”}”(hŒ struct anon_transport_class *atc”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjñ2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjí2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí2ubh)�”}”(hhh]”j()�”}”(hŒanon_transport_class”h]”hŒanon_transport_class”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj 3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j3Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j×2sbŒ!c.anon_transport_class_unregister”†”asbuh1hhjí2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí2ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj=3h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjí2ubj()�”}”(hŒatc”h]”hŒatc”…”�”}”(hjJ3h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjí2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjé2ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj°2h²hh³jÂ2h´Kfubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¬2h²hh³jÂ2h´Kfubah}”(h]”j§2ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÂ2h´Kfhj©2h²hubjV)�”}”(hhh]”j[)�”}”(hŒunregister an anon class”h]”hŒunregister an anon class”…”�”}”(hjt3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kfhjq3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj©2h²hh³jÂ2h´Kfubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjŒ3j{jŒ3j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÈ**Parameters** ``struct anon_transport_class *atc`` Pointer to the anon transport class to unregister **Description** Must be called prior to deallocating the memory for the anon transport class.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj–3h]”hŒ Parameters”…”�”}”(hj˜3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj”3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kjhj�3ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒW``struct anon_transport_class *atc`` Pointer to the anon transport class to unregister ”h]”(jÙ)�”}”(hŒ$``struct anon_transport_class *atc``”h]”jß)�”}”(hjµ3h]”hŒ struct anon_transport_class *atc”…”�”}”(hj·3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj³3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Khhj¯3ubjõ)�”}”(hhh]”j[)�”}”(hŒ1Pointer to the anon transport class to unregister”h]”hŒ1Pointer to the anon transport class to unregister”…”�”}”(hjÎ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÊ3h´KhhjË3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¯3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÊ3h´Khhj¬3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�3ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjð3h]”hŒ Description”…”�”}”(hjò3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjî3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kjhj�3ubj[)�”}”(hŒMMust be called prior to deallocating the memory for the anon transport class.”h]”hŒMMust be called prior to deallocating the memory for the anon transport class.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kihj�3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#transport_setup_device (C function)”Œc.transport_setup_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0void transport_setup_device (struct device *dev)”h]”hù)�”}”(hŒ/void transport_setup_device(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj54h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj14h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K‚ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj14h²hh³jC4h´K‚ubj")�”}”(hŒtransport_setup_device”h]”j()�”}”(hŒtransport_setup_device”h]”hŒtransport_setup_device”…”�”}”(hjV4h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjR4ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj14h²hh³jC4h´K‚ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjr4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjn4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn4ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j’4Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jX4sbŒc.transport_setup_device”†”asbuh1hhjn4ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn4ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¾4h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjn4ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjË4h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjn4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjj4ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj14h²hh³jC4h´K‚ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj-4h²hh³jC4h´K‚ubah}”(h]”j(4ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jC4h´K‚hj*4h²hubjV)�”}”(hhh]”j[)�”}”(hŒPdeclare a new dev for transport class association but don't make it visible yet.”h]”hŒRdeclare a new dev for transport class association but don’t make it visible yet.”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K‚hjò4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj*4h²hh³jC4h´K‚ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj 5j{j 5j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX€**Parameters** ``struct device *dev`` the generic device representing the entity being added **Description** Usually, dev represents some component in the HBA system (either the HBA itself or a device remote across the HBA bus). This routine is simply a trigger point to see if any set of transport classes wishes to associate with the added device. This allocates storage for the class device and initialises it, but does not yet add it to the system or add attributes to it (you do this with transport_add_device). If you have no need for a separate setup and add operations, use transport_register_device (see transport_class.h).”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj5h]”hŒ Parameters”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K†hj5ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒN``struct device *dev`` the generic device representing the entity being added ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj65h]”hŒstruct device *dev”…”�”}”(hj85h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj45ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kƒhj05ubjõ)�”}”(hhh]”j[)�”}”(hŒ6the generic device representing the entity being added”h]”hŒ6the generic device representing the entity being added”…”�”}”(hjO5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jK5h´KƒhjL5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj05ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jK5h´Kƒhj-5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj5ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjq5h]”hŒ Description”…”�”}”(hjs5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjo5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K…hj5ubj[)�”}”(hXUsually, dev represents some component in the HBA system (either the HBA itself or a device remote across the HBA bus). This routine is simply a trigger point to see if any set of transport classes wishes to associate with the added device. This allocates storage for the class device and initialises it, but does not yet add it to the system or add attributes to it (you do this with transport_add_device). If you have no need for a separate setup and add operations, use transport_register_device (see transport_class.h).”h]”hXUsually, dev represents some component in the HBA system (either the HBA itself or a device remote across the HBA bus). This routine is simply a trigger point to see if any set of transport classes wishes to associate with the added device. This allocates storage for the class device and initialises it, but does not yet add it to the system or add attributes to it (you do this with transport_add_device). If you have no need for a separate setup and add operations, use transport_register_device (see transport_class.h).”…”�”}”(hj‡5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K„hj5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!transport_add_device (C function)”Œc.transport_add_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int transport_add_device (struct device *dev)”h]”hù)�”}”(hŒ,int transport_add_device(struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶5h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj²5h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K¾ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²5h²hh³jÄ5h´K¾ubj")�”}”(hŒtransport_add_device”h]”j()�”}”(hŒtransport_add_device”h]”hŒtransport_add_device”…”�”}”(hj×5h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÓ5ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj²5h²hh³jÄ5h´K¾ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjó5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjï5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï5ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j6Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÙ5sbŒc.transport_add_device”†”asbuh1hhjï5ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj16h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï5ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj?6h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjï5ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjL6h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjï5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjë5ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj²5h²hh³jÄ5h´K¾ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj®5h²hh³jÄ5h´K¾ubah}”(h]”j©5ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÄ5h´K¾hj«5h²hubjV)�”}”(hhh]”j[)�”}”(hŒ1declare a new dev for transport class association”h]”hŒ1declare a new dev for transport class association”…”�”}”(hjv6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´K¾hjs6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj«5h²hh³jÄ5h´K¾ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjŽ6j{jŽ6j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXV**Parameters** ``struct device *dev`` the generic device representing the entity being added **Description** Usually, dev represents some component in the HBA system (either the HBA itself or a device remote across the HBA bus). This routine is simply a trigger point used to add the device to the system and register attributes for it.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj˜6h]”hŒ Parameters”…”�”}”(hjš6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj–6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KÂhj’6ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒN``struct device *dev`` the generic device representing the entity being added ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj·6h]”hŒstruct device *dev”…”�”}”(hj¹6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjµ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KÀhj±6ubjõ)�”}”(hhh]”j[)�”}”(hŒ6the generic device representing the entity being added”h]”hŒ6the generic device representing the entity being added”…”�”}”(hjÐ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÌ6h´KÀhjÍ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj±6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÌ6h´KÀhj®6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj’6ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjò6h]”hŒ Description”…”�”}”(hjô6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjð6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KÂhj’6ubj[)�”}”(hŒäUsually, dev represents some component in the HBA system (either the HBA itself or a device remote across the HBA bus). This routine is simply a trigger point used to add the device to the system and register attributes for it.”h]”hŒäUsually, dev represents some component in the HBA system (either the HBA itself or a device remote across the HBA bus). This routine is simply a trigger point used to add the device to the system and register attributes for it.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KÁhj’6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'transport_configure_device (C function)”Œc.transport_configure_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4void transport_configure_device (struct device *dev)”h]”hù)�”}”(hŒ3void transport_configure_device(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj77h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj37h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KÝubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj37h²hh³jE7h´KÝubj")�”}”(hŒtransport_configure_device”h]”j()�”}”(hŒtransport_configure_device”h]”hŒtransport_configure_device”…”�”}”(hjX7h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjT7ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj37h²hh³jE7h´KÝubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjt7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjp7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp7ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj’7h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j”7Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jZ7sbŒc.transport_configure_device”†”asbuh1hhjp7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp7ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÀ7h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjp7ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÍ7h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjp7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjl7ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj37h²hh³jE7h´KÝubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj/7h²hh³jE7h´KÝubah}”(h]”j*7ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jE7h´KÝhj,7h²hubjV)�”}”(hhh]”j[)�”}”(hŒ"configure an already set up device”h]”hŒ"configure an already set up device”…”�”}”(hj÷7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´KÝhjô7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj,7h²hh³jE7h´KÝubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj8j{j8j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXû**Parameters** ``struct device *dev`` generic device representing device to be configured **Description** The idea of configure is simply to provide a point within the setup process to allow the transport class to extract information from a device after it has been setup. This is used in SCSI because we have to have a setup device to begin using the HBA, but after we send the initial inquiry, we use configure to extract the device parameters. The device need not have been added to be configured.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Káhj8ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒK``struct device *dev`` generic device representing device to be configured ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj88h]”hŒstruct device *dev”…”�”}”(hj:8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj68ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kßhj28ubjõ)�”}”(hhh]”j[)�”}”(hŒ3generic device representing device to be configured”h]”hŒ3generic device representing device to be configured”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jM8h´KßhjN8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj28ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jM8h´Kßhj/8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj8ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjs8h]”hŒ Description”…”�”}”(hju8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjq8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Káhj8ubj[)�”}”(hXŒThe idea of configure is simply to provide a point within the setup process to allow the transport class to extract information from a device after it has been setup. This is used in SCSI because we have to have a setup device to begin using the HBA, but after we send the initial inquiry, we use configure to extract the device parameters. The device need not have been added to be configured.”h]”hXŒThe idea of configure is simply to provide a point within the setup process to allow the transport class to extract information from a device after it has been setup. This is used in SCSI because we have to have a setup device to begin using the HBA, but after we send the initial inquiry, we use configure to extract the device parameters. The device need not have been added to be configured.”…”�”}”(hj‰8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Kàhj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$transport_remove_device (C function)”Œc.transport_remove_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1void transport_remove_device (struct device *dev)”h]”hù)�”}”(hŒ0void transport_remove_device(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸8h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj´8h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´8h²hh³jÆ8h´Mubj")�”}”(hŒtransport_remove_device”h]”j()�”}”(hŒtransport_remove_device”h]”hŒtransport_remove_device”…”�”}”(hjÙ8h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÕ8ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj´8h²hh³jÆ8h´Mubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjñ8ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ8ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j9Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÛ8sbŒc.transport_remove_device”†”asbuh1hhjñ8ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj39h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ8ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjA9h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjñ8ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjN9h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjñ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjí8ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj´8h²hh³jÆ8h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj°8h²hh³jÆ8h´Mubah}”(h]”j«8ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÆ8h´Mhj­8h²hubjV)�”}”(hhh]”j[)�”}”(hŒ!remove the visibility of a device”h]”hŒ!remove the visibility of a device”…”�”}”(hjx9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Mhju9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj­8h²hh³jÆ8h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj�9j{j�9j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX§**Parameters** ``struct device *dev`` generic device to remove **Description** This call removes the visibility of the device (to the user from sysfs), but does not destroy it. To eliminate a device entirely you must also call transport_destroy_device. If you don't need to do remove and destroy as separate operations, use transport_unregister_device() (see transport_class.h) which will perform both calls for you.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjš9h]”hŒ Parameters”…”�”}”(hjœ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj˜9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M hj”9ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ0``struct device *dev`` generic device to remove ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj¹9h]”hŒstruct device *dev”…”�”}”(hj»9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj·9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´Mhj³9ubjõ)�”}”(hhh]”j[)�”}”(hŒgeneric device to remove”h]”hŒgeneric device to remove”…”�”}”(hjÒ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÎ9h´MhjÏ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj³9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÎ9h´Mhj°9ubah}”(h]”h •ñ]”h"]”h$]”h&]”uh1jÍhj”9ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjô9h]”hŒ Description”…”�”}”(hjö9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjò9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M hj”9ubj[)�”}”(hXSThis call removes the visibility of the device (to the user from sysfs), but does not destroy it. To eliminate a device entirely you must also call transport_destroy_device. If you don't need to do remove and destroy as separate operations, use transport_unregister_device() (see transport_class.h) which will perform both calls for you.”h]”hXUThis call removes the visibility of the device (to the user from sysfs), but does not destroy it. To eliminate a device entirely you must also call transport_destroy_device. If you don’t need to do remove and destroy as separate operations, use transport_unregister_device() (see transport_class.h) which will perform both calls for you.”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M hj”9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%transport_destroy_device (C function)”Œc.transport_destroy_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2void transport_destroy_device (struct device *dev)”h]”hù)�”}”(hŒ1void transport_destroy_device(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9:h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj5:h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M#ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5:h²hh³jG:h´M#ubj")�”}”(hŒtransport_destroy_device”h]”j()�”}”(hŒtransport_destroy_device”h]”hŒtransport_destroy_device”…”�”}”(hjZ:h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjV:ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj5:h²hh³jG:h´M#ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjv:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjr:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr:ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj”:h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‘:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j–:Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j\:sbŒc.transport_destroy_device”†”asbuh1hhjr:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr:ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÂ:h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjr:ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÏ:h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjr:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjn:ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj5:h²hh³jG:h´M#ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj1:h²hh³jG:h´M#ubah}”(h]”j,:ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jG:h´M#hj.:h²hubjV)�”}”(hhh]”j[)�”}”(hŒdestroy a removed device”h]”hŒdestroy a removed device”…”�”}”(hjù:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M#hjö:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj.:h²hh³jG:h´M#ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj;j{j;j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXØ**Parameters** ``struct device *dev`` device to eliminate from the transport class. **Description** This call triggers the elimination of storage associated with the transport classdev. Note: all it really does is relinquish a reference to the classdev. The memory will not be freed until the last reference goes to zero. Note also that the classdev retains a reference count on dev, so dev too will remain for as long as the transport class device remains around.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj;h]”hŒ Parameters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M'hj;ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒE``struct device *dev`` device to eliminate from the transport class. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj:;h]”hŒstruct device *dev”…”�”}”(hj<;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M%hj4;ubjõ)�”}”(hhh]”j[)�”}”(hŒ-device to eliminate from the transport class.”h]”hŒ-device to eliminate from the transport class.”…”�”}”(hjS;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jO;h´M%hjP;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj4;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jO;h´M%hj1;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj;ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hju;h]”hŒ Description”…”�”}”(hjw;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjs;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M'hj;ubj[)�”}”(hXoThis call triggers the elimination of storage associated with the transport classdev. Note: all it really does is relinquish a reference to the classdev. The memory will not be freed until the last reference goes to zero. Note also that the classdev retains a reference count on dev, so dev too will remain for as long as the transport class device remains around.”h]”hXoThis call triggers the elimination of storage associated with the transport classdev. Note: all it really does is relinquish a reference to the classdev. The memory will not be freed until the last reference goes to zero. Note also that the classdev retains a reference count on dev, so dev too will remain for as long as the transport class device remains around.”…”�”}”(hj‹;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:57: ./drivers/base/transport_class.c”h´M&hj;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.driver_deferred_probe_check_state (C function)”Œ#c.driver_deferred_probe_check_state”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:int driver_deferred_probe_check_state (struct device *dev)”h]”hù)�”}”(hŒ9int driver_deferred_probe_check_state(struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjº;h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¶;h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶;h²hh³jÈ;h´Mubj")�”}”(hŒ!driver_deferred_probe_check_state”h]”j()�”}”(hŒ!driver_deferred_probe_check_state”h]”hŒ!driver_deferred_probe_check_state”…”�”}”(hjÛ;h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj×;ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¶;h²hh³jÈ;h´Mubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj÷;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjó;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó;ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j<Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÝ;sbŒ#c.driver_deferred_probe_check_state”†”asbuh1hhjó;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó;ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjC<h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjó;ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjP<h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjó;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjï;ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¶;h²hh³jÈ;h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj²;h²hh³jÈ;h´Mubah}”(h]”j­;ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÈ;h´Mhj¯;h²hubjV)�”}”(hhh]”j[)�”}”(hŒCheck deferred probe state”h]”hŒCheck deferred probe state”…”�”}”(hjz<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhjw<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¯;h²hh³jÈ;h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj’<j{j’<j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX|**Parameters** ``struct device *dev`` device to check **Return** * -ENODEV if initcalls have completed and modules are disabled. * -ETIMEDOUT if the deferred probe timeout was set and has expired and modules are enabled. * -EPROBE_DEFER in other cases. **Description** Drivers or subsystems can opt-in to calling this function instead of directly returning -EPROBE_DEFER.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjœ<h]”hŒ Parameters”…”�”}”(hjž<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjš<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj–<ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ'``struct device *dev`` device to check ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj»<h]”hŒstruct device *dev”…”�”}”(hj½<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhjµ<ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hjÔ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÐ<h´MhjÑ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjµ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÐ<h´Mhj²<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj–<ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjö<h]”hŒReturn”…”�”}”(hjø<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjô<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj–<ubjlj)�”}”(hhh]”(jqj)�”}”(hŒ=-ENODEV if initcalls have completed and modules are disabled.”h]”j[)�”}”(hj=h]”hŒ=-ENODEV if initcalls have completed and modules are disabled.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj =ubjqj)�”}”(hŒY-ETIMEDOUT if the deferred probe timeout was set and has expired and modules are enabled.”h]”j[)�”}”(hŒY-ETIMEDOUT if the deferred probe timeout was set and has expired and modules are enabled.”h]”hŒY-ETIMEDOUT if the deferred probe timeout was set and has expired and modules are enabled.”…”�”}”(hj+=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj'=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj =ubjqj)�”}”(hŒ-EPROBE_DEFER in other cases. ”h]”j[)�”}”(hŒ-EPROBE_DEFER in other cases.”h]”hŒ-EPROBE_DEFER in other cases.”…”�”}”(hjD=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj@=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jpjhj =ubeh}”(h]”h ]”h"]”h$]”h&]”j�jjZ8uh1jkjh³j =h´Mhj–<ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hja=h]”hŒ Description”…”�”}”(hjc=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj_=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj–<ubj[)�”}”(hŒfDrivers or subsystems can opt-in to calling this function instead of directly returning -EPROBE_DEFER.”h]”hŒfDrivers or subsystems can opt-in to calling this function instead of directly returning -EPROBE_DEFER.”…”�”}”(hjw=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj–<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_is_bound (C function)”Œc.device_is_bound”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)bool device_is_bound (struct device *dev)”h]”hù)�”}”(hŒ(bool device_is_bound(struct device *dev)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hj¦=h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¢=h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M°ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢=h²hh³j³=h´M°ubj")�”}”(hŒdevice_is_bound”h]”j()�”}”(hŒdevice_is_bound”h]”hŒdevice_is_bound”…”�”}”(hjÆ=h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÂ=ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¢=h²hh³j³=h´M°ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjâ=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÞ=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ=ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjý=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j>Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÈ=sbŒc.device_is_bound”†”asbuh1hhjÞ=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ=ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÞ=ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj;>h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÞ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÚ=ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¢=h²hh³j³=h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjž=h²hh³j³=h´M°ubah}”(h]”j™=ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j³=h´M°hj›=h²hubjV)�”}”(hhh]”j[)�”}”(hŒ$Check if device is bound to a driver”h]”hŒ$Check if device is bound to a driver”…”�”}”(hje>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M°hjb>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj›=h²hh³j³=h´M°ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj}>j{j}>j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÝ**Parameters** ``struct device *dev`` device to check **Description** Returns true if passed device has already finished probing successfully against a driver. This function must be called with the device lock held.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‡>h]”hŒ Parameters”…”�”}”(hj‰>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj…>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M´hj�>ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ'``struct device *dev`` device to check ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj¦>h]”hŒstruct device *dev”…”�”}”(hj¨>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¤>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M±hj >ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hj¿>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j»>h´M±hj¼>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj >ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j»>h´M±hj�>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�>ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjá>h]”hŒ Description”…”�”}”(hjã>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjß>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M³hj�>ubj[)�”}”(hŒYReturns true if passed device has already finished probing successfully against a driver.”h]”hŒYReturns true if passed device has already finished probing successfully against a driver.”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M²hj�>ubj[)�”}”(hŒ7This function must be called with the device lock held.”h]”hŒ7This function must be called with the device lock held.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mµhj�>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_bind_driver (C function)”Œc.device_bind_driver”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int device_bind_driver (struct device *dev)”h]”hù)�”}”(hŒ*int device_bind_driver(struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj5?h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj1?h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1?h²hh³jC?h´Mubj")�”}”(hŒdevice_bind_driver”h]”j()�”}”(hŒdevice_bind_driver”h]”hŒdevice_bind_driver”…”�”}”(hjV?h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjR?ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj1?h²hh³jC?h´Mubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjr?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjn?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn?ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j’?Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jX?sbŒc.device_bind_driver”†”asbuh1hhjn?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn?ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¾?h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjn?ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjË?h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjn?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjj?ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj1?h²hh³jC?h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj-?h²hh³jC?h´Mubah}”(h]”j(?ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jC?h´Mhj*?h²hubjV)�”}”(hhh]”j[)�”}”(hŒbind a driver to one device.”h]”hŒbind a driver to one device.”…”�”}”(hjõ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhjò?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj*?h²hh³jC?h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj @j{j @j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXÒ**Parameters** ``struct device *dev`` device. **Description** Allow manual attachment of a driver to a device. Caller must have already set **dev->driver**. Note that this does not modify the bus reference count. Please verify that is accounted for before calling this. (It is ok to call with no other effort from a driver's probe() method.) This function must be called with the device lock held. Callers should prefer to use device_driver_attach() instead.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj@h]”hŒ Parameters”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj@ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj6@h]”hŒstruct device *dev”…”�”}”(hj8@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj4@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj0@ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hjO@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jK@h´MhjL@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj0@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jK@h´Mhj-@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj@ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjq@h]”hŒ Description”…”�”}”(hjs@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjo@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj@ubj[)�”}”(hŒ^Allow manual attachment of a driver to a device. Caller must have already set **dev->driver**.”h]”(hŒNAllow manual attachment of a driver to a device. Caller must have already set ”…”�”}”(hj‡@h²hh³Nh´NubjŠ)�”}”(hŒ**dev->driver**”h]”hŒ dev->driver”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‡@ubhŒ.”…”�”}”(hj‡@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj@ubj[)�”}”(hŒ¸Note that this does not modify the bus reference count. Please verify that is accounted for before calling this. (It is ok to call with no other effort from a driver's probe() method.)”h]”hŒºNote that this does not modify the bus reference count. Please verify that is accounted for before calling this. (It is ok to call with no other effort from a driver’s probe() method.)”…”�”}”(hj¨@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj@ubj[)�”}”(hŒ7This function must be called with the device lock held.”h]”hŒ7This function must be called with the device lock held.”…”�”}”(hj·@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj@ubj[)�”}”(hŒparent** lock must be held.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjðBh]”hŒ Parameters”…”�”}”(hjòBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjîBubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MjhjêBubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjCh]”hŒstruct device *dev”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mghj Cubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hj(Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j$Ch´Mghj%Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j$Ch´MghjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjêBubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjJCh]”hŒ Description”…”�”}”(hjLCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjHCubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MihjêBubj[)�”}”(hŒŒWalk the list of drivers that the bus has and call driver_probe_device() for each pair. If a compatible pair is found, break out and return.”h]”hŒŒWalk the list of drivers that the bus has and call driver_probe_device() for each pair. If a compatible pair is found, break out and return.”…”�”}”(hj`Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MhhjêBubj[)�”}”(hŒzReturns 1 if the device was bound to a driver; 0 if no matching driver was found; -ENODEV if the device is not registered.”h]”hŒzReturns 1 if the device was bound to a driver; 0 if no matching driver was found; -ENODEV if the device is not registered.”…”�”}”(hjoCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MlhjêBubj[)�”}”(hŒCWhen called for a USB interface, **dev->parent** lock must be held.”h]”(hŒ!When called for a USB interface, ”…”�”}”(hj~Ch²hh³Nh´NubjŠ)�”}”(hŒ**dev->parent**”h]”hŒ dev->parent”…”�”}”(hj†Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj~CubhŒ lock must be held.”…”�”}”(hj~Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MphjêBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!device_driver_attach (C function)”Œc.device_driver_attach”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒNint device_driver_attach (const struct device_driver *drv, struct device *dev)”h]”hù)�”}”(hŒMint device_driver_attach(const struct device_driver *drv, struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿Ch²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj»Ch²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M§ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»Ch²hh³jÍCh´M§ubj")�”}”(hŒdevice_driver_attach”h]”j()�”}”(hŒdevice_driver_attach”h]”hŒdevice_driver_attach”…”�”}”(hjàCh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÜCubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj»Ch²hh³jÍCh´M§ubj÷7)�”}”(hŒ5(const struct device_driver *drv, struct device *dev)”h]”(jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjüCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjøCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøCubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjøCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøCubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj5Dh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj2Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j7DŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jâCsbŒc.device_driver_attach”†”asbuh1hhjøCubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøCubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjcDh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjøCubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjpDh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjøCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjôCubjý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‰Dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj…Dubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Dubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj§Dh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¤Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j©DŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jQDŒc.device_driver_attach”†”asbuh1hhj…Dubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…DubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÓDh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj…Dubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjàDh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj…Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjôCubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj»Ch²hh³jÍCh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj·Ch²hh³jÍCh´M§ubah}”(h]”j²Cah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÍCh´M§hj´Ch²hubjV)�”}”(hhh]”j[)�”}”(hŒ-attach a specific driver to a specific device”h]”hŒ-attach a specific driver to a specific device”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M§hjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj´Ch²hh³jÍCh´M§ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj"Ej{j"Ej|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``const struct device_driver *drv`` Driver to attach ``struct device *dev`` Device to attach it to **Description** Manually attach driver to a device. Will acquire both **dev** lock and **dev->parent** lock if needed. Returns 0 on success, -ERR on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj,Eh]”hŒ Parameters”…”�”}”(hj.Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj*Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M«hj&EubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ5``const struct device_driver *drv`` Driver to attach ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hjKEh]”hŒconst struct device_driver *drv”…”�”}”(hjMEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjIEubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M¨hjEEubjõ)�”}”(hhh]”j[)�”}”(hŒDriver to attach”h]”hŒDriver to attach”…”�”}”(hjdEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j`Eh´M¨hjaEubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjEEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j`Eh´M¨hjBEubjÓ)�”}”(hŒ.``struct device *dev`` Device to attach it to ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj„Eh]”hŒstruct device *dev”…”�”}”(hj†Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M©hj~Eubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to attach it to”h]”hŒDevice to attach it to”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j™Eh´M©hjšEubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj~Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j™Eh´M©hjBEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj&Eubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¿Eh]”hŒ Description”…”�”}”(hjÁEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj½Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´M«hj&Eubj[)�”}”(hŒ�Manually attach driver to a device. Will acquire both **dev** lock and **dev->parent** lock if needed. Returns 0 on success, -ERR on failure.”h]”(hŒ6Manually attach driver to a device. Will acquire both ”…”�”}”(hjÕEh²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÝEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÕEubhŒ lock and ”…”�”}”(hjÕEh²hh³Nh´NubjŠ)�”}”(hŒ**dev->parent**”h]”hŒ dev->parent”…”�”}”(hjïEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÕEubhŒ7 lock if needed. Returns 0 on success, -ERR on failure.”…”�”}”(hjÕEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mªhj&Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_attach (C function)”Œc.driver_attach”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3int driver_attach (const struct device_driver *drv)”h]”hù)�”}”(hŒ2int driver_attach(const struct device_driver *drv)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj(Fh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj$Fh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$Fh²hh³j6Fh´Mubj")�”}”(hŒ driver_attach”h]”j()�”}”(hŒ driver_attach”h]”hŒ driver_attach”…”�”}”(hjIFh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjEFubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj$Fh²hh³j6Fh´Mubj÷7)�”}”(hŒ!(const struct device_driver *drv)”h]”jý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjeFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjaFubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaFubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj€Fh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjaFubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaFubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjžFh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj›Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j FŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jKFsbŒc.driver_attach”†”asbuh1hhjaFubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaFubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÌFh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjaFubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjÙFh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj]Fubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj$Fh²hh³j6Fh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj Fh²hh³j6Fh´Mubah}”(h]”jFah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j6Fh´MhjFh²hubjV)�”}”(hhh]”j[)�”}”(hŒtry to bind driver to devices.”h]”hŒtry to bind driver to devices.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MhjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjFh²hh³j6Fh´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjGj{jGj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX **Parameters** ``const struct device_driver *drv`` driver. **Description** Walk the list of devices that the bus has on it and try to match the driver with each one. If driver_probe_device() returns 0 and the **dev->driver** is set, we've found a compatible pair.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj%Gh]”hŒ Parameters”…”�”}”(hj'Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj#Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MhjGubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ,``const struct device_driver *drv`` driver. ”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hjDGh]”hŒconst struct device_driver *drv”…”�”}”(hjFGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjBGubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mhj>Gubjõ)�”}”(hhh]”j[)�”}”(hŒdriver.”h]”hŒdriver.”…”�”}”(hj]Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jYGh´MhjZGubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj>Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jYGh´Mhj;Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjGubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjGh]”hŒ Description”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj}Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MhjGubj[)�”}”(hŒ½Walk the list of devices that the bus has on it and try to match the driver with each one. If driver_probe_device() returns 0 and the **dev->driver** is set, we've found a compatible pair.”h]”(hŒ‡Walk the list of devices that the bus has on it and try to match the driver with each one. If driver_probe_device() returns 0 and the ”…”�”}”(hj•Gh²hh³Nh´NubjŠ)�”}”(hŒ**dev->driver**”h]”hŒ dev->driver”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj•GubhŒ) is set, we’ve found a compatible pair.”…”�”}”(hj•Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MhjGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"device_release_driver (C function)”Œc.device_release_driver”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void device_release_driver (struct device *dev)”h]”hù)�”}”(hŒ.void device_release_driver(struct device *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÖGh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÒGh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mbubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒGh²hh³jäGh´Mbubj")�”}”(hŒdevice_release_driver”h]”j()�”}”(hŒdevice_release_driver”h]”hŒdevice_release_driver”…”�”}”(hj÷Gh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjóGubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÒGh²hh³jäGh´Mbubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjHubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj1Hh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj.Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j3HŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jùGsbŒc.device_release_driver”†”asbuh1hhjHubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj_Hh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjHubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjlHh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj Hubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÒGh²hh³jäGh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÎGh²hh³jäGh´Mbubah}”(h]”jÉGah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jäGh´MbhjËGh²hubjV)�”}”(hhh]”j[)�”}”(hŒ#manually detach device from driver.”h]”hŒ#manually detach device from driver.”…”�”}”(hj–Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mbhj“Hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjËGh²hh³jäGh´Mbubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj®Hj{j®Hj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXj**Parameters** ``struct device *dev`` device. **Description** Manually detach device from driver. When called for a USB interface, **dev->parent** lock must be held. If this function is to be called with **dev->parent** lock held, ensure that the device's consumers are unbound in advance or that their locks can be acquired under the **dev->parent** lock.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj¸Hh]”hŒ Parameters”…”�”}”(hjºHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¶Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mfhj²HubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ``struct device *dev`` device. ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj×Hh]”hŒstruct device *dev”…”�”}”(hjÙHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕHubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´MchjÑHubjõ)�”}”(hhh]”j[)�”}”(hŒdevice.”h]”hŒdevice.”…”�”}”(hjðHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jìHh´MchjíHubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÑHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jìHh´MchjÎHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²Hubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjIh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mehj²Hubj[)�”}”(hŒgManually detach device from driver. When called for a USB interface, **dev->parent** lock must be held.”h]”(hŒEManually detach device from driver. When called for a USB interface, ”…”�”}”(hj(Ih²hh³Nh´NubjŠ)�”}”(hŒ**dev->parent**”h]”hŒ dev->parent”…”�”}”(hj0Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj(IubhŒ lock must be held.”…”�”}”(hj(Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mdhj²Hubj[)�”}”(hŒ¾If this function is to be called with **dev->parent** lock held, ensure that the device's consumers are unbound in advance or that their locks can be acquired under the **dev->parent** lock.”h]”(hŒ&If this function is to be called with ”…”�”}”(hjIIh²hh³Nh´NubjŠ)�”}”(hŒ**dev->parent**”h]”hŒ dev->parent”…”�”}”(hjQIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjIIubhŒv lock held, ensure that the device’s consumers are unbound in advance or that their locks can be acquired under the ”…”�”}”(hjIIh²hh³Nh´NubjŠ)�”}”(hŒ**dev->parent**”h]”hŒ dev->parent”…”�”}”(hjcIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjIIubhŒ lock.”…”�”}”(hjIIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:60: ./drivers/base/dd.c”h´Mghj²Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒplatform_device_info (C struct)”Œc.platform_device_info”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒplatform_device_info”h]”hù)�”}”(hŒstruct platform_device_info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjœIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj˜Ih²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜Ih²hh³j©Ih´Kubj")�”}”(hŒplatform_device_info”h]”j()�”}”(hj–Ih]”hŒplatform_device_info”…”�”}”(hj¼Ih²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¸Iubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj˜Ih²hh³j©Ih´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj”Ih²hh³j©Ih´Kubah}”(h]”j�Iah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j©Ih´Khj‘Ih²hubjV)�”}”(hhh]”j[)�”}”(hŒ0set of parameters for creating a platform device”h]”hŒ0set of parameters for creating a platform device”…”�”}”(hjÞIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KwhjÛIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‘Ih²hh³j©Ih´Kubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjöIj{jöIj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX***Definition**:: struct platform_device_info { struct device *parent; struct fwnode_handle *fwnode; bool of_node_reused; const char *name; int id; const struct resource *res; unsigned int num_res; const void *data; size_t size_data; u64 dma_mask; const struct software_node *swnode; const struct property_entry *properties; }; **Members** ``parent`` parent device for the new platform device. ``fwnode`` firmware node associated with the device. ``of_node_reused`` indicates that device tree node associated with the device is shared with another device, typically its ancestor. Setting this to ``true`` prevents the device from being matched via the OF match table, and stops the device core from automatically binding pinctrl configuration to avoid disrupting the other device. ``name`` name of the device. ``id`` instance ID of the device. Use ``PLATFORM_DEVID_NONE`` if there is only one instance of the device, or ``PLATFORM_DEVID_AUTO`` to let the kernel automatically assign a unique instance ID. ``res`` set of resources to attach to the device. ``num_res`` number of entries in **res**. ``data`` device-specific data for this platform device. ``size_data`` size of device-specific data. ``dma_mask`` DMA mask for the device. ``swnode`` a secondary software node to be attached to the device. The node will be automatically registered and its lifetime tied to the platform device if it is not registered yet. ``properties`` a set of software properties for the device. If provided, a managed software node will be automatically created and assigned to the device. The properties array must be terminated with a sentinel entry. Specifying both **properties** and **swnode** is not allowed.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjþIubhŒ:”…”�”}”(hjþIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K{hjúIubj¥)�”}”(hXestruct platform_device_info { struct device *parent; struct fwnode_handle *fwnode; bool of_node_reused; const char *name; int id; const struct resource *res; unsigned int num_res; const void *data; size_t size_data; u64 dma_mask; const struct software_node *swnode; const struct property_entry *properties; };”h]”hXestruct platform_device_info { struct device *parent; struct fwnode_handle *fwnode; bool of_node_reused; const char *name; int id; const struct resource *res; unsigned int num_res; const void *data; size_t size_data; u64 dma_mask; const struct software_node *swnode; const struct property_entry *properties; };”…”�”}”hjJsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K}hjúIubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj,Jh]”hŒMembers”…”�”}”(hj.Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj*Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KŒhjúIubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ6``parent`` parent device for the new platform device. ”h]”(jÙ)�”}”(hŒ ``parent``”h]”jß)�”}”(hjKJh]”hŒparent”…”�”}”(hjMJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjIJubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KyhjEJubjõ)�”}”(hhh]”j[)�”}”(hŒ*parent device for the new platform device.”h]”hŒ*parent device for the new platform device.”…”�”}”(hjdJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j`Jh´KyhjaJubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjEJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j`Jh´KyhjBJubjÓ)�”}”(hŒ5``fwnode`` firmware node associated with the device. ”h]”(jÙ)�”}”(hŒ ``fwnode``”h]”jß)�”}”(hj„Jh]”hŒfwnode”…”�”}”(hj†Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‚Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kzhj~Jubjõ)�”}”(hhh]”j[)�”}”(hŒ)firmware node associated with the device.”h]”hŒ)firmware node associated with the device.”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j™Jh´KzhjšJubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj~Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j™Jh´KzhjBJubjÓ)�”}”(hXN``of_node_reused`` indicates that device tree node associated with the device is shared with another device, typically its ancestor. Setting this to ``true`` prevents the device from being matched via the OF match table, and stops the device core from automatically binding pinctrl configuration to avoid disrupting the other device. ”h]”(jÙ)�”}”(hŒ``of_node_reused``”h]”jß)�”}”(hj½Jh]”hŒof_node_reused”…”�”}”(hj¿Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj»Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Khj·Jubjõ)�”}”(hhh]”j[)�”}”(hX:indicates that device tree node associated with the device is shared with another device, typically its ancestor. Setting this to ``true`` prevents the device from being matched via the OF match table, and stops the device core from automatically binding pinctrl configuration to avoid disrupting the other device.”h]”(hŒ‚indicates that device tree node associated with the device is shared with another device, typically its ancestor. Setting this to ”…”�”}”(hjÖJh²hh³Nh´Nubjß)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÞJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÖJubhŒ° prevents the device from being matched via the OF match table, and stops the device core from automatically binding pinctrl configuration to avoid disrupting the other device.”…”�”}”(hjÖJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K{hjÓJubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj·Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÒJh´KhjBJubjÓ)�”}”(hŒ``name`` name of the device. ”h]”(jÙ)�”}”(hŒ``name``”h]”jß)�”}”(hj Kh]”hŒname”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K€hjKubjõ)�”}”(hhh]”j[)�”}”(hŒname of the device.”h]”hŒname of the device.”…”�”}”(hj"Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jKh´K€hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jKh´K€hjBJubjÓ)�”}”(hŒÃ``id`` instance ID of the device. Use ``PLATFORM_DEVID_NONE`` if there is only one instance of the device, or ``PLATFORM_DEVID_AUTO`` to let the kernel automatically assign a unique instance ID. ”h]”(jÙ)�”}”(hŒ``id``”h]”jß)�”}”(hjBKh]”hŒid”…”�”}”(hjDKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj@Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kƒhj` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj5Qh]”hŒ Parameters”…”�”}”(hj7Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K³hj/QubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒD``struct device *parent`` parent device for the device we're adding ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjTQh]”hŒstruct device *parent”…”�”}”(hjVQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjRQubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K²hjNQubjõ)�”}”(hhh]”j[)�”}”(hŒ)parent device for the device we're adding”h]”hŒ+parent device for the device we’re adding”…”�”}”(hjmQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jiQh´K²hjjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjNQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jiQh´K²hjKQubjÓ)�”}”(hŒ:``const char *name`` base name of the device we're adding ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj�Qh]”hŒconst char *name”…”�”}”(hj�Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K³hj‡Qubjõ)�”}”(hhh]”j[)�”}”(hŒ$base name of the device we're adding”h]”hŒ&base name of the device we’re adding”…”�”}”(hj¦Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¢Qh´K³hj£Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‡Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¢Qh´K³hjKQubjÓ)�”}”(hŒ``int id`` instance id ”h]”(jÙ)�”}”(hŒ ``int id``”h]”jß)�”}”(hjÆQh]”hŒint id”…”�”}”(hjÈQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄQubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K´hjÀQubjõ)�”}”(hhh]”j[)�”}”(hŒ instance id”h]”hŒ instance id”…”�”}”(hjßQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÛQh´K´hjÜQubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛQh´K´hjKQubjÓ)�”}”(hŒZ``const struct resource *res`` set of resources that needs to be allocated for the device ”h]”(jÙ)�”}”(hŒ``const struct resource *res``”h]”jß)�”}”(hjÿQh]”hŒconst struct resource *res”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjýQubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KµhjùQubjõ)�”}”(hhh]”j[)�”}”(hŒ:set of resources that needs to be allocated for the device”h]”hŒ:set of resources that needs to be allocated for the device”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jRh´KµhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjùQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jRh´KµhjKQubjÓ)�”}”(hŒ)``unsigned int num`` number of resources ”h]”(jÙ)�”}”(hŒ``unsigned int num``”h]”jß)�”}”(hj8Rh]”hŒunsigned int num”…”�”}”(hj:Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K¶hj2Rubjõ)�”}”(hhh]”j[)�”}”(hŒnumber of resources”h]”hŒnumber of resources”…”�”}”(hjQRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jMRh´K¶hjNRubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj2Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jMRh´K¶hjKQubjÓ)�”}”(hŒE``const void *data`` platform specific data for this platform device ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hjqRh]”hŒconst void *data”…”�”}”(hjsRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjoRubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K·hjkRubjõ)�”}”(hhh]”j[)�”}”(hŒ/platform specific data for this platform device”h]”hŒ/platform specific data for this platform device”…”�”}”(hjŠRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j†Rh´K·hj‡Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjkRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j†Rh´K·hjKQubjÓ)�”}”(hŒ/``size_t size`` size of platform specific data ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hjªRh]”hŒ size_t size”…”�”}”(hj¬Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K¸hj¤Rubjõ)�”}”(hhh]”j[)�”}”(hŒsize of platform specific data”h]”hŒsize of platform specific data”…”�”}”(hjÃRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¿Rh´K¸hjÀRubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¤Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¿Rh´K¸hjKQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj/Qubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjåRh]”hŒ Description”…”�”}”(hjçRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjãRubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kºhj/Qubj[)�”}”(hŒeReturns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hjûRh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct platform_device `”h]”jß)�”}”(hjSh]”hŒstruct platform_device”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhjSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒplatform_device”uh1hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´K¹hjûRubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hjûRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j"Sh´K¹hj/Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,platform_device_register_simple (C function)”Œ!c.platform_device_register_simple”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ�struct platform_device * platform_device_register_simple (const char *name, int id, const struct resource *res, unsigned int num)”h]”hù)�”}”(hŒstruct platform_device *platform_device_register_simple(const char *name, int id, const struct resource *res, unsigned int num)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjMSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjISh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÐubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjISh²hh³jZSh´KÐubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjlSh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjiSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jnSŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œplatform_device_register_simple”sbŒ!c.platform_device_register_simple”†”asbuh1hhjISh²hh³jZSh´KÐubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjISh²hh³jZSh´KÐubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj›Sh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjISh²hh³jZSh´KÐubj")�”}”(hŒplatform_device_register_simple”h]”j()�”}”(hjŠSh]”hŒplatform_device_register_simple”…”�”}”(hj¬Sh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¨Subah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjISh²hh³jZSh´KÐubj÷7)�”}”(hŒH(const char *name, int id, const struct resource *res, unsigned int num)”h]”(jý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÇSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÃSubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃSubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÃSubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃSubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjþSh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÃSubj()�”}”(hŒname”h]”hŒname”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÃSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¿Subjý7)�”}”(hŒint id”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj$Th²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj Tubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Tubj()�”}”(hŒid”h]”hŒid”…”�”}”(hj@Th²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¿Subjý7)�”}”(hŒconst struct resource *res”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjUTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUTubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjtTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjUTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUTubh)�”}”(hhh]”j()�”}”(hŒresource”h]”hŒresource”…”�”}”(hj’Th²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j”TŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jˆSŒ!c.platform_device_register_simple”†”asbuh1hhjUTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUTubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¾Th²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjUTubj()�”}”(hŒres”h]”hŒres”…”�”}”(hjËTh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjUTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¿Subjý7)�”}”(hŒunsigned int num”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjäTh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjàTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàTubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjàTubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàTubj()�”}”(hŒnum”h]”hŒnum”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjàTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¿Subeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjISh²hh³jZSh´KÐubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjESh²hh³jZSh´KÐubah}”(h]”j@Sah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jZSh´KÐhjBSh²hubjV)�”}”(hhh]”j[)�”}”(hŒ-add a platform-level device and its resources”h]”hŒ-add a platform-level device and its resources”…”�”}”(hjFUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÐhjCUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjBSh²hh³jZSh´KÐubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj^Uj{j^Uj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXõ**Parameters** ``const char *name`` base name of the device we're adding ``int id`` instance id ``const struct resource *res`` set of resources that needs to be allocated for the device ``unsigned int num`` number of resources **Description** This function creates a simple platform device that requires minimal resource and memory management. Canned release function freeing memory allocated for the device allows drivers using such devices to be unloaded without waiting for the last reference to the device to be dropped. This interface is primarily intended for use with legacy drivers which probe hardware directly. Because such drivers create sysfs device nodes themselves, rather than letting system infrastructure handle such device enumeration tasks, they don't fully conform to the Linux driver model. In particular, when such drivers are built as modules, they can't be "hotplugged". Returns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjhUh]”hŒ Parameters”…”�”}”(hjjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjfUubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÔhjbUubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ:``const char *name`` base name of the device we're adding ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj‡Uh]”hŒconst char *name”…”�”}”(hj‰Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj…Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÑhj�Uubjõ)�”}”(hhh]”j[)�”}”(hŒ$base name of the device we're adding”h]”hŒ&base name of the device we’re adding”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jœUh´KÑhj�Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jœUh´KÑhj~UubjÓ)�”}”(hŒ``int id`` instance id ”h]”(jÙ)�”}”(hŒ ``int id``”h]”jß)�”}”(hjÀUh]”hŒint id”…”�”}”(hjÂUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¾Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÒhjºUubjõ)�”}”(hhh]”j[)�”}”(hŒ instance id”h]”hŒ instance id”…”�”}”(hjÙUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÕUh´KÒhjÖUubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjºUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÕUh´KÒhj~UubjÓ)�”}”(hŒZ``const struct resource *res`` set of resources that needs to be allocated for the device ”h]”(jÙ)�”}”(hŒ``const struct resource *res``”h]”jß)�”}”(hjùUh]”hŒconst struct resource *res”…”�”}”(hjûUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÓhjóUubjõ)�”}”(hhh]”j[)�”}”(hŒ:set of resources that needs to be allocated for the device”h]”hŒ:set of resources that needs to be allocated for the device”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jVh´KÓhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjóUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jVh´KÓhj~UubjÓ)�”}”(hŒ)``unsigned int num`` number of resources ”h]”(jÙ)�”}”(hŒ``unsigned int num``”h]”jß)�”}”(hj2Vh]”hŒunsigned int num”…”�”}”(hj4Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj0Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÔhj,Vubjõ)�”}”(hhh]”j[)�”}”(hŒnumber of resources”h]”hŒnumber of resources”…”�”}”(hjKVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jGVh´KÔhjHVubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj,Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jGVh´KÔhj~Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjbUubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjmVh]”hŒ Description”…”�”}”(hjoVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjkVubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÖhjbUubj[)�”}”(hXThis function creates a simple platform device that requires minimal resource and memory management. Canned release function freeing memory allocated for the device allows drivers using such devices to be unloaded without waiting for the last reference to the device to be dropped.”h]”hXThis function creates a simple platform device that requires minimal resource and memory management. Canned release function freeing memory allocated for the device allows drivers using such devices to be unloaded without waiting for the last reference to the device to be dropped.”…”�”}”(hjƒVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÕhjbUubj[)�”}”(hXrThis interface is primarily intended for use with legacy drivers which probe hardware directly. Because such drivers create sysfs device nodes themselves, rather than letting system infrastructure handle such device enumeration tasks, they don't fully conform to the Linux driver model. In particular, when such drivers are built as modules, they can't be "hotplugged".”h]”hXzThis interface is primarily intended for use with legacy drivers which probe hardware directly. Because such drivers create sysfs device nodes themselves, rather than letting system infrastructure handle such device enumeration tasks, they don’t fully conform to the Linux driver model. In particular, when such drivers are built as modules, they can’t be “hotpluggedâ€�.”…”�”}”(hj’Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KÛhjbUubj[)�”}”(hŒeReturns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hj¡Vh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct platform_device `”h]”jß)�”}”(hj«Vh]”hŒstruct platform_device”…”�”}”(hj­Vh²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhj©Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒplatform_device”uh1hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kâhj¡VubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hj¡Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÈVh´KâhjbUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*platform_device_register_data (C function)”Œc.platform_device_register_data”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ‡struct platform_device * platform_device_register_data (struct device *parent, const char *name, int id, const void *data, size_t size)”h]”hù)�”}”(hŒ…struct platform_device *platform_device_register_data(struct device *parent, const char *name, int id, const void *data, size_t size)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjóVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjïVh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kîubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïVh²hh³jWh´Kîubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jWŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œplatform_device_register_data”sbŒc.platform_device_register_data”†”asbuh1hhjïVh²hh³jWh´Kîubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïVh²hh³jWh´KîubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjAWh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjïVh²hh³jWh´Kîubj")�”}”(hŒplatform_device_register_data”h]”j()�”}”(hj0Wh]”hŒplatform_device_register_data”…”�”}”(hjRWh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjNWubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjïVh²hh³jWh´Kîubj÷7)�”}”(hŒP(struct device *parent, const char *name, int id, const void *data, size_t size)”h]”(jý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjmWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjiWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiWubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj‹Wh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjˆWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j�WŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j.WŒc.platform_device_register_data”†”asbuh1hhjiWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiWubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj·Wh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjiWubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÄWh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjiWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjeWubjý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÝWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÙWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙWubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjøWh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÙWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙWubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÙWubj()�”}”(hŒname”h]”hŒname”…”�”}”(hj!Xh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÙWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjeWubjý7)�”}”(hŒint id”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj:Xh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj6Xubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Xubj()�”}”(hŒid”h]”hŒid”…”�”}”(hjVXh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj6Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjeWubjý7)�”}”(hŒconst void *data”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjoXh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjkXubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkXubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠXh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjkXubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkXubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦Xh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjkXubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hj³Xh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjkXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjeWubjý7)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j()�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÏXh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÌXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÑXŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j.WŒc.platform_device_register_data”†”asbuh1hhjÈXubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈXubj()�”}”(hŒsize”h]”hŒsize”…”�”}”(hjûXh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjeWubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjïVh²hh³jWh´Kîubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjëVh²hh³jWh´Kîubah}”(h]”jæVah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jWh´KîhjèVh²hubjV)�”}”(hhh]”j[)�”}”(hŒ7add a platform-level device with platform-specific data”h]”hŒ7add a platform-level device with platform-specific data”…”�”}”(hj%Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kîhj"Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjèVh²hh³jWh´Kîubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj=Yj{j=Yj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX¹**Parameters** ``struct device *parent`` parent device for the device we're adding ``const char *name`` base name of the device we're adding ``int id`` instance id ``const void *data`` platform specific data for this platform device ``size_t size`` size of platform specific data **Description** This function creates a simple platform device that requires minimal resource and memory management. Canned release function freeing memory allocated for the device allows drivers using such devices to be unloaded without waiting for the last reference to the device to be dropped. Returns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjGYh]”hŒ Parameters”…”�”}”(hjIYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjEYubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KòhjAYubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒD``struct device *parent`` parent device for the device we're adding ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjfYh]”hŒstruct device *parent”…”�”}”(hjhYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdYubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kïhj`Yubjõ)�”}”(hhh]”j[)�”}”(hŒ)parent device for the device we're adding”h]”hŒ+parent device for the device we’re adding”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j{Yh´Kïhj|Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj`Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j{Yh´Kïhj]YubjÓ)�”}”(hŒ:``const char *name`` base name of the device we're adding ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hjŸYh]”hŒconst char *name”…”�”}”(hj¡Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kðhj™Yubjõ)�”}”(hhh]”j[)�”}”(hŒ$base name of the device we're adding”h]”hŒ&base name of the device we’re adding”…”�”}”(hj¸Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j´Yh´KðhjµYubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj™Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j´Yh´Kðhj]YubjÓ)�”}”(hŒ``int id`` instance id ”h]”(jÙ)�”}”(hŒ ``int id``”h]”jß)�”}”(hjØYh]”hŒint id”…”�”}”(hjÚYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÖYubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KñhjÒYubjõ)�”}”(hhh]”j[)�”}”(hŒ instance id”h]”hŒ instance id”…”�”}”(hjñYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jíYh´KñhjîYubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÒYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jíYh´Kñhj]YubjÓ)�”}”(hŒE``const void *data`` platform specific data for this platform device ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hjZh]”hŒconst void *data”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´Kòhj Zubjõ)�”}”(hhh]”j[)�”}”(hŒ/platform specific data for this platform device”h]”hŒ/platform specific data for this platform device”…”�”}”(hj*Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j&Zh´Kòhj'Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j&Zh´Kòhj]YubjÓ)�”}”(hŒ/``size_t size`` size of platform specific data ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hjJZh]”hŒ size_t size”…”�”}”(hjLZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjHZubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KóhjDZubjõ)�”}”(hhh]”j[)�”}”(hŒsize of platform specific data”h]”hŒsize of platform specific data”…”�”}”(hjcZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j_Zh´Kóhj`Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjDZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j_Zh´Kóhj]Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjAYubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj…Zh]”hŒ Description”…”�”}”(hj‡Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjƒZubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KõhjAYubj[)�”}”(hXThis function creates a simple platform device that requires minimal resource and memory management. Canned release function freeing memory allocated for the device allows drivers using such devices to be unloaded without waiting for the last reference to the device to be dropped.”h]”hXThis function creates a simple platform device that requires minimal resource and memory management. Canned release function freeing memory allocated for the device allows drivers using such devices to be unloaded without waiting for the last reference to the device to be dropped.”…”�”}”(hj›Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KôhjAYubj[)�”}”(hŒeReturns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hjªZh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct platform_device `”h]”jß)�”}”(hj´Zh]”hŒstruct platform_device”…”�”}”(hj¶Zh²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhj²Zubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒplatform_device”uh1hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:63: ./include/linux/platform_device.h”h´KúhjªZubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hjªZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÑZh´KúhjAYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"platform_get_resource (C function)”Œc.platform_get_resource”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒjstruct resource * platform_get_resource (struct platform_device *dev, unsigned int type, unsigned int num)”h]”hù)�”}”(hŒhstruct resource *platform_get_resource(struct platform_device *dev, unsigned int type, unsigned int num)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjüZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjøZh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K0ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøZh²hh³j [h´K0ubh)�”}”(hhh]”j()�”}”(hŒresource”h]”hŒresource”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j[Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œplatform_get_resource”sbŒc.platform_get_resource”†”asbuh1hhjøZh²hh³j [h´K0ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøZh²hh³j [h´K0ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjJ[h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjøZh²hh³j [h´K0ubj")�”}”(hŒplatform_get_resource”h]”j()�”}”(hj9[h]”hŒplatform_get_resource”…”�”}”(hj[[h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjW[ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjøZh²hh³j [h´K0ubj÷7)�”}”(hŒB(struct platform_device *dev, unsigned int type, unsigned int num)”h]”(jý7)�”}”(hŒstruct platform_device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjv[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjr[ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr[ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj”[h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‘[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j–[Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j7[Œc.platform_get_resource”†”asbuh1hhjr[ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr[ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÀ[h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjr[ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÍ[h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjr[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjn[ubjý7)�”}”(hŒunsigned int type”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjæ[h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjâ[ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ[ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjâ[ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ[ubj()�”}”(hŒtype”h]”hŒtype”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjâ[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjn[ubjý7)�”}”(hŒunsigned int num”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj7\h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj3\ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3\ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjS\h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj3\ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3\ubj()�”}”(hŒnum”h]”hŒnum”…”�”}”(hjo\h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj3\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjn[ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjøZh²hh³j [h´K0ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjôZh²hh³j [h´K0ubah}”(h]”jïZah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j [h´K0hjñZh²hubjV)�”}”(hhh]”j[)�”}”(hŒget a resource for a device”h]”hŒget a resource for a device”…”�”}”(hj™\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K0hj–\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjñZh²hh³j [h´K0ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj±\j{j±\j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÊ**Parameters** ``struct platform_device *dev`` platform device ``unsigned int type`` resource type ``unsigned int num`` resource index **Return** a pointer to the resource or NULL on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj»\h]”hŒ Parameters”…”�”}”(hj½\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¹\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K4hjµ\ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct platform_device *dev`` platform device ”h]”(jÙ)�”}”(hŒ``struct platform_device *dev``”h]”jß)�”}”(hjÚ\h]”hŒstruct platform_device *dev”…”�”}”(hjÜ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjØ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K1hjÔ\ubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device”h]”hŒplatform device”…”�”}”(hjó\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jï\h´K1hjð\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÔ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jï\h´K1hjÑ\ubjÓ)�”}”(hŒ$``unsigned int type`` resource type ”h]”(jÙ)�”}”(hŒ``unsigned int type``”h]”jß)�”}”(hj]h]”hŒunsigned int type”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K2hj ]ubjõ)�”}”(hhh]”j[)�”}”(hŒ resource type”h]”hŒ resource type”…”�”}”(hj,]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j(]h´K2hj)]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j(]h´K2hjÑ\ubjÓ)�”}”(hŒ$``unsigned int num`` resource index ”h]”(jÙ)�”}”(hŒ``unsigned int num``”h]”jß)�”}”(hjL]h]”hŒunsigned int num”…”�”}”(hjN]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjJ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K3hjF]ubjõ)�”}”(hhh]”j[)�”}”(hŒresource index”h]”hŒresource index”…”�”}”(hje]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³ja]h´K3hjb]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjF]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³ja]h´K3hjÑ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjµ\ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hj‡]h]”hŒReturn”…”�”}”(hj‰]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj…]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K5hjµ\ubj[)�”}”(hŒ-a pointer to the resource or NULL on failure.”h]”hŒ-a pointer to the resource or NULL on failure.”…”�”}”(hj�]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K5hjµ\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ3devm_platform_get_and_ioremap_resource (C function)”Œ(c.devm_platform_get_and_ioremap_resource”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid __iomem * devm_platform_get_and_ioremap_resource (struct platform_device *pdev, unsigned int index, struct resource **res)”h]”hù)�”}”(hŒ}void __iomem *devm_platform_get_and_ioremap_resource(struct platform_device *pdev, unsigned int index, struct resource **res)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌ]h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÈ]h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ]h²hh³jÚ]h´KWubhŒ__iomem”…”�”}”(hjÈ]h²hh³Nh´Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ]h²hh³jÚ]h´KWubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjû]h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÈ]h²hh³jÚ]h´KWubj")�”}”(hŒ&devm_platform_get_and_ioremap_resource”h]”j()�”}”(hŒ&devm_platform_get_and_ioremap_resource”h]”hŒ&devm_platform_get_and_ioremap_resource”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj^ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÈ]h²hh³jÚ]h´KWubj÷7)�”}”(hŒI(struct platform_device *pdev, unsigned int index, struct resource **res)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj(^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj$^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$^ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjF^h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjC^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jH^Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j^sbŒ(c.devm_platform_get_and_ioremap_resource”†”asbuh1hhj$^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$^ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjt^h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj$^ubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj�^h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj$^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj ^ubjý7)�”}”(hŒunsigned int index”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjš^h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj–^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–^ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶^h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj–^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–^ubj()�”}”(hŒindex”h]”hŒindex”…”�”}”(hjÒ^h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj–^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj ^ubjý7)�”}”(hŒstruct resource **res”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjë^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjç^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjç^ubh)�”}”(hhh]”j()�”}”(hŒresource”h]”hŒresource”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j _Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jb^Œ(c.devm_platform_get_and_ioremap_resource”†”asbuh1hhjç^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjç^ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj5_h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjç^ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjB_h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjç^ubj()�”}”(hŒres”h]”hŒres”…”�”}”(hjO_h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjç^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj ^ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÈ]h²hh³jÚ]h´KWubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÄ]h²hh³jÚ]h´KWubah}”(h]”j¿]ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÚ]h´KWhjÁ]h²hubjV)�”}”(hhh]”j[)�”}”(hŒCcall devm_ioremap_resource() for a platform device and get resource”h]”hŒCcall devm_ioremap_resource() for a platform device and get resource”…”�”}”(hjy_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KWhjv_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÁ]h²hh³jÚ]h´KWubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj‘_j{j‘_j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXt**Parameters** ``struct platform_device *pdev`` platform device to use both for memory resource lookup as well as resource management ``unsigned int index`` resource index ``struct resource **res`` optional output parameter to store a pointer to the obtained resource. **Return** a pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj›_h]”hŒ Parameters”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj™_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K[hj•_ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒw``struct platform_device *pdev`` platform device to use both for memory resource lookup as well as resource management ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjº_h]”hŒstruct platform_device *pdev”…”�”}”(hj¼_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K[hj´_ubjõ)�”}”(hhh]”j[)�”}”(hŒUplatform device to use both for memory resource lookup as well as resource management”h]”hŒUplatform device to use both for memory resource lookup as well as resource management”…”�”}”(hjÓ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KZhjÐ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj´_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÏ_h´K[hj±_ubjÓ)�”}”(hŒ&``unsigned int index`` resource index ”h]”(jÙ)�”}”(hŒ``unsigned int index``”h]”jß)�”}”(hjô_h]”hŒunsigned int index”…”�”}”(hjö_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjò_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K\hjî_ubjõ)�”}”(hhh]”j[)�”}”(hŒresource index”h]”hŒresource index”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j `h´K\hj `ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjî_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j `h´K\hj±_ubjÓ)�”}”(hŒa``struct resource **res`` optional output parameter to store a pointer to the obtained resource. ”h]”(jÙ)�”}”(hŒ``struct resource **res``”h]”jß)�”}”(hj-`h]”hŒstruct resource **res”…”�”}”(hj/`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj+`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K]hj'`ubjõ)�”}”(hhh]”j[)�”}”(hŒFoptional output parameter to store a pointer to the obtained resource.”h]”hŒFoptional output parameter to store a pointer to the obtained resource.”…”�”}”(hjF`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jB`h´K]hjC`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj'`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jB`h´K]hj±_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj•_ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjh`h]”hŒReturn”…”�”}”(hjj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjf`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K_hj•_ubj[)�”}”(hŒOa pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”h]”hŒOa pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”…”�”}”(hj~`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K_hj•_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+devm_platform_ioremap_resource (C function)”Œ c.devm_platform_ioremap_resource”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ`void __iomem * devm_platform_ioremap_resource (struct platform_device *pdev, unsigned int index)”h]”hù)�”}”(hŒ^void __iomem *devm_platform_ioremap_resource(struct platform_device *pdev, unsigned int index)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj­`h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj©`h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kpubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©`h²hh³j»`h´KpubhŒ__iomem”…”�”}”(hj©`h²hh³Nh´Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©`h²hh³j»`h´KpubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÜ`h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj©`h²hh³j»`h´Kpubj")�”}”(hŒdevm_platform_ioremap_resource”h]”j()�”}”(hŒdevm_platform_ioremap_resource”h]”hŒdevm_platform_ioremap_resource”…”�”}”(hjí`h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjé`ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj©`h²hh³j»`h´Kpubj÷7)�”}”(hŒ2(struct platform_device *pdev, unsigned int index)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjaubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj'ah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj$aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j)aŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jï`sbŒ c.devm_platform_ioremap_resource”†”asbuh1hhjaubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjUah²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjaubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjbah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjaubjý7)�”}”(hŒunsigned int index”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj{ah²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjwaubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwaubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj—ah²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjwaubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwaubj()�”}”(hŒindex”h]”hŒindex”…”�”}”(hj³ah²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjwaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjaubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj©`h²hh³j»`h´Kpubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¥`h²hh³j»`h´Kpubah}”(h]”j `ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j»`h´Kphj¢`h²hubjV)�”}”(hhh]”j[)�”}”(hŒ2call devm_ioremap_resource() for a platform device”h]”hŒ2call devm_ioremap_resource() for a platform device”…”�”}”(hjÝah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KphjÚah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¢`h²hh³j»`h´Kpubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjõaj{jõaj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``struct platform_device *pdev`` platform device to use both for memory resource lookup as well as resource management ``unsigned int index`` resource index **Return** a pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÿah]”hŒ Parameters”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjýaubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KthjùaubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒw``struct platform_device *pdev`` platform device to use both for memory resource lookup as well as resource management ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjbh]”hŒstruct platform_device *pdev”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kthjbubjõ)�”}”(hhh]”j[)�”}”(hŒUplatform device to use both for memory resource lookup as well as resource management”h]”hŒUplatform device to use both for memory resource lookup as well as resource management”…”�”}”(hj7bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kshj4bubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j3bh´KthjbubjÓ)�”}”(hŒ&``unsigned int index`` resource index ”h]”(jÙ)�”}”(hŒ``unsigned int index``”h]”jß)�”}”(hjXbh]”hŒunsigned int index”…”�”}”(hjZbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjVbubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KuhjRbubjõ)�”}”(hhh]”j[)�”}”(hŒresource index”h]”hŒresource index”…”�”}”(hjqbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jmbh´Kuhjnbubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjRbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jmbh´Kuhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjùaubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hj“bh]”hŒReturn”…”�”}”(hj•bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‘bubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kwhjùaubj[)�”}”(hŒOa pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”h]”hŒOa pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”…”�”}”(hj©bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kwhjùaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ2devm_platform_ioremap_resource_byname (C function)”Œ'c.devm_platform_ioremap_resource_byname”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒevoid __iomem * devm_platform_ioremap_resource_byname (struct platform_device *pdev, const char *name)”•[h]”hù)�”}”(hŒcvoid __iomem *devm_platform_ioremap_resource_byname(struct platform_device *pdev, const char *name)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØbh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÔbh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K‚ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔbh²hh³jæbh´K‚ubhŒ__iomem”…”�”}”(hjÔbh²hh³Nh´Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔbh²hh³jæbh´K‚ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÔbh²hh³jæbh´K‚ubj")�”}”(hŒ%devm_platform_ioremap_resource_byname”h]”j()�”}”(hŒ%devm_platform_ioremap_resource_byname”h]”hŒ%devm_platform_ioremap_resource_byname”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjcubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÔbh²hh³jæbh´K‚ubj÷7)�”}”(hŒ0(struct platform_device *pdev, const char *name)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj4ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj0cubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0cubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjRch²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjOcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jTcŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jcsbŒ'c.devm_platform_ioremap_resource_byname”†”asbuh1hhj0cubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0cubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj€ch²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj0cubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj0cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj,cubjý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¦ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¢cubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢cubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÁch²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¢cubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢cubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÝch²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¢cubj()�”}”(hŒname”h]”hŒname”…”�”}”(hjêch²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¢cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj,cubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÔbh²hh³jæbh´K‚ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÐbh²hh³jæbh´K‚ubah}”(h]”jËbah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jæbh´K‚hjÍbh²hubjV)�”}”(hhh]”j[)�”}”(hŒOcall devm_ioremap_resource for a platform device, retrieve the resource by name”h]”hŒOcall devm_ioremap_resource for a platform device, retrieve the resource by name”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K‚hjdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÍbh²hh³jæbh´K‚ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj,dj{j,dj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``struct platform_device *pdev`` platform device to use both for memory resource lookup as well as resource management ``const char *name`` name of the resource **Return** a pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj6dh]”hŒ Parameters”…”�”}”(hj8dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj4dubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K†hj0dubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒw``struct platform_device *pdev`` platform device to use both for memory resource lookup as well as resource management ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjUdh]”hŒstruct platform_device *pdev”…”�”}”(hjWdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjSdubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K‡hjOdubjõ)�”}”(hhh]”j[)�”}”(hŒUplatform device to use both for memory resource lookup as well as resource management”h]”hŒUplatform device to use both for memory resource lookup as well as resource management”…”�”}”(hjndh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K†hjkdubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjOdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jjdh´K‡hjLdubjÓ)�”}”(hŒ*``const char *name`` name of the resource ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj�dh]”hŒconst char *name”…”�”}”(hj‘dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�dubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kˆhj‰dubjõ)�”}”(hhh]”j[)�”}”(hŒname of the resource”h]”hŒname of the resource”…”�”}”(hj¨dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¤dh´Kˆhj¥dubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‰dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¤dh´KˆhjLdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj0dubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjÊdh]”hŒReturn”…”�”}”(hjÌdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÈdubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KŠhj0dubj[)�”}”(hŒOa pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”h]”hŒOa pointer to the remapped memory or an ERR_PTR() encoded error code on failure.”…”�”}”(hjàdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´KŠhj0dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&platform_get_irq_affinity (C function)”Œc.platform_get_irq_affinity”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒnint platform_get_irq_affinity (struct platform_device *dev, unsigned int num, const struct cpumask **affinity)”h]”hù)�”}”(hŒmint platform_get_irq_affinity(struct platform_device *dev, unsigned int num, const struct cpumask **affinity)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj eh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kªubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj eh²hh³jeh´Kªubj")�”}”(hŒplatform_get_irq_affinity”h]”j()�”}”(hŒplatform_get_irq_affinity”h]”hŒplatform_get_irq_affinity”…”�”}”(hj0eh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj,eubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj eh²hh³jeh´Kªubj÷7)�”}”(hŒP(struct platform_device *dev, unsigned int num, const struct cpumask **affinity)”h]”(jý7)�”}”(hŒstruct platform_device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjLeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjHeubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHeubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjjeh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjgeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jleŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j2esbŒc.platform_get_irq_affinity”†”asbuh1hhjHeubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHeubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj˜eh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjHeubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¥eh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjHeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjDeubjý7)�”}”(hŒunsigned int num”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¾eh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjºeubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºeubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚeh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjºeubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºeubj()�”}”(hŒnum”h]”hŒnum”…”�”}”(hjöeh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjºeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjDeubjý7)�”}”(hŒconst struct cpumask **affinity”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj fubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj fubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj*fh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj fubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj fubh)�”}”(hhh]”j()�”}”(hŒcpumask”h]”hŒcpumask”…”�”}”(hjHfh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjEfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jJfŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j†eŒc.platform_get_irq_affinity”†”asbuh1hhj fubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjffh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj fubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjtfh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj fubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj fubj()�”}”(hŒaffinity”h]”hŒaffinity”…”�”}”(hjŽfh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjDeubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj eh²hh³jeh´Kªubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjeh²hh³jeh´Kªubah}”(h]”jeah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jeh´Kªhjeh²hubjV)�”}”(hhh]”j[)�”}”(hŒ1get an optional IRQ and its affinity for a device”h]”hŒ1get an optional IRQ and its affinity for a device”…”�”}”(hj¸fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Kªhjµfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjeh²hh³jeh´Kªubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÐfj{jÐfj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXM**Parameters** ``struct platform_device *dev`` platform device ``unsigned int num`` interrupt number index ``const struct cpumask **affinity`` optional cpumask pointer to get the affinity of a per-cpu interrupt **Description** Gets an interrupt for a platform device. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. Optional affinity information is provided in the affinity pointer if available, and NULL otherwise. **Return** non-zero interrupt number on success, negative error number on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÚfh]”hŒ Parameters”…”�”}”(hjÜfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjØfubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K®hjÔfubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct platform_device *dev`` platform device ”h]”(jÙ)�”}”(hŒ``struct platform_device *dev``”h]”jß)�”}”(hjùfh]”hŒstruct platform_device *dev”…”�”}”(hjûfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷fubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K«hjófubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device”h]”hŒplatform device”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jgh´K«hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjófubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jgh´K«hjðfubjÓ)�”}”(hŒ,``unsigned int num`` interrupt number index ”h]”(jÙ)�”}”(hŒ``unsigned int num``”h]”jß)�”}”(hj2gh]”hŒunsigned int num”…”�”}”(hj4gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj0gubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K¬hj,gubjõ)�”}”(hhh]”j[)�”}”(hŒinterrupt number index”h]”hŒinterrupt number index”…”�”}”(hjKgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jGgh´K¬hjHgubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj,gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jGgh´K¬hjðfubjÓ)�”}”(hŒh``const struct cpumask **affinity`` optional cpumask pointer to get the affinity of a per-cpu interrupt ”h]”(jÙ)�”}”(hŒ#``const struct cpumask **affinity``”h]”jß)�”}”(hjkgh]”hŒconst struct cpumask **affinity”…”�”}”(hjmgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjigubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K­hjegubjõ)�”}”(hhh]”j[)�”}”(hŒCoptional cpumask pointer to get the affinity of a per-cpu interrupt”h]”hŒCoptional cpumask pointer to get the affinity of a per-cpu interrupt”…”�”}”(hj„gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j€gh´K­hj�gubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjegubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j€gh´K­hjðfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÔfubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¦gh]”hŒ Description”…”�”}”(hj¨gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¤gubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K¯hjÔfubj[)�”}”(hX Gets an interrupt for a platform device. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. Optional affinity information is provided in the affinity pointer if available, and NULL otherwise.”h]”hX Gets an interrupt for a platform device. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. Optional affinity information is provided in the affinity pointer if available, and NULL otherwise.”…”�”}”(hj¼gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K®hjÔfubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjÍgh]”hŒReturn”…”�”}”(hjÏgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjËgubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K³hjÔfubj[)�”}”(hŒGnon-zero interrupt number on success, negative error number on failure.”h]”hŒGnon-zero interrupt number on success, negative error number on failure.”…”�”}”(hjãgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´K´hjÔfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&platform_get_irq_optional (C function)”Œc.platform_get_irq_optional”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒMint platform_get_irq_optional (struct platform_device *dev, unsigned int num)”h]”hù)�”}”(hŒLint platform_get_irq_optional(struct platform_device *dev, unsigned int num)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjhh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhh²hh³j hh´Mubj")�”}”(hŒplatform_get_irq_optional”h]”j()�”}”(hŒplatform_get_irq_optional”h]”hŒplatform_get_irq_optional”…”�”}”(hj3hh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj/hubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjhh²hh³j hh´Mubj÷7)�”}”(hŒ/(struct platform_device *dev, unsigned int num)”h]”(jý7)�”}”(hŒstruct platform_device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjOhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjKhubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKhubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjmhh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”johŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j5hsbŒc.platform_get_irq_optional”†”asbuh1hhjKhubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKhubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj›hh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjKhubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¨hh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjKhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjGhubjý7)�”}”(hŒunsigned int num”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÁhh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj½hubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½hubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÝhh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj½hubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½hubj()�”}”(hŒnum”h]”hŒnum”…”�”}”(hjùhh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjGhubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjhh²hh³j hh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj hh²hh³j hh´Mubah}”(h]”jhah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j hh´Mhjhh²hubjV)�”}”(hhh]”j[)�”}”(hŒ&get an optional interrupt for a device”h]”hŒ&get an optional interrupt for a device”…”�”}”(hj#ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjhh²hh³j hh´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj;ij{j;ij|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX€**Parameters** ``struct platform_device *dev`` platform device ``unsigned int num`` interrupt number index **Description** Gets an interrupt for a platform device. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. This is the same as platform_get_irq(), except that it does not print an error message if an interrupt can not be obtained. For example:: int irq = platform_get_irq_optional(pdev, 0); if (irq < 0) return irq; **Return** non-zero interrupt number on success, negative error number on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjEih]”hŒ Parameters”…”�”}”(hjGih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjCiubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj?iubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct platform_device *dev`` platform device ”h]”(jÙ)�”}”(hŒ``struct platform_device *dev``”h]”jß)�”}”(hjdih]”hŒstruct platform_device *dev”…”�”}”(hjfih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjbiubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj^iubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device”h]”hŒplatform device”…”�”}”(hj}ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jyih´Mhjziubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj^iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jyih´Mhj[iubjÓ)�”}”(hŒ,``unsigned int num`` interrupt number index ”h]”(jÙ)�”}”(hŒ``unsigned int num``”h]”jß)�”}”(hj�ih]”hŒunsigned int num”…”�”}”(hjŸih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›iubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj—iubjõ)�”}”(hhh]”j[)�”}”(hŒinterrupt number index”h]”hŒinterrupt number index”…”�”}”(hj¶ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j²ih´Mhj³iubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj—iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j²ih´Mhj[iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj?iubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjØih]”hŒ Description”…”�”}”(hjÚih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÖiubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj?iubj[)�”}”(hX"Gets an interrupt for a platform device. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. This is the same as platform_get_irq(), except that it does not print an error message if an interrupt can not be obtained.”h]”hX"Gets an interrupt for a platform device. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. This is the same as platform_get_irq(), except that it does not print an error message if an interrupt can not be obtained.”…”�”}”(hjîih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj?iubj[)�”}”(hŒ For example::”h]”hŒ For example:”…”�”}”(hjýih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M hj?iubj¥)�”}”(hŒNint irq = platform_get_irq_optional(pdev, 0); if (irq < 0) return irq;”h]”hŒNint irq = platform_get_irq_optional(pdev, 0); if (irq < 0) return irq;”…”�”}”hj jsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj?iubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjjh]”hŒReturn”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj?iubj[)�”}”(hŒGnon-zero interrupt number on success, negative error number on failure.”h]”hŒGnon-zero interrupt number on success, negative error number on failure.”…”�”}”(hj3jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj?iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒplatform_get_irq (C function)”Œc.platform_get_irq”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDint platform_get_irq (struct platform_device *dev, unsigned int num)”h]”hù)�”}”(hŒCint platform_get_irq(struct platform_device *dev, unsigned int num)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjbjh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj^jh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^jh²hh³jpjh´Mubj")�”}”(hŒplatform_get_irq”h]”j()�”}”(hŒplatform_get_irq”h]”hŒplatform_get_irq”…”�”}”(hjƒjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj^jh²hh³jpjh´Mubj÷7)�”}”(hŒ/(struct platform_device *dev, unsigned int num)”h]”(jý7)�”}”(hŒstruct platform_device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŸjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj›jubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›jubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj½jh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjºjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¿jŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j…jsbŒc.platform_get_irq”†”asbuh1hhj›jubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›jubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjëjh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj›jubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjøjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj›jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj—jubjý7)�”}”(hŒunsigned int num”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj kubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj-kh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj kubj()�”}”(hŒnum”h]”hŒnum”…”�”}”(hjIkh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj—jubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj^jh²hh³jpjh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjZjh²hh³jpjh´Mubah}”(h]”jUjah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jpjh´MhjWjh²hubjV)�”}”(hhh]”j[)�”}”(hŒget an IRQ for a device”h]”hŒget an IRQ for a device”…”�”}”(hjskh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhjpkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjWjh²hh³jpjh´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj‹kj{j‹kj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``struct platform_device *dev`` platform device ``unsigned int num`` IRQ number index **Description** Gets an IRQ for a platform device and prints an error message if finding the IRQ fails. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs. For example:: int irq = platform_get_irq(pdev, 0); if (irq < 0) return irq; **Return** non-zero IRQ number on success, negative error number on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj•kh]”hŒ Parameters”…”�”}”(hj—kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj“kubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M!hj�kubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``struct platform_device *dev`` platform device ”h]”(jÙ)�”}”(hŒ``struct platform_device *dev``”h]”jß)�”}”(hj´kh]”hŒstruct platform_device *dev”…”�”}”(hj¶kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj²kubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj®kubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device”h]”hŒplatform device”…”�”}”(hjÍkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÉkh´MhjÊkubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj®kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÉkh´Mhj«kubjÓ)�”}”(hŒ&``unsigned int num`` IRQ number index ”h]”(jÙ)�”}”(hŒ``unsigned int num``”h]”jß)�”}”(hjíkh]”hŒunsigned int num”…”�”}”(hjïkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjëkubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhjçkubjõ)�”}”(hhh]”j[)�”}”(hŒIRQ number index”h]”hŒIRQ number index”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jlh´Mhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjçkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jlh´Mhj«kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�kubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj(lh]”hŒ Description”…”�”}”(hj*lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj&lubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M!hj�kubj[)�”}”(hŒÕGets an IRQ for a platform device and prints an error message if finding the IRQ fails. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs.”h]”hŒÕGets an IRQ for a platform device and prints an error message if finding the IRQ fails. Device drivers should check the return value for errors so as to not pass a negative integer value to the request_irq() APIs.”…”�”}”(hj>lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M hj�kubj[)�”}”(hŒ For example::”h]”hŒ For example:”…”�”}”(hjMlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M$hj�kubj¥)�”}”(hŒEint irq = platform_get_irq(pdev, 0); if (irq < 0) return irq;”h]”hŒEint irq = platform_get_irq(pdev, 0); if (irq < 0) return irq;”…”�”}”hj\lsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M&hj�kubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjmlh]”hŒReturn”…”�”}”(hjolh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjklubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M*hj�kubj[)�”}”(hŒAnon-zero IRQ number on success, negative error number on failure.”h]”hŒAnon-zero IRQ number on success, negative error number on failure.”…”�”}”(hjƒlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M+hj�kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒplatform_irq_count (C function)”Œc.platform_irq_count”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int platform_irq_count (struct platform_device *dev)”h]”hù)�”}”(hŒ3int platform_irq_count(struct platform_device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj²lh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj®lh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®lh²hh³jÀlh´M;ubj")�”}”(hŒplatform_irq_count”h]”j()�”}”(hŒplatform_irq_count”h]”hŒplatform_irq_count”…”�”}”(hjÓlh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÏlubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj®lh²hh³jÀlh´M;ubj÷7)�”}”(hŒ(struct platform_device *dev)”h]”jý7)�”}”(hŒstruct platform_device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjïlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjëlubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjülh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëlubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jmŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÕlsbŒc.platform_irq_count”†”asbuh1hhjëlubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëlubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj;mh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjëlubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjHmh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjëlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjçlubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj®lh²hh³jÀlh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjªlh²hh³jÀlh´M;ubah}”(h]”j¥lah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÀlh´M;hj§lh²hubjV)�”}”(hhh]”j[)�”}”(hŒ/Count the number of IRQs a platform device uses”h]”hŒ/Count the number of IRQs a platform device uses”…”�”}”(hjrmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M;hjomh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj§lh²hh³jÀlh´M;ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjŠmj{jŠmj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ„**Parameters** ``struct platform_device *dev`` platform device **Return** Number of IRQs a platform device uses or EPROBE_DEFER”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj”mh]”hŒ Parameters”…”�”}”(hj–mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj’mubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M?hjŽmubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ0``struct platform_device *dev`` platform device ”h]”(jÙ)�”}”(hŒ``struct platform_device *dev``”h]”jß)�”}”(hj³mh]”hŒstruct platform_device *dev”…”�”}”(hjµmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±mubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M<hj­mubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device”h]”hŒplatform device”…”�”}”(hjÌmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÈmh´M<hjÉmubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj­mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÈmh´M<hjªmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŽmubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjîmh]”hŒReturn”…”�”}”(hjðmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjìmubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M>hjŽmubj[)�”}”(hŒ5Number of IRQs a platform device uses or EPROBE_DEFER”h]”hŒ5Number of IRQs a platform device uses or EPROBE_DEFER”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M>hjŽmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,devm_platform_get_irqs_affinity (C function)”Œ!c.devm_platform_get_irqs_affinity”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ’int devm_platform_get_irqs_affinity (struct platform_device *dev, struct irq_affinity *affd, unsigned int minvec, unsigned int maxvec, int **irqs)”h]”hù)�”}”(hŒ‘int devm_platform_get_irqs_affinity(struct platform_device *dev, struct irq_affinity *affd, unsigned int minvec, unsigned int maxvec, int **irqs)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj3nh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj/nh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mkubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/nh²hh³jAnh´Mkubj")�”}”(hŒdevm_platform_get_irqs_affinity”h]”j()�”}”(hŒdevm_platform_get_irqs_affinity”h]”hŒdevm_platform_get_irqs_affinity”…”�”}”(hjTnh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjPnubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj/nh²hh³jAnh´Mkubj÷7)�”}”(hŒn(struct platform_device *dev, struct irq_affinity *affd, unsigned int minvec, unsigned int maxvec, int **irqs)”h]”(jý7)�”}”(hŒstruct platform_device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjpnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjlnubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlnubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjŽnh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‹nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j�nŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jVnsbŒ!c.devm_platform_get_irqs_affinity”†”asbuh1hhjlnubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlnubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¼nh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjlnubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÉnh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjlnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjhnubjý7)�”}”(hŒstruct irq_affinity *affd”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjânh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÞnubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞnubh)�”}”(hhh]”j()�”}”(hŒ irq_affinity”h]”hŒ irq_affinity”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjýnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”joŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jªnŒ!c.devm_platform_get_irqs_affinity”†”asbuh1hhjÞnubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞnubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj,oh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÞnubj()�”}”(hŒaffd”h]”hŒaffd”…”�”}”(hj9oh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÞnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjhnubjý7)�”}”(hŒunsigned int minvec”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjRoh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjNoubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNoubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjnoh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjNoubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNoubj()�”}”(hŒminvec”h]”hŒminvec”…”�”}”(hjŠoh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjNoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjhnubjý7)�”}”(hŒunsigned int maxvec”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj£oh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjŸoubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸoubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿oh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjŸoubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸoubj()�”}”(hŒmaxvec”h]”hŒmaxvec”…”�”}”(hjÛoh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŸoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjhnubjý7)�”}”(hŒ int **irqs”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjôoh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjðoubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðoubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjðoubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjðoubj()�”}”(hŒirqs”h]”hŒirqs”…”�”}”(hj*ph²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjðoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjhnubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj/nh²hh³jAnh´Mkubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj+nh²hh³jAnh´Mkubah}”(h]”j&nah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jAnh´Mkhj(nh²hubjV)�”}”(hhh]”j[)�”}”(hŒTdevm method to get a set of IRQs for a device using an interrupt affinity descriptor”h]”hŒTdevm method to get a set of IRQs for a device using an interrupt affinity descriptor”…”�”}”(hjTph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MkhjQph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj(nh²hh³jAnh´Mkubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjlpj{jlpj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXù**Parameters** ``struct platform_device *dev`` platform device pointer ``struct irq_affinity *affd`` affinity descriptor ``unsigned int minvec`` minimum count of interrupt vectors ``unsigned int maxvec`` maximum count of interrupt vectors ``int **irqs`` pointer holder for IRQ numbers **Description** Gets a set of IRQs for a platform device, and updates IRQ afffinty according to the passed affinity descriptor **Return** Number of vectors on success, negative error number on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjvph]”hŒ Parameters”…”�”}”(hjxph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjtpubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MohjppubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ8``struct platform_device *dev`` platform device pointer ”h]”(jÙ)�”}”(hŒ``struct platform_device *dev``”h]”jß)�”}”(hj•ph]”hŒstruct platform_device *dev”…”�”}”(hj—ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“pubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mmhj�pubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device pointer”h]”hŒplatform device pointer”…”�”}”(hj®ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jªph´Mmhj«pubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jªph´MmhjŒpubjÓ)�”}”(hŒ2``struct irq_affinity *affd`` affinity descriptor ”h]”(jÙ)�”}”(hŒ``struct irq_affinity *affd``”h]”jß)�”}”(hjÎph]”hŒstruct irq_affinity *affd”…”�”}”(hjÐph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌpubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MnhjÈpubjõ)�”}”(hhh]”j[)�”}”(hŒaffinity descriptor”h]”hŒaffinity descriptor”…”�”}”(hjçph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jãph´Mnhjäpubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÈpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jãph´MnhjŒpubjÓ)�”}”(hŒ;``unsigned int minvec`` minimum count of interrupt vectors ”h]”(jÙ)�”}”(hŒ``unsigned int minvec``”h]”jß)�”}”(hjqh]”hŒunsigned int minvec”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mohjqubjõ)�”}”(hhh]”j[)�”}”(hŒ"minimum count of interrupt vectors”h]”hŒ"minimum count of interrupt vectors”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jqh´Mohjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jqh´MohjŒpubjÓ)�”}”(hŒ;``unsigned int maxvec`` maximum count of interrupt vectors ”h]”(jÙ)�”}”(hŒ``unsigned int maxvec``”h]”jß)�”}”(hj@qh]”hŒunsigned int maxvec”…”�”}”(hjBqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj>qubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mphj:qubjõ)�”}”(hhh]”j[)�”}”(hŒ"maximum count of interrupt vectors”h]”hŒ"maximum count of interrupt vectors”…”�”}”(hjYqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jUqh´MphjVqubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj:qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jUqh´MphjŒpubjÓ)�”}”(hŒ.``int **irqs`` pointer holder for IRQ numbers ”h]”(jÙ)�”}”(hŒ``int **irqs``”h]”jß)�”}”(hjyqh]”hŒ int **irqs”…”�”}”(hj{qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjwqubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mqhjsqubjõ)�”}”(hhh]”j[)�”}”(hŒpointer holder for IRQ numbers”h]”hŒpointer holder for IRQ numbers”…”�”}”(hj’qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŽqh´Mqhj�qubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjsqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŽqh´MqhjŒpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjppubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj´qh]”hŒ Description”…”�”}”(hj¶qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj²qubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mshjppubj[)�”}”(hŒnGets a set of IRQs for a platform device, and updates IRQ afffinty according to the passed affinity descriptor”h]”hŒnGets a set of IRQs for a platform device, and updates IRQ afffinty according to the passed affinity descriptor”…”�”}”(hjÊqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mrhjppubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjÛqh]”hŒReturn”…”�”}”(hjÝqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÙqubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Muhjppubj[)�”}”(hŒ?Number of vectors on success, negative error number on failure.”h]”hŒ?Number of vectors on success, negative error number on failure.”…”�”}”(hjñqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mvhjppubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)platform_get_resource_byname (C function)”Œc.platform_get_resource_byname”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒqstruct resource * platform_get_resource_byname (struct platform_device *dev, unsigned int type, const char *name)”h]”hù)�”}”(hŒostruct resource *platform_get_resource_byname(struct platform_device *dev, unsigned int type, const char *name)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjrh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÈubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrh²hh³j-rh´MÈubh)�”}”(hhh]”j()�”}”(hŒresource”h]”hŒresource”…”�”}”(hj?rh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�ubjõ)�”}”(hhh]”j[)�”}”(hŒnumber of resources”h]”hŒnumber of resources”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jY�h´MŒhjZ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj>�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jY�h´MŒhjÉ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj­€ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj�h]”hŒ Description”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj}�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MŽhj­€ubj[)�”}”(hŒ‘Add a copy of the resources to the platform device. The memory associated with the resources will be freed when the platform device is released.”h]”hŒ‘Add a copy of the resources to the platform device. The memory associated with the resources will be freed when the platform device is released.”…”�”}”(hj•�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M�hj­€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%platform_device_add_data (C function)”Œc.platform_device_add_data”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒZint platform_device_add_data (struct platform_device *pdev, const void *data, size_t size)”h]”hù)�”}”(hŒYint platform_device_add_data(struct platform_device *pdev, const void *data, size_t size)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄ�h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÀ�h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ�h²hh³jÒ�h´M¥ubj")�”}”(hŒplatform_device_add_data”h]”j()�”}”(hŒplatform_device_add_data”h]”hŒplatform_device_add_data”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjá�ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÀ�h²hh³jÒ�h´M¥ubj÷7)�”}”(hŒ=(struct platform_device *pdev, const void *data, size_t size)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjý�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý�ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j!‚Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jç�sbŒc.platform_device_add_data”†”asbuh1hhjý�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý�ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjM‚h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjý�ubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjZ‚h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjý�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjù�ubjý7)�”}”(hŒconst void *data”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjs‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjo‚ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo‚ubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŽ‚h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjo‚ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo‚ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjª‚h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjo‚ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hj·‚h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjo‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjù�ubjý7)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j()�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÓ‚h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjЂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÕ‚Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j;‚Œc.platform_device_add_data”†”asbuh1hhjÌ‚ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌ‚ubj()�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÿ‚h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÌ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjù�ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÀ�h²hh³jÒ�h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¼�h²hh³jÒ�h´M¥ubah}”(h]”j·�ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÒ�h´M¥hj¹�h²hubjV)�”}”(hhh]”j[)�”}”(hŒ/add platform-specific data to a platform device”h]”hŒ/add platform-specific data to a platform device”…”�”}”(hj)ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M¥hj&ƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¹�h²hh³jÒ�h´M¥ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjAƒj{jAƒj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX¼**Parameters** ``struct platform_device *pdev`` platform device allocated by platform_device_alloc to add resources to ``const void *data`` platform specific data for this platform device ``size_t size`` size of platform specific data **Description** Add a copy of platform specific data to the platform device's platform_data pointer. The memory associated with the platform data will be freed when the platform device is released.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjKƒh]”hŒ Parameters”…”�”}”(hjMƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjIƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M©hjEƒubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒh``struct platform_device *pdev`` platform device allocated by platform_device_alloc to add resources to ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjjƒh]”hŒstruct platform_device *pdev”…”�”}”(hjlƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjhƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M¦hjdƒubjõ)�”}”(hhh]”j[)�”}”(hŒFplatform device allocated by platform_device_alloc to add resources to”h]”hŒFplatform device allocated by platform_device_alloc to add resources to”…”�”}”(hjƒƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jƒh´M¦hj€ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjdƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jƒh´M¦hjaƒubjÓ)�”}”(hŒE``const void *data`` platform specific data for this platform device ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hj£ƒh]”hŒconst void *data”…”�”}”(hj¥ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¡ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M§hj�ƒubjõ)�”}”(hhh]”j[)�”}”(hŒ/platform specific data for this platform device”h]”hŒ/platform specific data for this platform device”…”�”}”(hj¼ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¸ƒh´M§hj¹ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¸ƒh´M§hjaƒubjÓ)�”}”(hŒ/``size_t size`` size of platform specific data ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hj܃h]”hŒ size_t size”…”�”}”(hjÞƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÚƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M¨hjÖƒubjõ)�”}”(hhh]”j[)�”}”(hŒsize of platform specific data”h]”hŒsize of platform specific data”…”�”}”(hjõƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jñƒh´M¨hjòƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÖƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jñƒh´M¨hjaƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjEƒubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj„h]”hŒ Description”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MªhjEƒubj[)�”}”(hŒ¶Add a copy of platform specific data to the platform device's platform_data pointer. The memory associated with the platform data will be freed when the platform device is released.”h]”hŒ¸Add a copy of platform specific data to the platform device’s platform_data pointer. The memory associated with the platform data will be freed when the platform device is released.”…”�”}”(hj-„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M©hjEƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(platform_device_set_of_node (C function)”Œc.platform_device_set_of_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒWvoid platform_device_set_of_node (struct platform_device *pdev, struct device_node *np)”h]”hù)�”}”(hŒVvoid platform_device_set_of_node(struct platform_device *pdev, struct device_node *np)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj\„h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjX„h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÀubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjX„h²hh³jj„h´MÀubj")�”}”(hŒplatform_device_set_of_node”h]”j()�”}”(hŒplatform_device_set_of_node”h]”hŒplatform_device_set_of_node”…”�”}”(hj}„h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjy„ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjX„h²hh³jj„h´MÀubj÷7)�”}”(hŒ6(struct platform_device *pdev, struct device_node *np)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj™„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj•„ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•„ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj·„h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¹„Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j„sbŒc.platform_device_set_of_node”†”asbuh1hhj•„ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjׄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•„ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjå„h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj•„ubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjò„h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj‘„ubjý7)�”}”(hŒstruct device_node *np”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ubh)�”}”(hhh]”j()�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hj)…h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj&…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j+…Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÓ„Œc.platform_device_set_of_node”†”asbuh1hhj…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjU…h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj…ubj()�”}”(hŒnp”h]”hŒnp”…”�”}”(hjb…h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj‘„ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjX„h²hh³jj„h´MÀubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjT„h²hh³jj„h´MÀubah}”(h]”jO„ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jj„h´MÀhjQ„h²hubjV)�”}”(hhh]”j[)�”}”(hŒassign an OF node to device”h]”hŒassign an OF node to device”…”�”}”(hjŒ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÀhj‰…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjQ„h²hh³jj„h´MÀubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¤…j{j¤…j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXÚ**Parameters** ``struct platform_device *pdev`` platform device to add the node for ``struct device_node *np`` new device node **Description** Assign an OF node to this platform device. Internally keep track of the reference count. Devices created with platform_device_alloc() must use this function instead of assigning the node manually. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj®…h]”hŒ Parameters”…”�”}”(hj°…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÄhj¨…ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒE``struct platform_device *pdev`` platform device to add the node for ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjÍ…h]”hŒstruct platform_device *pdev”…”�”}”(hjÏ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjË…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÁhjÇ…ubjõ)�”}”(hhh]”j[)�”}”(hŒ#platform device to add the node for”h]”hŒ#platform device to add the node for”…”�”}”(hjæ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jâ…h´MÁhjã…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÇ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jâ…h´MÁhjÄ…ubjÓ)�”}”(hŒ+``struct device_node *np`` new device node ”h]”(jÙ)�”}”(hŒ``struct device_node *np``”h]”jß)�”}”(hj†h]”hŒstruct device_node *np”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÂhj†ubjõ)�”}”(hhh]”j[)�”}”(hŒnew device node”h]”hŒnew device node”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j†h´MÂhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j†h´MÂhjÄ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¨…ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjA†h]”hŒ Description”…”�”}”(hjC†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj?†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÄhj¨…ubj[)�”}”(hXCAssign an OF node to this platform device. Internally keep track of the reference count. Devices created with platform_device_alloc() must use this function instead of assigning the node manually. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”h]”hXCAssign an OF node to this platform device. Internally keep track of the reference count. Devices created with platform_device_alloc() must use this function instead of assigning the node manually. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”…”�”}”(hjW†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÃhj¨…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'platform_device_set_fwnode (C function)”Œc.platform_device_set_fwnode”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ\void platform_device_set_fwnode (struct platform_device *pdev, struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒ[void platform_device_set_fwnode(struct platform_device *pdev, struct fwnode_handle *fwnode)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj††h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj‚†h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚†h²hh³j”†h´MÒubj")�”}”(hŒplatform_device_set_fwnode”h]”j()�”}”(hŒplatform_device_set_fwnode”h]”hŒplatform_device_set_fwnode”…”�”}”(hj§†h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj£†ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj‚†h²hh³j”†h´MÒubj÷7)�”}”(hŒ<(struct platform_device *pdev, struct fwnode_handle *fwnode)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¿†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjІh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿†ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjá†h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÞ†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jㆌmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j©†sbŒc.platform_device_set_fwnode”†”asbuh1hhj¿†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿†ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¿†ubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¿†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj»†ubjý7)�”}”(hŒstruct fwnode_handle *fwnode”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj5‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj1‡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1‡ubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hjS‡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjP‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jU‡Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jý†Œc.platform_device_set_fwnode”†”asbuh1hhj1‡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1‡ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj1‡ubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjŒ‡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj1‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj»†ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj‚†h²hh³j”†h´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj~†h²hh³j”†h´MÒubah}”(h]”jy†ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j”†h´MÒhj{†h²hubjV)�”}”(hhh]”j[)�”}”(hŒ assign a firmware node to device”h]”hŒ assign a firmware node to device”…”�”}”(hj¶‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÒhj³‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj{†h²hh³j”†h´MÒubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj·j{j·j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXç**Parameters** ``struct platform_device *pdev`` platform device to set the node for ``struct fwnode_handle *fwnode`` new firmware node **Description** Assign a firmware node to this platform device. Internally keep track of the reference count. Devices created with platform_device_alloc() must use this function instead of assigning the node manually. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj؇h]”hŒ Parameters”…”�”}”(hjÚ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÖ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÖhjÒ‡ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒE``struct platform_device *pdev`` platform device to set the node for ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hj÷‡h]”hŒstruct platform_device *pdev”…”�”}”(hjù‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjõ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÓhjñ‡ubjõ)�”}”(hhh]”j[)�”}”(hŒ#platform device to set the node for”h]”hŒ#platform device to set the node for”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j ˆh´MÓhj ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjñ‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j ˆh´MÓhjî‡ubjÓ)�”}”(hŒ3``struct fwnode_handle *fwnode`` new firmware node ”h]”(jÙ)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jß)�”}”(hj0ˆh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hj2ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj.ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÔhj*ˆubjõ)�”}”(hhh]”j[)�”}”(hŒnew firmware node”h]”hŒnew firmware node”…”�”}”(hjIˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jEˆh´MÔhjFˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj*ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jEˆh´MÔhjî‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÒ‡ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjkˆh]”hŒ Description”…”�”}”(hjmˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjiˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÖhjÒ‡ubj[)�”}”(hXHAssign a firmware node to this platform device. Internally keep track of the reference count. Devices created with platform_device_alloc() must use this function instead of assigning the node manually. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”h]”hXHAssign a firmware node to this platform device. Internally keep track of the reference count. Devices created with platform_device_alloc() must use this function instead of assigning the node manually. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”…”�”}”(hj�ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÕhjÒ‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1platform_device_set_of_node_from_dev (C function)”Œ&c.platform_device_set_of_node_from_dev”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒcvoid platform_device_set_of_node_from_dev (struct platform_device *pdev, const struct device *dev2)”h]”hù)�”}”(hŒbvoid platform_device_set_of_node_from_dev(struct platform_device *pdev, const struct device *dev2)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°ˆh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¬ˆh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mìubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ˆh²hh³j¾ˆh´Mìubj")�”}”(hŒ$platform_device_set_of_node_from_dev”h]”j()�”}”(hŒ$platform_device_set_of_node_from_dev”h]”hŒ$platform_device_set_of_node_from_dev”…”�”}”(hjшh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj͈ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¬ˆh²hh³j¾ˆh´Mìubj÷7)�”}”(hŒ9(struct platform_device *pdev, const struct device *dev2)”h]”(jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjíˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjéˆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéˆubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j ‰Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÓˆsbŒ&c.platform_device_set_of_node_from_dev”†”asbuh1hhjéˆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéˆubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjéˆubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjF‰h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjéˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjåˆubjý7)�”}”(hŒconst struct device *dev2”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj_‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj[‰ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[‰ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjz‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj[‰ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[‰ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj˜‰h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jš‰Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j'‰Œ&c.platform_device_set_of_node_from_dev”†”asbuh1hhj[‰ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[‰ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjĉh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj[‰ubj()�”}”(hŒdev2”h]”hŒdev2”…”�”}”(hjщh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj[‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjåˆubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¬ˆh²hh³j¾ˆh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¨ˆh²hh³j¾ˆh´Mìubah}”(h]”j£ˆah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¾ˆh´Mìhj¥ˆh²hubjV)�”}”(hhh]”j[)�”}”(hŒreuse OF node of another device”h]”hŒreuse OF node of another device”…”�”}”(hjû‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mìhjø‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¥ˆh²hh³j¾ˆh´Mìubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjŠj{jŠj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX™**Parameters** ``struct platform_device *pdev`` platform device to set the node for ``const struct device *dev2`` device whose OF node to reuse **Description** Reuses the OF node of another device in this platform device while internally keeping track of reference counting. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjŠh]”hŒ Parameters”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MðhjŠubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒE``struct platform_device *pdev`` platform device to set the node for ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hj<Šh]”hŒstruct platform_device *pdev”…”�”}”(hj>Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Míhj6Šubjõ)�”}”(hhh]”j[)�”}”(hŒ#platform device to set the node for”h]”hŒ#platform device to set the node for”…”�”}”(hjUŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jQŠh´MíhjRŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj6Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jQŠh´Míhj3ŠubjÓ)�”}”(hŒ<``const struct device *dev2`` device whose OF node to reuse ”h]”(jÙ)�”}”(hŒ``const struct device *dev2``”h]”jß)�”}”(hjuŠh]”hŒconst struct device *dev2”…”�”}”(hjwŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjsŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MîhjoŠubjõ)�”}”(hhh]”j[)�”}”(hŒdevice whose OF node to reuse”h]”hŒdevice whose OF node to reuse”…”�”}”(hjŽŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŠŠh´Mîhj‹Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjoŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŠŠh´Mîhj3Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŠubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj°Šh]”hŒ Description”…”�”}”(hj²Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj®Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MðhjŠubj[)�”}”(hŒñReuses the OF node of another device in this platform device while internally keeping track of reference counting. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”h]”hŒñReuses the OF node of another device in this platform device while internally keeping track of reference counting. This function must not be called for a platform device that already has a software node as its primary firmware node assigned.”…”�”}”(hjÆŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MïhjŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ platform_device_add (C function)”Œc.platform_device_add”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int platform_device_add (struct platform_device *pdev)”h]”hù)�”}”(hŒ5int platform_device_add(struct platform_device *pdev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjõŠh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjñŠh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñŠh²hh³j‹h´Mubj")�”}”(hŒplatform_device_add”h]”j()�”}”(hŒplatform_device_add”h]”hŒplatform_device_add”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‹ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjñŠh²hh³j‹h´Mubj÷7)�”}”(hŒ(struct platform_device *pdev)”h]”jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj2‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj.‹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.‹ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjP‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjM‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jR‹Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j‹sbŒc.platform_device_add”†”asbuh1hhj.‹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.‹ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj~‹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj.‹ubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj‹‹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj.‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj*‹ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjñŠh²hh³j‹h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjíŠh²hh³j‹h´Mubah}”(h]”jèŠah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j‹h´MhjêŠh²hubjV)�”}”(hhh]”j[)�”}”(hŒ)add a platform device to device hierarchy”h]”hŒ)add a platform device to device hierarchy”…”�”}”(hjµ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhj²‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjêŠh²hh³j‹h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÍ‹j{jÍ‹j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒä**Parameters** ``struct platform_device *pdev`` platform device we're adding **Description** This is part 2 of platform_device_register(), though may be called separately _iff_ pdev was allocated by platform_device_alloc().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj׋h]”hŒ Parameters”…”�”}”(hjÙ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÕ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MhjÑ‹ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ>``struct platform_device *pdev`` platform device we're adding ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjö‹h]”hŒstruct platform_device *pdev”…”�”}”(hjø‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjô‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhjð‹ubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device we're adding”h]”hŒplatform device we’re adding”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j Œh´Mhj Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjð‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j Œh´Mhjí‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÑ‹ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj1Œh]”hŒ Description”…”�”}”(hj3Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj/Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MhjÑ‹ubj[)�”}”(hŒ‚This is part 2 of platform_device_register(), though may be called separately _iff_ pdev was allocated by platform_device_alloc().”h]”hŒ‚This is part 2 of platform_device_register(), though may be called separately _iff_ pdev was allocated by platform_device_alloc().”…”�”}”(hjGŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MhjÑ‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ platform_device_del (C function)”Œc.platform_device_del”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7void platform_device_del (struct platform_device *pdev)”h]”hù)�”}”(hŒ6void platform_device_del(struct platform_device *pdev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvŒh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjrŒh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MXubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrŒh²hh³j„Œh´MXubj")�”}”(hŒplatform_device_del”h]”j()�”}”(hŒplatform_device_del”h]”hŒplatform_device_del”…”�”}”(hj—Œh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj“Œubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjrŒh²hh³j„Œh´MXubj÷7)�”}”(hŒ(struct platform_device *pdev)”h]”jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj³Œh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¯Œubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Œubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjÑŒh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÎŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÓŒŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j™ŒsbŒc.platform_device_del”†”asbuh1hhj¯Œubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯ŒubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÿŒh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¯Œubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¯Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj«Œubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjrŒh²hh³j„Œh´MXubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjnŒh²hh³j„Œh´MXubah}”(h]”jiŒah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j„Œh´MX•hjkŒh²hubjV)�”}”(hhh]”j[)�”}”(hŒremove a platform-level device”h]”hŒremove a platform-level device”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MXhj3�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjkŒh²hh³j„Œh´MXubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjN�j{jN�j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX6**Parameters** ``struct platform_device *pdev`` platform device we're removing **Description** Note that this function will also release all memory- and port-based resources owned by the device (**dev->resource**). This function must _only_ be externally called in error cases. All other usage is a bug.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjX�h]”hŒ Parameters”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjV�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M\hjR�ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ@``struct platform_device *pdev`` platform device we're removing ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hjw�h]”hŒstruct platform_device *pdev”…”�”}”(hjy�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhju�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MYhjq�ubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device we're removing”h]”hŒ platform device we’re removing”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŒ�h´MYhj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjq�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŒ�h´MYhjn�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjR�ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj²�h]”hŒ Description”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj°�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M[hjR�ubj[)�”}”(hŒÒNote that this function will also release all memory- and port-based resources owned by the device (**dev->resource**). This function must _only_ be externally called in error cases. All other usage is a bug.”h]”(hŒdNote that this function will also release all memory- and port-based resources owned by the device (”…”�”}”(hjÈ�h²hh³Nh´NubjŠ)�”}”(hŒ**dev->resource**”h]”hŒ dev->resource”…”�”}”(hjÐ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÈ�ubhŒ]). This function must _only_ be externally called in error cases. All other usage is a bug.”…”�”}”(hjÈ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MZhjR�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%platform_device_register (C function)”Œc.platform_device_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;int platform_device_register (struct platform_device *pdev)”h]”hù)�”}”(hŒ:int platform_device_register(struct platform_device *pdev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjŽh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Muubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽh²hh³jŽh´Muubj")�”}”(hŒplatform_device_register”h]”j()�”}”(hŒplatform_device_register”h]”hŒplatform_device_register”…”�”}”(hj*Žh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj&Žubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjŽh²hh³jŽh´Muubj÷7)�”}”(hŒ(struct platform_device *pdev)”h]”jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjFŽh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjBŽubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBŽubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jfŽŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j,ŽsbŒc.platform_device_register”†”asbuh1hhjBŽubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBŽubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj’Žh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjBŽubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjŸŽh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjBŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj>Žubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjŽh²hh³jŽh´Muubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjŽh²hh³jŽh´Muubah}”(h]”jü�ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jŽh´Muhjþ�h²hubjV)�”}”(hhh]”j[)�”}”(hŒadd a platform-level device”h]”hŒadd a platform-level device”…”�”}”(hjÉŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MuhjÆŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjþ�h²hh³jŽh´Muubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjáŽj{jáŽj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``struct platform_device *pdev`` platform device we're adding **NOTE** _Never_ directly free **pdev** after calling this function, even if it returned an error! Always use platform_device_put() to give up the reference initialised in this function instead.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjëŽh]”hŒ Parameters”…”�”}”(hjíŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjéŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MyhjåŽubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ>``struct platform_device *pdev`` platform device we're adding ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hj �h]”hŒstruct platform_device *pdev”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mvhj�ubjõ)�”}”(hhh]”j[)�”}”(hŒplatform device we're adding”h]”hŒplatform device we’re adding”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j�h´Mvhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j�h´Mvhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjåŽubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjE�h]”hŒNOTE”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjC�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MxhjåŽubj[)�”}”(hŒ¹_Never_ directly free **pdev** after calling this function, even if it returned an error! Always use platform_device_put() to give up the reference initialised in this function instead.”h]”(hŒ_Never_ directly free ”…”�”}”(hj[�h²hh³Nh´NubjŠ)�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj[�ubhŒ› after calling this function, even if it returned an error! Always use platform_device_put() to give up the reference initialised in this function instead.”…”�”}”(hj[�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MxhjåŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'platform_device_unregister (C function)”Œc.platform_device_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>void platform_device_unregister (struct platform_device *pdev)”h]”hù)�”}”(hŒ=void platform_device_unregister(struct platform_device *pdev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjœ�h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj˜�h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M…ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜�h²hh³jª�h´M…ubj")�”}”(hŒplatform_device_unregister”h]”j()�”}”(hŒplatform_device_unregister”h]”hŒplatform_device_unregister”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¹�ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj˜�h²hh³jª�h´M…ubj÷7)�”}”(hŒ(struct platform_device *pdev)”h]”jý7)�”}”(hŒstruct platform_device *pdev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÙ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÕ�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ�ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjô�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jù�Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j¿�sbŒc.platform_device_unregister”†”asbuh1hhjÕ�ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ�ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÕ�ubj()�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÕ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÑ�ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj˜�h²hh³jª�h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj”�h²hh³jª�h´M…ubah}”(h]”j��ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jª�h´M…hj‘�h²hubjV)�”}”(hhh]”j[)�”}”(hŒ"unregister a platform-level device”h]”hŒ"unregister a platform-level device”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M…hjY�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‘�h²hh³jª�h´M…ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjt�j{jt�j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX **Parameters** ``struct platform_device *pdev`` platform device we're unregistering **Description** Unregistration is done in 2 steps. First we release all resources and remove it from the subsystem, then we drop reference count by calling platform_device_put().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj~�h]”hŒ Parameters”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj|�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M‰hjx�ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒE``struct platform_device *pdev`` platform device we're unregistering ”h]”(jÙ)�”}”(hŒ ``struct platform_device *pdev``”h]”jß)�”}”(hj��h]”hŒstruct platform_device *pdev”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M†hj—�ubjõ)�”}”(hhh]”j[)�”}”(hŒ#platform device we're unregistering”h]”hŒ%platform device we’re unregistering”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j²�h´M†hj³�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj—�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j²�h´M†hj”�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjx�ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjØ�h]”hŒ Description”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÖ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mˆhjx�ubj[)�”}”(hŒ¢Unregistration is done in 2 steps. First we release all resources and remove it from the subsystem, then we drop reference count by calling platform_device_put().”h]”hŒ¢Unregistration is done in 2 steps. First we release all resources and remove it from the subsystem, then we drop reference count by calling platform_device_put().”…”�”}”(hjî�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M‡hjx�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*platform_device_register_full (C function)”Œc.platform_device_register_full”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdstruct platform_device * platform_device_register_full (const struct platform_device_info *pdevinfo)”h]”hù)�”}”(hŒbstruct platform_device *platform_device_register_full(const struct platform_device_info *pdevinfo)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj‘h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M”ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘h²hh³j*‘h´M”ubh)�”}”(hhh]”j()�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj<‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj9‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j>‘Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œplatform_device_register_full”sbŒc.platform_device_register_full”†”asbuh1hhj‘h²hh³j*‘h´M”ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘h²hh³j*‘h´M”ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjk‘h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj‘h²hh³j*‘h´M”ubj")�”}”(hŒplatform_device_register_full”h]”j()�”}”(hjZ‘h]”hŒplatform_device_register_full”…”�”}”(hj|‘h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjx‘ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj‘h²hh³j*‘h´M”ubj÷7)�”}”(hŒ-(const struct platform_device_info *pdevinfo)”h]”jý7)�”}”(hŒ+const struct platform_device_info *pdevinfo”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj—‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj“‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“‘ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj²‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj“‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“‘ubh)�”}”(hhh]”j()�”}”(hŒplatform_device_info”h]”hŒplatform_device_info”…”�”}”(hjБh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÍ‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÒ‘Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jX‘Œc.platform_device_register_full”†”asbuh1hhj“‘ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“‘ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjü‘h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj“‘ubj()�”}”(hŒpdevinfo”h]”hŒpdevinfo”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj“‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj�‘ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj‘h²hh³j*‘h´M”ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj‘h²hh³j*‘h´M”ubah}”(h]”j‘ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j*‘h´M”hj‘h²hubjV)�”}”(hhh]”j[)�”}”(hŒEadd a platform-level device with resources and platform-specific data”h]”hŒEadd a platform-level device with resources and platform-specific data”…”�”}”(hj3’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M”hj0’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‘h²hh³j*‘h´M”ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjK’j{jK’j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒÔ**Parameters** ``const struct platform_device_info *pdevinfo`` data used to create device **Description** Returns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjU’h]”hŒ Parameters”…”�”}”(hjW’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjS’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M˜hjO’ubjÎ)�”}”(hhh]”jÓ)�”}”(hŒK``const struct platform_device_info *pdevinfo`` data used to create device ”h]”(jÙ)�”}”(hŒ/``const struct platform_device_info *pdevinfo``”h]”jß)�”}”(hjt’h]”hŒ+const struct platform_device_info *pdevinfo”…”�”}”(hjv’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjr’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M—hjn’ubjõ)�”}”(hhh]”j[)�”}”(hŒdata used to create device”h]”hŒdata used to create device”…”�”}”(hj�’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j‰’h´M—hjŠ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjn’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j‰’h´M—hjk’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjO’ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¯’h]”hŒ Description”…”�”}”(hj±’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj­’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M™hjO’ubj[)�”}”(hŒeReturns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hjÅ’h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct platform_device `”h]”jß)�”}”(hjÏ’h]”hŒstruct platform_device”…”�”}”(hjÑ’h²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhjÍ’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒplatform_device”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M˜hjÅ’ubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hjÅ’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jì’h´M˜hjO’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'__platform_driver_register (C function)”Œc.__platform_driver_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhint __platform_driver_register (struct platform_driver *drv, struct module *owner, const char *mod_name)”h]”hù)�”}”(hŒgint __platform_driver_register(struct platform_driver *drv, struct module *owner, const char *mod_name)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj“h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“h²hh³j%“h´M×ubj")�”}”(hŒ__platform_driver_register”h]”j()�”}”(hŒ__platform_driver_register”h]”hŒ__platform_driver_register”…”�”}”(hj8“h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj4“ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj“h²hh³j%“h´M×ubj÷7)�”}”(hŒI(struct platform_driver *drv, struct module *owner, const char *mod_name)”h]”(jý7)�”}”(hŒstruct platform_driver *drv”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjT“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjP“ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP“ubh)�”}”(hhh]”j()�”}”(hŒplatform_driver”h]”hŒplatform_driver”…”�”}”(hjr“h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjo“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jt“Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j:“sbŒc.__platform_driver_register”†”asbuh1hhjP“ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP“ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjP“ubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hj­“h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjP“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjL“ubjý7)�”}”(hŒstruct module *owner”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÆ“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj“ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“ubh)�”}”(hhh]”j()�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hjä“h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjá“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j擌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jŽ“Œc.__platform_driver_register”†”asbuh1hhj“ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj“ubj()�”}”(hŒowner”h]”hŒowner”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjL“ubjý7)�”}”(hŒconst char *mod_name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj6”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj2”ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2”ubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjQ”h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj2”ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2”ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjm”h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj2”ubj()�”}”(hŒmod_name”h]”hŒmod_name”…”�”}”(hjz”h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj2”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjL“ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj“h²hh³j%“h´M×ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj“h²hh³j%“h´M×ubah}”(h]”j “ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j%“h´M×hj “h²hubjV)�”}”(hhh]”j[)�”}”(hŒ,register a driver for platform-level devices”h]”hŒ,register a driver for platform-level devices”…”�”}”(hj¤”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M×hj¡”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj “h²hh³j%“h´M×ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¼”j{j¼”j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ«**Parameters** ``struct platform_driver *drv`` platform driver structure ``struct module *owner`` owning module/driver ``const char *mod_name`` module name string”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÆ”h]”hŒ Parameters”…”�”}”(hjÈ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÄ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÛhjÀ”ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ:``struct platform_driver *drv`` platform driver structure ”h]”(jÙ)�”}”(hŒ``struct platform_driver *drv``”h]”jß)�”}”(hjå”h]”hŒstruct platform_driver *drv”…”�”}”(hjç”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjã”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MØhjß”ubjõ)�”}”(hhh]”j[)�”}”(hŒplatform driver structure”h]”hŒplatform driver structure”…”�”}”(hjþ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jú”h´MØhjû”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjß”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jú”h´MØhjÜ”ubjÓ)�”}”(hŒ.``struct module *owner`` owning module/driver ”h]”(jÙ)�”}”(hŒ``struct module *owner``”h]”jß)�”}”(hj•h]”hŒstruct module *owner”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÙhj•ubjõ)�”}”(hhh]”j[)�”}”(hŒowning module/driver”h]”hŒowning module/driver”…”�”}”(hj7•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j3•h´MÙhj4•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j3•h´MÙhjÜ”ubjÓ)�”}”(hŒ+``const char *mod_name`` module name string”h]”(jÙ)�”}”(hŒ``const char *mod_name``”h]”jß)�”}”(hjW•h]”hŒconst char *mod_name”…”�”}”(hjY•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjU•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÛhjQ•ubjõ)�”}”(hhh]”j[)�”}”(hŒmodule name string”h]”hŒmodule name string”…”�”}”(hjp•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MÚhjm•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjQ•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jl•h´MÛhjÜ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÀ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'platform_driver_unregister (C function)”Œc.platform_driver_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=void platform_driver_unregister (struct platform_driver *drv)”h]”hù)�”}”(hŒžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ�ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjLžh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjþ�ubj()�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hjYžh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hje›ubjý7)�”}”(hŒconst char *mod_name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjržh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjnžubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnžubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjnžubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnžubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj©žh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjnžubj()�”}”(hŒmod_name”h]”hŒmod_name”…”�”}”(hj¶žh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjnžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hje›ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjïšh²hh³j›h´MEubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjëšh²hh³j›h´MEubah}”(h]”jæšah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j›h´MEhjèšh²hubjV)�”}”(hhh]”j[)�”}”(hŒ/register driver and create corresponding device”h]”hŒ/register driver and create corresponding device”…”�”}”(hjàžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MEhjÝžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjèšh²hh³j›h´MEubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjøžj{jøžj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX.**Parameters** ``struct platform_driver *driver`` platform driver structure ``int (*probe)(struct platform_device *)`` the driver probe routine, probably from an __init section ``struct resource *res`` set of resources that needs to be allocated for the device ``unsigned int n_res`` number of resources ``const void *data`` platform specific data for this platform device ``size_t size`` size of platform specific data ``struct module *module`` module which will be the owner of the driver ``const char *mod_name`` module name string **Description** Use this in legacy-style modules that probe hardware directly and register a single platform device and corresponding platform driver. Returns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjŸh]”hŒ Parameters”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MIhjüžubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ=``struct platform_driver *driver`` platform driver structure ”h]”(jÙ)�”}”(hŒ"``struct platform_driver *driver``”h]”jß)�”}”(hj!Ÿh]”hŒstruct platform_driver *driver”…”�”}”(hj#Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MFhjŸubjõ)�”}”(hhh]”j[)�”}”(hŒplatform driver structure”h]”hŒplatform driver structure”…”�”}”(hj:Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j6Ÿh´MFhj7Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j6Ÿh´MFhjŸubjÓ)�”}”(hŒe``int (*probe)(struct platform_device *)`` the driver probe routine, probably from an __init section ”h]”(jÙ)�”}”(hŒ*``int (*probe)(struct platform_device *)``”h]”jß)�”}”(hjZŸh]”hŒ&int (*probe)(struct platform_device *)”…”�”}”(hj\Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjXŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MGhjTŸubjõ)�”}”(hhh]”j[)�”}”(hŒ9the driver probe routine, probably from an __init section”h]”hŒ9the driver probe routine, probably from an __init section”…”�”}”(hjsŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³joŸh´MGhjpŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjTŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³joŸh´MGhjŸubjÓ)�”}”(hŒT``struct resource *res`` set of resources that needs to be allocated for the device ”h]”(jÙ)�”}”(hŒ``struct resource *res``”h]”jß)�”}”(hj“Ÿh]”hŒstruct resource *res”…”�”}”(hj•Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MHhj�Ÿubjõ)�”}”(hhh]”j[)�”}”(hŒ:set of resources that needs to be allocated for the device”h]”hŒ:set of resources that needs to be allocated for the device”…”�”}”(hj¬Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¨Ÿh´MHhj©Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¨Ÿh´MHhjŸubjÓ)�”}”(hŒ+``unsigned int n_res`` number of resources ”h]”(jÙ)�”}”(hŒ``unsigned int n_res``”h]”jß)�”}”(hjÌŸh]”hŒunsigned int n_res”…”�”}”(hjΟh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MIhjÆŸubjõ)�”}”(hhh]”j[)�”}”(hŒnumber of resources”h]”hŒnumber of resources”…”�”}”(hjåŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jáŸh´MIhjâŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÆŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jáŸh´MIhjŸubjÓ)�”}”(hŒE``const void *data`` platform specific data for this platform device ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hj h]”hŒconst void *data”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MJhjÿŸubjõ)�”}”(hhh]”j[)�”}”(hŒ/platform specific data for this platform device”h]”hŒ/platform specific data for this platform device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´MJhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÿŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´MJhjŸubjÓ)�”}”(hŒ/``size_t size`` size of platform specific data ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hj> h]”hŒ size_t size”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj< ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MKhj8 ubjõ)�”}”(hhh]”j[)�”}”(hŒsize of platform specific data”h]”hŒsize of platform specific data”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jS h´MKhjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj8 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jS h´MKhjŸubjÓ)�”}”(hŒG``struct module *module`` module which will be the owner of the driver ”h]”(jÙ)�”}”(hŒ``struct module *module``”h]”jß)�”}”(hjw h]”hŒstruct module *module”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MLhjq ubjõ)�”}”(hhh]”j[)�”}”(hŒ,module which will be the owner of the driver”h]”hŒ,module which will be the owner of the driver”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŒ h´MLhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjq ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŒ h´MLhjŸubjÓ)�”}”(hŒ,``const char *mod_name`` module name string ”h]”(jÙ)�”}”(hŒ``const char *mod_name``”h]”jß)�”}”(hj° h]”hŒconst char *mod_name”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MMhjª ubjõ)�”}”(hhh]”j[)�”}”(hŒmodule name string”h]”hŒmodule name string”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÅ h´MMhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjª ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÅ h´MMhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjüžubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjë h]”hŒ Description”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MOhjüžubj[)�”}”(hŒ†Use this in legacy-style modules that probe hardware directly and register a single platform device and corresponding platform driver.”h]”hŒ†Use this in legacy-style modules that probe hardware directly and register a single platform device and corresponding platform driver.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MNhjüžubj[)�”}”(hŒeReturns :c:type:`struct platform_device ` pointer on success, or ERR_PTR() on error.”h]”(hŒReturns ”…”�”}”(hj¡h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct platform_device `”h]”jß)�”}”(hj¡h]”hŒstruct platform_device”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”(j�ÄjtŒc-type”eh"]”h$]”h&]”uh1jÞhj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j�ÄŒ refdomain”jtŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j:8j“Äj–ÄŒplatform_device”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MQhj¡ubhŒ+ pointer on success, or ERR_PTR() on error.”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j7¡h´MQhjüžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(__platform_register_drivers (C function)”Œc.__platform_register_drivers”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ‰int __platform_register_drivers (struct platform_driver * const *drivers, unsigned int count, struct module *owner, const char *mod_name)”h]”hù)�”}”(hŒ‡int __platform_register_drivers(struct platform_driver *const *drivers, unsigned int count, struct module *owner, const char *mod_name)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjb¡h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj^¡h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^¡h²hh³jp¡h´Mubj")�”}”(hŒ__platform_register_drivers”h]”j()�”}”(hŒ__platform_register_drivers”h]”hŒ__platform_register_drivers”…”�”}”(hjƒ¡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¡ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj^¡h²hh³jp¡h´Mubj÷7)�”}”(hŒh(struct platform_driver *const *drivers, unsigned int count, struct module *owner, const char *mod_name)”h]”(jý7)�”}”(hŒ&struct platform_driver *const *drivers”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŸ¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj›¡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›¡ubh)�”}”(hhh]”j()�”}”(hŒplatform_driver”h]”hŒplatform_driver”…”�”}”(hj½¡h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjº¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¿¡Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j…¡sbŒc.__platform_register_drivers”†”asbuh1hhj›¡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›¡ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjë¡h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj›¡ubhÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjø¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj›¡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›¡ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj›¡ubj()�”}”(hŒdrivers”h]”hŒdrivers”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj›¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj—¡ubjý7)�”}”(hŒunsigned int count”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj9¢h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj5¢ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5¢ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjU¢h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj5¢ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5¢ubj()�”}”(hŒcount”h]”hŒcount”…”�”}”(hjq¢h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj5¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj—¡ubjý7)�”}”(hŒstruct module *owner”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŠ¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj†¢ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†¢ubh)�”}”(hhh]”j()�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj¨¢h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jª¢Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÙ¡Œc.__platform_register_drivers”†”asbuh1hhj†¢ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†¢ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÔ¢h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj†¢ubj()�”}”(hŒowner”h]”hŒowner”…”�”}”(hjá¢h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj†¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj—¡ubjý7)�”}”(hŒconst char *mod_name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjú¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjö¢ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö¢ubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjö¢ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(h•íj#£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö¢ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj1£h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjö¢ubj()�”}”(hŒmod_name”h]”hŒmod_name”…”�”}”(hj>£h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjö¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj—¡ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj^¡h²hh³jp¡h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjZ¡h²hh³jp¡h´Mubah}”(h]”jU¡ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jp¡h´MhjW¡h²hubjV)�”}”(hhh]”j[)�”}”(hŒ%register an array of platform drivers”h]”hŒ%register an array of platform drivers”…”�”}”(hjh£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mhje£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjW¡h²hh³jp¡h´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj€£j{j€£j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXC**Parameters** ``struct platform_driver * const *drivers`` an array of drivers to register ``unsigned int count`` the number of drivers to register ``struct module *owner`` module owning the drivers ``const char *mod_name`` module name string **Description** Registers platform drivers specified by an array. On failure to register a driver, all previously registered drivers will be unregistered. Callers of this API should use platform_unregister_drivers() to unregister drivers in the reverse order. **Return** 0 on success or a negative error code on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjŠ£h]”hŒ Parameters”…”�”}”(hjŒ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjˆ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mƒhj„£ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒL``struct platform_driver * const *drivers`` an array of drivers to register ”h]”(jÙ)�”}”(hŒ+``struct platform_driver * const *drivers``”h]”jß)�”}”(hj©£h]”hŒ'struct platform_driver * const *drivers”…”�”}”(hj«£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M€hj££ubjõ)�”}”(hhh]”j[)�”}”(hŒan array of drivers to register”h]”hŒan array of drivers to register”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¾£h´M€hj¿£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj££ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¾£h´M€hj £ubjÓ)�”}”(hŒ9``unsigned int count`` the number of drivers to register ”h]”(jÙ)�”}”(hŒ``unsigned int count``”h]”jß)�”}”(hjâ£h]”hŒunsigned int count”…”�”}”(hjä£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjà£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M�hjÜ£ubjõ)�”}”(hhh]”j[)�”}”(hŒ!the number of drivers to register”h]”hŒ!the number of drivers to register”…”�”}”(hjû£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j÷£h´M�hjø£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÜ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j÷£h´M�hj £ubjÓ)�”}”(hŒ3``struct module *owner`` module owning the drivers ”h]”(jÙ)�”}”(hŒ``struct module *owner``”h]”jß)�”}”(hj¤h]”hŒstruct module *owner”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M‚hj¤ubjõ)�”}”(hhh]”j[)�”}”(hŒmodule owning the drivers”h]”hŒmodule owning the drivers”…”�”}”(hj4¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j0¤h´M‚hj1¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j0¤h´M‚hj £ubjÓ)�”}”(hŒ,``const char *mod_name`` module name string ”h]”(jÙ)�”}”(hŒ``const char *mod_name``”h]”jß)�”}”(hjT¤h]”hŒconst char *mod_name”…”�”}”(hjV¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjR¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MƒhjN¤ubjõ)�”}”(hhh]”j[)�”}”(hŒmodule name string”h]”hŒmodule name string”…”�”}”(hjm¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³ji¤h´Mƒhjj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjN¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³ji¤h´Mƒhj £ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj„£ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj�¤h]”hŒ Description”…”�”}”(hj‘¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M…hj„£ubj[)�”}”(hŒóRegisters platform drivers specified by an array. On failure to register a driver, all previously registered drivers will be unregistered. Callers of this API should use platform_unregister_drivers() to unregister drivers in the reverse order.”h]”hŒóRegisters platform drivers specified by an array. On failure to register a driver, all previously registered drivers will be unregistered. Callers of this API should use platform_unregister_drivers() to unregister drivers in the reverse order.”…”�”}”(hj¥¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M„hj„£ubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hj¶¤h]”hŒReturn”…”�”}”(hj¸¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj´¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M‰hj„£ubj[)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj̤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MŠhj„£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(platform_unregister_drivers (C function)”Œc.platform_unregister_drivers”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ^void platform_unregister_drivers (struct platform_driver * const *drivers, unsigned int count)”h]”hù)�”}”(hŒ\void platform_unregister_drivers(struct platform_driver *const *drivers, unsigned int count)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjû¤h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj÷¤h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mªubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷¤h²hh³j ¥h´Mªubj")�”}”(hŒplatform_unregister_drivers”h]”j()�”}”(hŒplatform_unregister_drivers”h]”hŒplatform_unregister_drivers”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj÷¤h²hh³j ¥h´Mªubj÷7)�”}”(hŒ<(struct platform_driver *const *drivers, unsigned int count)”h]”(jý7)�”}”(hŒ&struct platform_driver *const *drivers”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj8¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj4¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4¥ubh)�”}”(hhh]”j()�”}”(hŒplatform_driver”h]”hŒplatform_driver”…”�”}”(hjV¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjS¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jX¥Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j¥sbŒc.platform_unregister_drivers”†”asbuh1hhj4¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4¥ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj„¥h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj4¥ubhÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj‘¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj4¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4¥ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¬¥h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj4¥ubj()�”}”(hŒdrivers”h]”hŒdrivers”…”�”}”(hj¹¥h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj4¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0¥ubjý7)�”}”(hŒunsigned int count”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÒ¥h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÎ¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ¥ubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjî¥h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÎ¥ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ¥ubj()�”}”(hŒcount”h]”hŒcount”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÎ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0¥ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj÷¤h²hh³j ¥h´Mªubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjó¤h²hh³j ¥h´Mªubah}”(h]”jî¤ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j ¥h´Mªhjð¤h²hubjV)�”}”(hhh]”j[)�”}”(hŒ'unregister an array of platform drivers”h]”hŒ'unregister an array of platform drivers”…”�”}”(hj4¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´Mªhj1¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjð¤h²hh³j ¥h´Mªubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjL¦j{jL¦j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX…**Parameters** ``struct platform_driver * const *drivers`` an array of drivers to unregister ``unsigned int count`` the number of drivers to unregister **Description** Unregisters platform drivers specified by an array. This is typically used to complement an earlier call to platform_register_drivers(). Drivers are unregistered in the reverse order in which they were registered.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjV¦h]”hŒ Parameters”…”�”}”(hjX¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjT¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M®hjP¦ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒN``struct platform_driver * const *drivers`` an array of drivers to unregister ”h]”(jÙ)�”}”(hŒ+``struct platform_driver * const *drivers``”h]”jß)�”}”(hju¦h]”hŒ'struct platform_driver * const *drivers”…”�”}”(hjw¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjs¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M«hjo¦ubjõ)�”}”(hhh]”j[)�”}”(hŒ!an array of drivers to unregister”h]”hŒ!an array of drivers to unregister”…”�”}”(hjަh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jЦh´M«hj‹¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjo¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jЦh´M«hjl¦ubjÓ)�”}”(hŒ;``unsigned int count`` the number of drivers to unregister ”h]”(jÙ)�”}”(hŒ``unsigned int count``”h]”jß)�”}”(hj®¦h]”hŒunsigned int count”…”�”}”(hj°¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M¬hj¨¦ubjõ)�”}”(hhh]”j[)�”}”(hŒ#the number of drivers to unregister”h]”hŒ#the number of drivers to unregister”…”�”}”(hjǦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jæh´M¬hjĦubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¨¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jæh´M¬hjl¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjP¦ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjé¦h]”hŒ Description”…”�”}”(hjë¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjç¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M®hjP¦ubj[)�”}”(hŒÕUnregisters platform drivers specified by an array. This is typically used to complement an earlier call to platform_register_drivers(). Drivers are unregistered in the reverse order in which they were registered.”h]”hŒÕUnregisters platform drivers specified by an array. This is typically used to complement an earlier call to platform_register_drivers(). Drivers are unregistered in the reverse order in which they were registered.”…”�”}”(hjÿ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M­hjP¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+platform_find_device_by_driver (C function)”Œ c.platform_find_device_by_driver”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒfstruct device * platform_find_device_by_driver (struct device *start, const struct device_driver *drv)”h]”hù)�”}”(hŒdstruct device *platform_find_device_by_driver(struct device *start, const struct device_driver *drv)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj.§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj*§h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*§h²hh³j;§h´M>ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjM§h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjJ§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jO§Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œplatform_find_device_by_driver”sbŒ c.platform_find_device_by_driver”†”asbuh1hhj*§h²hh³j;§h´M>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*§h²hh³j;§h´M>ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj|§h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj*§h²hh³j;§h´M>ubj")�”}”(hŒplatform_find_device_by_driver”h]”j()�”}”(hjk§h]”hŒplatform_find_device_by_driver”…”�”}”(hj�§h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‰§ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj*§h²hh³j;§h´M>ubj÷7)�”}”(hŒ7(struct device *start, const struct device_driver *drv)”h]”(jý7)�”}”(hŒstruct device *start”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¨§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¤§ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤§ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjƧh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jȧŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”ji§Œ c.platform_find_device_by_driver”†”asbuh1hhj¤§ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤§ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjò§h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¤§ubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hjÿ§h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¤§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj §ubjý7)�”}”(hŒconst struct device_driver *drv”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj3¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjQ¨h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjN¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jS¨Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”ji§Œ c.platform_find_device_by_driver”†”asbuh1hhj¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj}¨h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¨ubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjЍh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj §ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj*§h²hh³j;§h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj&§h²hh³j;§h´M>ubah}”(h]”j!§ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j;§h´M>hj#§h²hubjV)�”}”(hhh]”j[)�”}”(hŒ+Find a platform device with a given driver.”h]”hŒ+Find a platform device with a given driver.”…”�”}”(hj´¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M>hj±¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj#§h²hh³j;§h´M>ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj̨j{j̨j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ•**Parameters** ``struct device *start`` The device to start the search from. ``const struct device_driver *drv`` The device driver to look for.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÖ¨h]”hŒ Parameters”…”�”}”(hjبh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÔ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MBhjШubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ>``struct device *start`` The device to start the search from. ”h]”(jÙ)�”}”(hŒ``struct device *start``”h]”jß)�”}”(hjõ¨h]”hŒstruct device *start”…”�”}”(hj÷¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjó¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´M@hjï¨ubjõ)�”}”(hhh]”j[)�”}”(hŒ$The device to start the search from.”h]”hŒ$The device to start the search from.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j ©h´M@hj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjï¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j ©h´M@hjì¨ubjÓ)�”}”(hŒB``const struct device_driver *drv`` The device driver to look for.”h]”(jÙ)�”}”(hŒ#``const struct device_driver *drv``”h]”jß)�”}”(hj.©h]”hŒconst struct device_driver *drv”…”�”}”(hj0©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MBhj(©ubjõ)�”}”(hhh]”j[)�”}”(hŒThe device driver to look for.”h]”hŒThe device driver to look for.”…”�”}”(hjG©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:66: ./drivers/base/platform.c”h´MAhjD©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj(©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jC©h´MBhjì¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjШubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$bus_find_device_by_name (C function)”Œc.bus_find_device_by_name”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒlstruct device * bus_find_device_by_name (const struct bus_type *bus, struct device *start, const char *name)”h]”hù)�”}”(hŒjstruct device *bus_find_device_by_name(const struct bus_type *bus, struct device *start, const char *name)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjˆ©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj„©h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„©h²hh³j•©h´K£ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj§©h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¤©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j©©Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_device_by_name”sbŒc.bus_find_device_by_name”†”asbuh1hhj„©h²hh³j•©h´K£ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„©h²hh³j•©h´K£ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖ©h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj„©h²hh³j•©h´K£ubj")�”}”(hŒbus_find_device_by_name”h]”j()�”}”(hjÅ©h]”hŒbus_find_device_by_name”…”�”}”(hjç©h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjã©ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj„©h²hh³j•©h´K£ubj÷7)�”}”(hŒD(const struct bus_type *bus, struct device *start, const char *name)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjþ©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ©ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjþ©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ©ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj;ªh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj8ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j=ªŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jéŒc.bus_find_device_by_name”†”asbuh1hhjþ©ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ©ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjgªh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjþ©ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjtªh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjú©ubjý7)�”}”(hŒstruct device *start”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj‰ªubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ªubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj«ªh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¨ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j­ªŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jéŒc.bus_find_device_by_name”†”asbuh1hhj‰ªubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɪh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ªubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjתh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj‰ªubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hjäªh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‰ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjú©ubjý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjýªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjùªubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùªubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjùªubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùªubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj4«h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjùªubj()�”}”(hŒname”h]”hŒname”…”�”}”(hjA«h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjùªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjú©ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj„©h²hh³j•©h´K£ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj€©h²hh³j•©h´K£ubah}”(h]”j{©ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j•©h´K£hj}©h²hubjV)�”}”(hhh]”j[)�”}”(hŒDdevice iterator for locating a particular device of a specific name.”h]”hŒDdevice iterator for locating a particular device of a specific name.”…”�”}”(hjk«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K£hjh«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj}©h²hh³j•©h´K£ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjƒ«j{jƒ«j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒž**Parameters** ``const struct bus_type *bus`` bus type ``struct device *start`` Device to begin with ``const char *name`` name of the device to match”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj�«h]”hŒ Parameters”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‹«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K§hj‡«ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hj¬«h]”hŒconst struct bus_type *bus”…”�”}”(hj®«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjª«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K¥hj¦«ubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hjÅ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÁ«h´K¥hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¦«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÁ«h´K¥hj£«ubjÓ)�”}”(hŒ.``struct device *start`` Device to begin with ”h]”(jÙ)�”}”(hŒ``struct device *start``”h]”jß)�”}”(hjå«h]”hŒstruct device *start”…”�”}”(hjç«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjã«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K¦hjß«ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to begin with”h]”hŒDevice to begin with”…”�”}”(hjþ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jú«h´K¦hjû«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjß«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jú«h´K¦hj£«ubjÓ)�”}”(hŒ0``const char *name`` name of the device to match”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj¬h]”hŒconst char *name”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K¨hj¬ubjõ)�”}”(hhh]”j[)�”}”(hŒname of the device to match”h]”hŒname of the device to match”…”�”}”(hj7¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K§hj4¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j3¬h´K¨hj£«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj‡«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'bus_find_device_by_of_node (C function)”Œc.bus_find_device_by_of_node”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒestruct device * bus_find_device_by_of_node (const struct bus_type *bus, const struct device_node *np)”h]”hù)�”}”(hŒcstruct device *bus_find_device_by_of_node(const struct bus_type *bus, const struct device_node *np)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjx¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjt¬h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K±ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt¬h²hh³j…¬h´K±ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj—¬h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj”¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j™¬Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_device_by_of_node”sbŒc.bus_find_device_by_of_node”†”asbuh1hhjt¬h²hh³j…¬h´K±ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt¬h²hh³j…¬h´K±ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjƬh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjt¬h²hh³j…¬h´K±ubj")�”}”(hŒbus_find_device_by_of_node”h]”j()�”}”(hjµ¬h]”hŒbus_find_device_by_of_node”…”�”}”(hj׬h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÓ¬ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjt¬h²hh³j…¬h´K±ubj÷7)�”}”(hŒ:(const struct bus_type *bus, const struct device_node *np)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjò¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjî¬ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¬ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjî¬ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¬ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj+­h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj(­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j-­Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j³¬Œc.bus_find_device_by_of_node”†”asbuh1hhjî¬ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¬ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjW­h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjî¬ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjd­h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjî¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjê¬ubjý7)�”}”(hŒconst struct device_node *np”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj}­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjy­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy­ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj˜­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjy­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy­ubh)�”}”(hhh]”j()�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hj¶­h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj³­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¸­Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j³¬Œc.bus_find_device_by_of_node”†”asbuh1hhjy­ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy­ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjâ­h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjy­ubj()�”}”(hŒnp”h]”hŒnp”…”�”}”(hjï­h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjy­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjê¬ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjt¬h²hh³j…¬h´K±ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjp¬h²hh³j…¬h´K±ubah}”(h]”jk¬ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j…¬h´K±hjm¬h²hubjV)�”}”(hhh]”j[)�”}”(hŒFdevice iterator for locating a particular device matching the of_node.”h]”hŒFdevice iterator for locating a particular device matching the of_node.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K±hj®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjm¬h²hh³j…¬h´K±ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj1®j{j1®j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ}**Parameters** ``const struct bus_type *bus`` bus type ``const struct device_node *np`` of_node of the device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj;®h]”hŒ Parameters”…”�”}”(hj=®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj9®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´Kµhj5®ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjZ®h]”hŒconst struct bus_type *bus”…”�”}”(hj\®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjX®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K³hjT®ubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hjs®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jo®h´K³hjp®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjT®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jo®h´K³hjQ®ubjÓ)�”}”(hŒ@``const struct device_node *np`` of_node of the device to match.”h]”(jÙ)�”}”(hŒ ``const struct device_node *np``”h]”jß)�”}”(hj“®h]”hŒconst struct device_node *np”…”�”}”(hj•®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‘®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´Kµhj�®ubjõ)�”}”(hhh]”j[)�”}”(hŒof_node of the device to match.”h]”hŒof_node of the device to match.”…”�”}”(hj¬®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K´hj©®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¨®h´KµhjQ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj5®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&bus_find_device_by_fwnode (C function)”Œc.bus_find_device_by_fwnode”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒjstruct device * bus_find_device_by_fwnode (const struct bus_type *bus, const struct fwnode_handle *fwnode)”h]”hù)�”}”(hŒhstruct device *bus_find_device_by_fwnode(const struct bus_type *bus, const struct fwnode_handle *fwnode)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjí®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjé®h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K½ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé®h²hh³jú®h´K½ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¯Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_device_by_fwnode”sbŒc.bus_find_device_by_fwnode”†”asbuh1hhjé®h²hh³jú®h´K½ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé®h²hh³jú®h´K½ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj;¯h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjé®h²hh³jú®h´K½ubj")�”}”(hŒbus_find_device_by_fwnode”h]”j()�”}”(hj*¯h]”hŒbus_find_device_by_fwnode”…”�”}”(hjL¯h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjH¯ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjé®h²hh³jú®h´K½ubj÷7)�”}”(hŒ@(const struct bus_type *bus, const struct fwnode_handle *fwnode)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjg¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjc¯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc¯ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‚¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjc¯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc¯ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¢¯Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j(¯Œc.bus_find_device_by_fwnode”†”asbuh1hhjc¯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc¯ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj̯h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjc¯ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjÙ¯h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjc¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj_¯ubjý7)�”}”(hŒ"const struct fwnode_handle *fwnode”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjò¯h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjî¯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¯ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjî¯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¯ubh)�”}”(hhh]”j()�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj+°h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj(°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j-°Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j(¯Œc.bus_find_device_by_fwnode”†”asbuh1hhjî¯ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¯ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjW°h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjî¯ubj()�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjd°h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjî¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj_¯ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjé®h²hh³jú®h´K½ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjå®h²hh³jú®h´K½ubah}”(h]”jà®ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jú®h´K½hjâ®h²hubjV)�”}”(hhh]”j[)�”}”(hŒEdevice iterator for locating a particular device matching the fwnode.”h]”hŒEdevice iterator for locating a particular device matching the fwnode.”…”�”}”(hjްh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K½hj‹°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjâ®h²hh³jú®h´K½ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¦°j{j¦°j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ‚**Parameters** ``const struct bus_type *bus`` bus type ``const struct fwnode_handle *fwnode`` fwnode of the device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj°°h]”hŒ Parameters”…”�”}”(hj²°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj®°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÁhjª°ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjϰh]”hŒconst struct bus_type *bus”…”�”}”(hjѰh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjͰubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K¿hjɰubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hjè°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jä°h´K¿hjå°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjɰubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jä°h´K¿hjưubjÓ)�”}”(hŒE``const struct fwnode_handle *fwnode`` fwnode of the device to match.”h]”(jÙ)�”}”(hŒ&``const struct fwnode_handle *fwnode``”h]”jß)�”}”(hj±h]”hŒ"const struct fwnode_handle *fwnode”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÁhj±ubjõ)�”}”(hhh]”j[)�”}”(hŒfwnode of the device to match.”h]”hŒfwnode of the device to match.”…”�”}”(hj!±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÀhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j±h´KÁhjưubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjª°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$bus_find_device_by_devt (C function)”Œc.bus_find_device_by_devt”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPstruct device * bus_find_device_by_devt (const struct bus_type *bus, dev_t devt)”h]”hù)�”}”(hŒNstruct device *bus_find_device_by_devt(const struct bus_type *bus, dev_t devt)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjb±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj^±h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÉubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^±h²hh³jo±h´KÉubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj�±h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj~±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jƒ±Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_device_by_devt”sbŒc.bus_find_device_by_devt”†”asbuh1hhj^±h²hh³jo±h´KÉubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^±h²hh³jo±h´KÉubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj°±h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj^±h²hh³jo±h´KÉubj")�”}”(hŒbus_find_device_by_devt”h]”j()�”}”(hjŸ±h]”hŒbus_find_device_by_devt”…”�”}”(hjÁ±h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½±ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj^±h²hh³jo±h´KÉubj÷7)�”}”(hŒ((const struct bus_type *bus, dev_t devt)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjܱh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjرubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjرubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj÷±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjرubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjرubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j²Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j�±Œc.bus_find_device_by_devt”†”asbuh1hhjرubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjرubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjA²h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjرubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjN²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjرubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÔ±ubjý7)�”}”(hŒ dev_t devt”h]”(h)�”}”(hhh]”j()�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjj²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjg²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jl²Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j�±Œc.bus_find_device_by_devt”†”asbuh1hhjc²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc²ubj()�”}”(hŒdevt”h]”hŒdevt”…”�”}”(hj–²h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjc²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÔ±ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj^±h²hh³jo±h´KÉubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjZ±h²hh³jo±h´KÉubah}”(h]”jU±ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jo±h´KÉhjW±h²hubjV)�”}”(hhh]”j[)�”}”(hŒJdevice iterator for locating a particular device matching the device type.”h]”hŒJdevice iterator for locating a particular device matching the device type.”…”�”}”(hjÀ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÉhj½²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjW±h²hh³jo±h´KÉubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjزj{jزj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒo**Parameters** ``const struct bus_type *bus`` bus type ``dev_t devt`` device type of the device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjâ²h]”hŒ Parameters”…”�”}”(hjä²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjà²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÍhjܲubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hj³h]”hŒconst struct bus_type *bus”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÿ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KËhjû²ubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j³h´KËhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjû²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j³h´KËhjø²ubjÓ)�”}”(hŒ2``dev_t devt`` device type of the device to match.”h]”(jÙ)�”}”(hŒ``dev_t devt``”h]”jß)�”}”(hj:³h]”hŒ dev_t devt”…”�”}”(hj<³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÍhj4³ubjõ)�”}”(hhh]”j[)�”}”(hŒ#device type of the device to match.”h]”hŒ#device type of the device to match.”…”�”}”(hjS³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÌhjP³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj4³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jO³h´KÍhjø²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjܲubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!bus_find_next_device (C function)”Œc.bus_find_next_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒUstruct device * bus_find_next_device (const struct bus_type *bus, struct device *cur)”h]”hù)�”}”(hŒSstruct device *bus_find_next_device(const struct bus_type *bus, struct device *cur)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj”³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj�³h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�³h²hh³j¡³h´KÕubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj³³h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj°³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jµ³Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_next_device”sbŒc.bus_find_next_device”†”asbuh1hhj�³h²hh³j¡³h´KÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�³h²hh³j¡³h´KÕubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjâ³h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj�³h²hh³j¡³h´KÕubj")�”}”(hŒbus_find_next_device”h]”j()�”}”(hjѳh]”hŒbus_find_next_device”…”�”}”(hjó³h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjï³ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj�³h²hh³j¡³h´KÕubj÷7)�”}”(hŒ0(const struct bus_type *bus, struct device *cur)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj ´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ´ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj)´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj ´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ´ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjG´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjD´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jI´Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jϳŒc.bus_find_next_device”†”asbuh1hhj ´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ´ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjs´h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj ´ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hj€´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj´ubjý7)�”}”(hŒstruct device *cur”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj™´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj•´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•´ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj·´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¹´Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jϳŒc.bus_find_next_device”†”asbuh1hhj•´ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•´ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjã´h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj•´ubj()�”}”(hŒcur”h]”hŒcur”…”�”}”(hjð´h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj´ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj�³h²hh³j¡³h´KÕubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjŒ³h²hh³j¡³h´KÕubah}”(h]”j‡³ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¡³h´KÕhj‰³h²hubjV)�”}”(hhh]”j[)�”}”(hŒ9Find the next device after a given device in a given bus.”h]”hŒ9Find the next device after a given device in a given bus.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÕhjµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‰³h²hh³j¡³h´KÕubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj2µj{j2µj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒt**Parameters** ``const struct bus_type *bus`` bus type ``struct device *cur`` device to begin the search with.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj<µh]”hŒ Parameters”…”�”}”(hj>µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj:µubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÙhj6µubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hj[µh]”hŒconst struct bus_type *bus”…”�”}”(hj]µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYµubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´K×hjUµubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hjtµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jpµh´K×hjqµubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjUµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jpµh´K×hjRµubjÓ)�”}”(hŒ7``struct device *cur`` device to begin the search with.”h]”(jÙ)�”}”(hŒ``struct device *cur``”h]”jß)�”}”(hj”µh]”hŒstruct device *cur”…”�”}”(hj–µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj’µubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KÙhj޵ubjõ)�”}”(hhh]”j[)�”}”(hŒ device to begin the search with.”h]”hŒ device to begin the search with.”…”�”}”(hj­µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KØhjªµubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj޵ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j©µh´KÙhjRµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj6µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(bus_find_device_by_acpi_dev (C function)”Œc.bus_find_device_by_acpi_dev”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhstruct device * bus_find_device_by_acpi_dev (const struct bus_type *bus, const struct acpi_device *adev)”h]”hù)�”}”(hŒfstruct device *bus_find_device_by_acpi_dev(const struct bus_type *bus, const struct acpi_device *adev)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjîµh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjêµh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´Käubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêµh²hh³jûµh´Käubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¶Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_device_by_acpi_dev”sbŒc.bus_find_device_by_acpi_dev”†”asbuh1hhjêµh²hh³jûµh´Käubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêµh²hh³jûµh´KäubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj<¶h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjêµh²hh³jûµh´Käubj")�”}”(hŒbus_find_device_by_acpi_dev”h]”j()�”}”(hj+¶h]”hŒbus_find_device_by_acpi_dev”…”�”}”(hjM¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjI¶ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjêµh²hh³jûµh´Käubj÷7)�”}”(hŒ<(const struct bus_type *bus, const struct acpi_device *adev)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjh¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjd¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd¶ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjƒ¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjd¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd¶ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj¡¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjž¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j£¶Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j)¶Œc.bus_find_device_by_acpi_dev”†”asbuh1hhjd¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd¶ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjͶh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjd¶ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjÚ¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjd¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj`¶ubjý7)�”}”(hŒconst struct acpi_device *adev”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjó¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjï¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï¶ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjï¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï¶ubh)�”}”(hhh]”j()�”}”(hŒ acpi_device”h]”hŒ acpi_device”…”�”}”(hj,·h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj)·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j.·Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j)¶Œc.bus_find_device_by_acpi_dev”†”asbuh1hhjï¶ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï¶ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjX·h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjï¶ubj()�”}”(hŒadev”h]”hŒadev”…”�”}”(hje·h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjï¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj`¶ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjêµh²hh³jûµh´Käubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjæµh²hh³jûµh´Käubah}”(h]”jáµah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jûµh´Kähjãµh²hubjV)�”}”(hhh]”j[)�”}”(hŒTdevice iterator for locating a particular device matching the ACPI COMPANION device.”h]”hŒTdevice iterator for locating a particular device matching the ACPI COMPANION device.”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KähjŒ·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjãµh²hh³jûµh´Käubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj§·j{j§·j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ**Parameters** ``const struct bus_type *bus`` bus type ``const struct acpi_device *adev`` ACPI COMPANION device to match.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj±·h]”hŒ Parameters”…”�”}”(hj³·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¯·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´Kèhj«·ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjзh]”hŒconst struct bus_type *bus”…”�”}”(hjÒ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjηubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´KæhjÊ·ubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hjé·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jå·h´Kæhjæ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÊ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jå·h´KæhjÇ·ubjÓ)�”}”(hŒB``const struct acpi_device *adev`` ACPI COMPANION device to match.”h]”(jÙ)�”}”(hŒ"``const struct acpi_device *adev``”h]”jß)�”}”(hj ¸h]”hŒconst struct acpi_device *adev”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´Kèhj¸ubjõ)�”}”(hhh]”j[)�”}”(hŒACPI COMPANION device to match.”h]”hŒACPI COMPANION device to match.”…”�”}”(hj"¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:69: ./include/linux/device/bus.h”h´Kçhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¸h´KèhjÇ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj«·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_for_each_dev (C function)”Œc.bus_for_each_dev”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒeint bus_for_each_dev (const struct bus_type *bus, struct device *start, void *data, device_iter_t fn)”h]”hù)�”}”(hŒdint bus_for_each_dev(const struct bus_type *bus, struct device *start, void *data, device_iter_t fn)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjc¸h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj_¸h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M_ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_¸h²hh³jq¸h´M_ubj")�”}”(hŒbus_for_each_dev”h]”j()�”}”(hŒbus_for_each_dev”h]”hŒbus_for_each_dev”…”�”}”(hj„¸h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj€¸ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj_¸h²hh³jq¸h´M_ubj÷7)�”}”(hŒP(const struct bus_type *bus, struct device *start, void *data, device_iter_t fn)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjœ¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ¸ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj»¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjœ¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjȸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ¸ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjÙ¸h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÖ¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÛ¸Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j†¸sbŒc.bus_for_each_dev”†”asbuh1hhjœ¸ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ¸ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjœ¸ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjœ¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj˜¸ubjý7)�”}”(hŒstruct device *start”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj-¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj)¹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)¹ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjK¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjH¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jM¹Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jõ¸Œc.bus_for_each_dev”†”asbuh1hhj)¹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)¹ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjw¹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj)¹ubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hj„¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj)¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj˜¸ubjý7)�”}”(hŒ void *data”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj™¹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™¹ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¹¹h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj™¹ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjƹh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj™¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj˜¸ubjý7)�”}”(hŒdevice_iter_t fn”h]”(h)�”}”(hhh]”j()�”}”(hŒ device_iter_t”h]”hŒ device_iter_t”…”�”}”(hjâ¹h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjß¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j乌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jõ¸Œc.bus_for_each_dev”†”asbuh1hhjÛ¹ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ¹ubj()�”}”(hŒfn”h]”hŒfn”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÛ¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj˜¸ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj_¸h²hh³jq¸h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj[¸h²hh³jq¸h´M_ubah}”(h]”jV¸ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jq¸h´M_hjX¸h²hubjV)�”}”(hhh]”j[)�”}”(hŒdevice iterator.”h]”hŒdevice iterator.”…”�”}”(hj8ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M_hj5ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjX¸h²hh³jq¸h´M_ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjPºj{jPºj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXç**Parameters** ``const struct bus_type *bus`` bus type. ``struct device *start`` device to start iterating from. ``void *data`` data for the callback. ``device_iter_t fn`` function to be called for each device. **Description** Iterate over **bus**'s list of devices, and call **fn** for each, passing it **data**. If **start** is not NULL, we use that device to begin iterating from. We check the return of **fn** each time. If it returns anything other than 0, we break out and return that value. **NOTE** The device that returns a non-zero value is not retained in any way, nor is its refcount incremented. If the caller needs to retain this data, it should do so, and increment the reference count in the supplied callback.”•Yh]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjZºh]”hŒ Parameters”…”�”}”(hj\ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjXºubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MchjTºubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const struct bus_type *bus`` bus type. ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjyºh]”hŒconst struct bus_type *bus”…”�”}”(hj{ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjwºubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M`hjsºubjõ)�”}”(hhh]”j[)�”}”(hŒ bus type.”h]”hŒ bus type.”…”�”}”(hj’ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŽºh´M`hj�ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjsºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŽºh´M`hjpºubjÓ)�”}”(hŒ9``struct device *start`` device to start iterating from. ”h]”(jÙ)�”}”(hŒ``struct device *start``”h]”jß)�”}”(hj²ºh]”hŒstruct device *start”…”�”}”(hj´ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj°ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mahj¬ºubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to start iterating from.”h]”hŒdevice to start iterating from.”…”�”}”(hj˺h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jǺh´MahjȺubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¬ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jǺh´MahjpºubjÓ)�”}”(hŒ&``void *data`` data for the callback. ”h]”(jÙ)�”}”(hŒ``void *data``”h]”jß)�”}”(hjëºh]”hŒ void *data”…”�”}”(hjíºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjéºubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mbhjåºubjõ)�”}”(hhh]”j[)�”}”(hŒdata for the callback.”h]”hŒdata for the callback.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j»h´Mbhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjåºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j»h´MbhjpºubjÓ)�”}”(hŒ<``device_iter_t fn`` function to be called for each device. ”h]”(jÙ)�”}”(hŒ``device_iter_t fn``”h]”jß)�”}”(hj$»h]”hŒdevice_iter_t fn”…”�”}”(hj&»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj"»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mchj»ubjõ)�”}”(hhh]”j[)�”}”(hŒ&function to be called for each device.”h]”hŒ&function to be called for each device.”…”�”}”(hj=»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j9»h´Mchj:»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j9»h´Mchjpºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjTºubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj_»h]”hŒ Description”…”�”}”(hja»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj]»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MehjTºubj[)�”}”(hŒœIterate over **bus**'s list of devices, and call **fn** for each, passing it **data**. If **start** is not NULL, we use that device to begin iterating from.”h]”(hŒ Iterate over ”…”�”}”(hju»h²hh³Nh´NubjŠ)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hj}»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hju»ubhŒ’s list of devices, and call ”…”�”}”(hju»h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hju»ubhŒ for each, passing it ”…”�”}”(hju»h²hh³Nh´NubjŠ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj¡»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hju»ubhŒ. If ”…”�”}”(hju»h²hh³Nh´NubjŠ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hj³»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hju»ubhŒ9 is not NULL, we use that device to begin iterating from.”…”�”}”(hju»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MdhjTºubj[)�”}”(hŒqWe check the return of **fn** each time. If it returns anything other than 0, we break out and return that value.”h]”(hŒWe check the return of ”…”�”}”(hjÌ»h²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjÔ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÌ»ubhŒT each time. If it returns anything other than 0, we break out and return that value.”…”�”}”(hjÌ»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MhhjTºubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjï»h]”hŒNOTE”…”�”}”(hjñ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjí»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MkhjTºubj[)�”}”(hŒÛThe device that returns a non-zero value is not retained in any way, nor is its refcount incremented. If the caller needs to retain this data, it should do so, and increment the reference count in the supplied callback.”h]”hŒÛThe device that returns a non-zero value is not retained in any way, nor is its refcount incremented. If the caller needs to retain this data, it should do so, and increment the reference count in the supplied callback.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MlhjTºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_find_device (C function)”Œc.bus_find_device”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒzstruct device * bus_find_device (const struct bus_type *bus, struct device *start, const void *data, device_match_t match)”h]”hù)�”}”(hŒxstruct device *bus_find_device(const struct bus_type *bus, struct device *start, const void *data, device_match_t match)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj4¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj0¼h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M‡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0¼h²hh³jA¼h´M‡ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjS¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjP¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jU¼Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_find_device”sbŒc.bus_find_device”†”asbuh1hhj0¼h²hh³jA¼h´M‡ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0¼h²hh³jA¼h´M‡ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‚¼h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj0¼h²hh³jA¼h´M‡ubj")�”}”(hŒbus_find_device”h]”j()�”}”(hjq¼h]”hŒbus_find_device”…”�”}”(hj“¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj�¼ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj0¼h²hh³jA¼h´M‡ubj÷7)�”}”(hŒZ(const struct bus_type *bus, struct device *start, const void *data, device_match_t match)”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj®¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjª¼ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª¼ubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjɼh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjª¼ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª¼ubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjç¼h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjä¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j鼌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jo¼Œc.bus_find_device”†”asbuh1hhjª¼ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª¼ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjª¼ubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjª¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¦¼ubjý7)�”}”(hŒstruct device *start”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj9½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj5½ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5½ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjW½h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjT½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jY½Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jo¼Œc.bus_find_device”†”asbuh1hhj5½ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5½ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjƒ½h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj5½ubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj5½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¦¼ubjý7)�”}”(hŒconst void *data”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj©½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¥½ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥½ubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjĽh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¥½ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥½ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjà½h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¥½ubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjí½h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¦¼ubjý7)�”}”(hŒdevice_match_t match”h]”(h)�”}”(hhh]”j()�”}”(hŒdevice_match_t”h]”hŒdevice_match_t”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j ¾Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jo¼Œc.bus_find_device”†”asbuh1hhj¾ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubj()�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj5¾h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¦¼ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj0¼h²hh³jA¼h´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj,¼h²hh³jA¼h´M‡ubah}”(h]”j'¼ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jA¼h´M‡hj)¼h²hubjV)�”}”(hhh]”j[)�”}”(hŒ1device iterator for locating a particular device.”h]”hŒ1device iterator for locating a particular device.”…”�”}”(hj_¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M‡hj\¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj)¼h²hh³jA¼h´M‡ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjw¾j{jw¾j|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX_**Parameters** ``const struct bus_type *bus`` bus type ``struct device *start`` Device to begin with ``const void *data`` Data to pass to match function ``device_match_t match`` Callback function to check device **Description** This is similar to the bus_for_each_dev() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback. The callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj�¾h]”hŒ Parameters”…”�”}”(hjƒ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M‹hj{¾ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ(``const struct bus_type *bus`` bus type ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hj ¾h]”hŒconst struct bus_type *bus”…”�”}”(hj¢¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjž¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mˆhjš¾ubjõ)�”}”(hhh]”j[)�”}”(hŒbus type”h]”hŒbus type”…”�”}”(hj¹¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jµ¾h´Mˆhj¶¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjš¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jµ¾h´Mˆhj—¾ubjÓ)�”}”(hŒ.``struct device *start`` Device to begin with ”h]”(jÙ)�”}”(hŒ``struct device *start``”h]”jß)�”}”(hjÙ¾h]”hŒstruct device *start”…”�”}”(hjÛ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj×¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M‰hjÓ¾ubjõ)�”}”(hhh]”j[)�”}”(hŒDevice to begin with”h]”hŒDevice to begin with”…”�”}”(hjò¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jî¾h´M‰hjï¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÓ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jî¾h´M‰hj—¾ubjÓ)�”}”(hŒ4``const void *data`` Data to pass to match function ”h]”(jÙ)�”}”(hŒ``const void *data``”h]”jß)�”}”(hj¿h]”hŒconst void *data”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MŠhj ¿ubjõ)�”}”(hhh]”j[)�”}”(hŒData to pass to match function”h]”hŒData to pass to match function”…”�”}”(hj+¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j'¿h´MŠhj(¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j'¿h´MŠhj—¾ubjÓ)�”}”(hŒ;``device_match_t match`` Callback function to check device ”h]”(jÙ)�”}”(hŒ``device_match_t match``”h]”jß)�”}”(hjK¿h]”hŒdevice_match_t match”…”�”}”(hjM¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjI¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M‹hjE¿ubjõ)�”}”(hhh]”j[)�”}”(hŒ!Callback function to check device”h]”hŒ!Callback function to check device”…”�”}”(hjd¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j`¿h´M‹hja¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjE¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j`¿h´M‹hj—¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj{¾ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj†¿h]”hŒ Description”…”�”}”(hjˆ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj„¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M�hj{¾ubj[)�”}”(hŒ¨This is similar to the bus_for_each_dev() function above, but it returns a reference to a device that is 'found' for later use, as determined by the **match** callback.”h]”(hŒ™This is similar to the bus_for_each_dev() function above, but it returns a reference to a device that is ‘found’ for later use, as determined by the ”…”�”}”(hjœ¿h²hh³Nh´NubjŠ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj¤¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjœ¿ubhŒ callback.”…”�”}”(hjœ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MŒhj{¾ubj[)�”}”(hŒÃThe callback should return 0 if the device doesn't match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”h]”hŒÅThe callback should return 0 if the device doesn’t match and non-zero if it does. If the callback returns non-zero, this function will return to the caller and not iterate over any more devices.”…”�”}”(hj½¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M�hj{¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_for_each_drv (C function)”Œc.bus_for_each_drv”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ…int bus_for_each_drv (const struct bus_type *bus, struct device_driver *start, void *data, int (*fn)(struct device_driver *, void *))”h]”hù)�”}”(hŒ‚int bus_for_each_drv(const struct bus_type *bus, struct device_driver *start, void *data, int (*fn)(struct device_driver*, void*))”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjì¿h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjè¿h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÔubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè¿h²hh³jú¿h´MÔubj")�”}”(hŒbus_for_each_drv”h]”j()�”}”(hŒbus_for_each_drv”h]”hŒbus_for_each_drv”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj Àubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjè¿h²hh³jú¿h´MÔubj÷7)�”}”(hŒn(const struct bus_type *bus, struct device_driver *start, void *data, int (*fn)(struct device_driver*, void*))”h]”(jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj)Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj%Àubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%Àubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjDÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj%Àubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%Àubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjbÀh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj_Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jdÀŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÀsbŒc.bus_for_each_drv”†”asbuh1hhj%Àubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ÀubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj%Àubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj%Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj!Àubjý7)�”}”(hŒstruct device_driver *start”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¶Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj²Àubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²Àubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjÔÀh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÑÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÖÀŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j~ÀŒc.bus_for_each_drv”†”asbuh1hhj²Àubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²ÀubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj²Àubj()�”}”(hŒstart”h]”hŒstart”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj²Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj!Àubjý7)�”}”(hŒ void *data”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&Áh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj"Áubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ÁubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjBÁh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj"Áubj()�”}”(hŒdata”h]”hŒdata”…”�”}”(hjOÁh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj"Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj!Àubjý7)�”}”(hŒ'int (*fn)(struct device_driver*, void*)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjhÁh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjdÁubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdÁubjW8)�”}”(hjÙ—h]”hŒ(”…”�”}”(hj„Áh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj‘Áh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubj()�”}”(hŒfn”h]”hŒfn”…”�”}”(hjžÁh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjdÁubjW8)�”}”(hj˜h]”hŒ)”…”�”}”(hj¬Áh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubjW8)�”}”(hjÙ—h]”hŒ(”…”�”}”(hj¹Áh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÆÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjdÁubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdÁubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjäÁh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjáÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jæÁŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j~ÀŒc.bus_for_each_drv”†”asbuh1hhjdÁubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubjW8)�”}”(hŒ,”h]”hŒ,”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdÁubj¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+Âh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjdÁubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj9Âh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubjW8)�”}”(hj˜h]”hŒ)”…”�”}”(hjFÂh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjdÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj!Àubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjè¿h²hh³jú¿h´MÔubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjä¿h²hh³jú¿h´MÔubah}”(h]”jß¿ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jú¿h´MÔhjá¿h²hubjV)�”}”(hhh]”j[)�”}”(hŒdriver iterator”h]”hŒdriver iterator”…”�”}”(hjoÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÔhjlÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjá¿h²hh³jú¿h´MÔubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj‡Âj{j‡Âj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXS**Parameters** ``const struct bus_type *bus`` bus we're dealing with. ``struct device_driver *start`` driver to start iterating on. ``void *data`` data to pass to the callback. ``int (*fn)(struct device_driver *, void *)`` function to call for each driver. **Description** This is nearly identical to the device iterator above. We iterate over each driver that belongs to **bus**, and call **fn** for each. If **fn** returns anything but 0, we break out and return it. If **start** is not NULL, we use it as the head of the list. **NOTE** we don't return the driver that returns a non-zero value, nor do we leave the reference count incremented for that driver. If the caller needs to know that info, it must set it in the callback. It must also be sure to increment the refcount so it doesn't disappear before returning to the caller.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‘Âh]”hŒ Parameters”…”�”}”(hj“Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MØhj‹ÂubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ7``const struct bus_type *bus`` bus we're dealing with. ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hj°Âh]”hŒconst struct bus_type *bus”…”�”}”(hj²Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj®Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÕhjªÂubjõ)�”}”(hhh]”j[)�”}”(hŒbus we're dealing with.”h]”hŒbus we’re dealing with.”…”�”}”(hjÉÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÅÂh´MÕhjÆÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjªÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÅÂh´MÕhj§ÂubjÓ)�”}”(hŒ>``struct device_driver *start`` driver to start iterating on. ”h]”(jÙ)�”}”(hŒ``struct device_driver *start``”h]”jß)�”}”(hjéÂh]”hŒstruct device_driver *start”…”�”}”(hjëÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjçÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÖhjãÂubjõ)�”}”(hhh]”j[)�”}”(hŒdriver to start iterating on.”h]”hŒdriver to start iterating on.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jþÂh´MÖhjÿÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjãÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jþÂh´MÖhj§ÂubjÓ)�”}”(hŒ-``void *data`` data to pass to the callback. ”h]”(jÙ)�”}”(hŒ``void *data``”h]”jß)�”}”(hj"Ãh]”hŒ void *data”…”�”}”(hj$Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M×hjÃubjõ)�”}”(hhh]”j[)�”}”(hŒdata to pass to the callback.”h]”hŒdata to pass to the callback.”…”�”}”(hj;Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j7Ãh´M×hj8Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j7Ãh´M×hj§ÂubjÓ)�”}”(hŒP``int (*fn)(struct device_driver *, void *)`` function to call for each driver. ”h]”(jÙ)�”}”(hŒ-``int (*fn)(struct device_driver *, void *)``”h]”jß)�”}”(hj[Ãh]”hŒ)int (*fn)(struct device_driver *, void *)”…”�”}”(hj]Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MØhjUÃubjõ)�”}”(hhh]”j[)�”}”(hŒ!function to call for each driver.”h]”hŒ!function to call for each driver.”…”�”}”(hjtÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jpÃh´MØhjqÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjUÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jpÃh´MØhj§Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj‹Âubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj–Ãh]”hŒ Description”…”�”}”(hj˜Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj”Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÚhj‹Âubj[)�”}”(hXThis is nearly identical to the device iterator above. We iterate over each driver that belongs to **bus**, and call **fn** for each. If **fn** returns anything but 0, we break out and return it. If **start** is not NULL, we use it as the head of the list.”h]”(hŒcThis is nearly identical to the device iterator above. We iterate over each driver that belongs to ”…”�”}”(hj¬Ãh²hh³Nh´NubjŠ)�”}”(hŒ**bus**”h]”hŒbus”…”�”}”(hj´Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ÃubhŒ , and call ”…”�”}”(hj¬Ãh²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjÆÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ÃubhŒ for each. If ”…”�”}”(hj¬Ãh²hh³Nh´NubjŠ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjØÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ÃubhŒ8 returns anything but 0, we break out and return it. If ”…”�”}”(hj¬Ãh²hh³Nh´NubjŠ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjêÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¬ÃubhŒ0 is not NULL, we use it as the head of the list.”…”�”}”(hj¬Ãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÙhj‹Âubj[)�”}”(hŒ**NOTE**”h]”jŠ)�”}”(hjÄh]”hŒNOTE”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mßhj‹Âubj[)�”}”(hX(we don't return the driver that returns a non-zero value, nor do we leave the reference count incremented for that driver. If the caller needs to know that info, it must set it in the callback. It must also be sure to increment the refcount so it doesn't disappear before returning to the caller.”h]”hX,we don’t return the driver that returns a non-zero value, nor do we leave the reference count incremented for that driver. If the caller needs to know that info, it must set it in the callback. It must also be sure to increment the refcount so it doesn’t disappear before returning to the caller.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Màhj‹Âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_rescan_devices (C function)”Œc.bus_rescan_devices”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3int bus_rescan_devices (const struct bus_type *bus)”h]”hù)�”}”(hŒ2int bus_rescan_devices(const struct bus_type *bus)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjJÄh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjFÄh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFÄh²hh³jXÄh´M^ubj")�”}”(hŒbus_rescan_devices”h]”j()�”}”(hŒbus_rescan_devices”h]”hŒbus_rescan_devices”…”�”}”(hjkÄh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjgÄubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjFÄh²hh³jXÄh´M^ubj÷7)�”}”(hŒ(const struct bus_type *bus)”h]”jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj‡Äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjƒÄubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒÄubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¢Äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjƒÄubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒÄubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjÀÄh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÂÄŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jmÄsbŒc.bus_rescan_devices”†”asbuh1hhjƒÄubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒÄubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjîÄh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjƒÄubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjûÄh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjƒÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÄubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjFÄh²hh³jXÄh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjBÄh²hh³jXÄh´M^ubah}”(h]”j=Äah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jXÄh´M^hj?Äh²hubjV)�”}”(hhh]”j[)�”}”(hŒ.rescan devices on the bus for possible drivers”h]”hŒ.rescan devices on the bus for possible drivers”…”�”}”(hj%Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M^hj"Åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj?Äh²hh³jXÄh´M^ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj=Åj{j=Åj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX**Parameters** ``const struct bus_type *bus`` the bus to scan. **Description** This function will look for devices on the bus with no driver attached and rescan it against existing drivers to see if it matches any by calling device_attach() for the unbound devices.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjGÅh]”hŒ Parameters”…”�”}”(hjIÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjEÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MbhjAÅubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ0``const struct bus_type *bus`` the bus to scan. ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjfÅh]”hŒconst struct bus_type *bus”…”�”}”(hjhÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjdÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M_hj`Åubjõ)�”}”(hhh]”j[)�”}”(hŒthe bus to scan.”h]”hŒthe bus to scan.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j{Åh´M_hj|Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj`Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j{Åh´M_hj]Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjAÅubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¡Åh]”hŒ Description”…”�”}”(hj£Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjŸÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MahjAÅubj[)�”}”(hŒºThis function will look for devices on the bus with no driver attached and rescan it against existing drivers to see if it matches any by calling device_attach() for the unbound devices.”h]”hŒºThis function will look for devices on the bus with no driver attached and rescan it against existing drivers to see if it matches any by calling device_attach() for the unbound devices.”…”�”}”(hj·Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M`hjAÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevice_reprobe (C function)”Œc.device_reprobe”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'int device_reprobe (struct device *dev)”h]”hù)�”}”(hŒ&int device_reprobe(struct device *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjæÅh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjâÅh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mlubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâÅh²hh³jôÅh´Mlubj")�”}”(hŒdevice_reprobe”h]”j()�”}”(hŒdevice_reprobe”h]”hŒdevice_reprobe”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÆubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjâÅh²hh³jôÅh´Mlubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj#Æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjAÆh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj>Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jCÆŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j ÆsbŒc.device_reprobe”†”asbuh1hhjÆubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjoÆh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÆubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj|Æh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÆubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjâÅh²hh³jôÅh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÞÅh²hh³jôÅh´Mlubah}”(h]”jÙÅah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jôÅh´MlhjÛÅh²hubjV)�”}”(hhh]”j[)�”}”(hŒ5remove driver for a device and probe for a new driver”h]”hŒ5remove driver for a device and probe for a new driver”…”�”}”(hj¦Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mlhj£Æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÛÅh²hh³jôÅh´Mlubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¾Æj{j¾Æj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX@**Parameters** ``struct device *dev`` the device to reprobe **Description** This function detaches the attached driver (if any) for the given device and restarts the driver probing process. It is intended to use if probing criteria changed during a devices lifetime and driver attachment should change accordingly.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÈÆh]”hŒ Parameters”…”�”}”(hjÊÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÆÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MphjÂÆubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ-``struct device *dev`` the device to reprobe ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjçÆh]”hŒstruct device *dev”…”�”}”(hjéÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjåÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MmhjáÆubjõ)�”}”(hhh]”j[)�”}”(hŒthe device to reprobe”h]”hŒthe device to reprobe”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jüÆh´MmhjýÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjáÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jüÆh´MmhjÞÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÂÆubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj"Çh]”hŒ Description”…”�”}”(hj$Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MohjÂÆubj[)�”}”(hŒïThis function detaches the attached driver (if any) for the given device and restarts the driver probing process. It is intended to use if probing criteria changed during a devices lifetime and driver attachment should change accordingly.”h]”hŒïThis function detaches the attached driver (if any) for the given device and restarts the driver probing process. It is intended to use if probing criteria changed during a devices lifetime and driver attachment should change accordingly.”…”�”}”(hj8Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MnhjÂÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_register (C function)”Œc.bus_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int bus_register (const struct bus_type *bus)”h]”hù)�”}”(hŒ,int bus_register(const struct bus_type *bus)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjgÇh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjcÇh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¦ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcÇh²hh³juÇh´M¦ubj")�”}”(hŒ bus_register”h]”j()�”}”(hŒ bus_register”h]”hŒ bus_register”…”�”}”(hjˆÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj„Çubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjcÇh²hh³juÇh´M¦ubj÷7)�”}”(hŒ(const struct bus_type *bus)”h]”jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj¤Çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj Çubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Çubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¿Çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj Çubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Çubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjÝÇh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÚÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jßÇŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jŠÇsbŒc.bus_register”†”asbuh1hhj Çubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ÇubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj Çubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjœÇubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjcÇh²hh³juÇh´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj_Çh²hh³juÇh´M¦ubah}”(h]”jZÇah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³juÇh´M¦hj\Çh²hubjV)�”}”(hhh]”j[)�”}”(hŒ register a driver-core subsystem”h]”hŒ register a driver-core subsystem”…”�”}”(hjBÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¦hj?Èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj\Çh²hh³juÇh´M¦ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjZÈj{jZÈj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒþ**Parameters** ``const struct bus_type *bus`` bus to register **Description** Once we have that, we register the bus with the kobject infrastructure, then register the children subsystems it has: the devices and drivers that belong to the subsystem.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjdÈh]”hŒ Parameters”…”�”}”(hjfÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjbÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mªhj^ÈubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ/``const struct bus_type *bus`` bus to register ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjƒÈh]”hŒconst struct bus_type *bus”…”�”}”(hj…Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M§hj}Èubjõ)�”}”(hhh]”j[)�”}”(hŒbus to register”h]”hŒbus to register”…”�”}”(hjœÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j˜Èh´M§hj™Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj}Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j˜Èh´M§hjzÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj^Èubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj¾Èh]”hŒ Description”…”�”}”(hjÀÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¼Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M©hj^Èubj[)�”}”(hŒ«Once we have that, we register the bus with the kobject infrastructure, then register the children subsystems it has: the devices and drivers that belong to the subsystem.”h]”hŒ«Once we have that, we register the bus with the kobject infrastructure, then register the children subsystems it has: the devices and drivers that belong to the subsystem.”…”�”}”(hjÔÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¨hj^Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_unregister (C function)”Œc.bus_unregister”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0void bus_unregister (const struct bus_type *bus)”h]”hù)�”}”(hŒ/void bus_unregister(const struct bus_type *bus)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÿÈh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mþubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿÈh²hh³jÉh´Mþubj")�”}”(hŒbus_unregister”h]”j()�”}”(hŒbus_unregister”h]”hŒbus_unregister”…”�”}”(hj$Éh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj Éubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÿÈh²hh³jÉh´Mþubj÷7)�”}”(hŒ(const struct bus_type *bus)”h]”jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj@Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj<Éubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<Éubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj[Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj<Éubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<Éubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjyÉh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjvÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j{ÉŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j&ÉsbŒc.bus_unregister”†”asbuh1hhj<Éubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<ÉubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj§Éh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj<Éubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hj´Éh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj<Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj8Éubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÿÈh²hh³jÉh´Mþubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjûÈh²hh³jÉh´Mþubah}”(h]”jöÈah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÉh´MþhjøÈh²hubjV)�”}”(hhh]”j[)�”}”(hŒremove a bus from the system”h]”hŒremove a bus from the system”…”�”}”(hjÞÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MþhjÛÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjøÈh²hh³jÉh´Mþubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjöÉj{jöÉj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hŒ®**Parameters** ``const struct bus_type *bus`` bus. **Description** Unregister the child subsystems and the bus itself. Finally, we call bus_put() to release the refcount”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÊh]”hŒ Parameters”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjþÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MhjúÉubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ$``const struct bus_type *bus`` bus. ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjÊh]”hŒconst struct bus_type *bus”…”�”}”(hj!Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MÿhjÊubjõ)�”}”(hhh]”j[)�”}”(hŒbus.”h]”hŒbus.”…”�”}”(hj8Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j4Êh´Mÿhj5Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j4Êh´MÿhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjúÉubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjZÊh]”hŒ Description”…”�”}”(hj\Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjXÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MhjúÉubj[)�”}”(hŒfUnregister the child subsystems and the bus itself. Finally, we call bus_put() to release the refcount”h]”hŒfUnregister the child subsystems and the bus itself. Finally, we call bus_put() to release the refcount”…”�”}”(hjpÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MhjúÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#subsys_system_register (C function)”Œc.subsys_system_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒaint subsys_system_register (const struct bus_type *subsys, const struct attribute_group **groups)”h]”hù)�”}”(hŒ`int subsys_system_register(const struct bus_type *subsys, const struct attribute_group **groups)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸÊh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj›Êh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MEubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Êh²hh³j­Êh´MEubj")�”}”(hŒsubsys_system_register”h]”j()�”}”(hŒsubsys_system_register”h]”hŒsubsys_system_register”…”�”}”(hjÀÊh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¼Êubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj›Êh²hh³j­Êh´MEubj÷7)�”}”(hŒF(const struct bus_type *subsys, const struct attribute_group **groups)”h]”(jý7)�”}”(hŒconst struct bus_type *subsys”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÜÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjØÊubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØÊubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj÷Êh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjØÊubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØÊubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jËŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÂÊsbŒc.subsys_system_register”†”asbuh1hhjØÊubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØÊubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjCËh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjØÊubj()�”}”(hŒsubsys”h]”hŒsubsys”…”�”}”(hjPËh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjØÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÔÊubjý7)�”}”(hŒ%const struct attribute_group **groups”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjiËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjeËubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeËubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj„Ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjeËubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeËubh)�”}”(hhh]”j()�”}”(hŒattribute_group”h]”hŒattribute_group”…”�”}”(hj¢Ëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŸËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¤ËŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j1ËŒc.subsys_system_register”†”asbuh1hhjeËubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeËubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÎËh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjeËubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÛËh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjeËubj()�”}”(hŒgroups”h]”hŒgroups”…”�”}”(hjèËh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjeËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÔÊubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj›Êh²hh³j­Êh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj—Êh²hh³j­Êh´MEubah}”(h]”j’Êah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j­Êh´MEhj”Êh²hubjV)�”}”(hhh]”j[)�”}”(hŒ,register a subsystem at /sys/devices/system/”h]”hŒ,register a subsystem at /sys/devices/system/”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MEhjÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj”Êh²hh³j­Êh´MEubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj*Ìj{j*Ìj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXS**Parameters** ``const struct bus_type *subsys`` system subsystem ``const struct attribute_group **groups`` default attributes for the root device **Description** All 'system' subsystems have a /sys/devices/system/ root device with the name of the subsystem. The root device can carry subsystem- wide attributes. All registered devices are below this single root device and are named after the subsystem with a simple enumeration number appended. The registered devices are not explicitly named; only 'id' in the device needs to be set. Do not use this interface for anything new, it exists for compatibility with bad ideas only. New subsystems should use plain subsystems; and add the subsystem-wide attributes should be added to the subsystem directory itself and not some create fake root-device placed in /sys/devices/system/.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj4Ìh]”hŒ Parameters”…”�”}”(hj6Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj2Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MIhj.ÌubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ3``const struct bus_type *subsys`` system subsystem ”h]”(jÙ)�”}”(hŒ!``const struct bus_type *subsys``”h]”jß)�”}”(hjSÌh]”hŒconst struct bus_type *subsys”…”�”}”(hjUÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MFhjMÌubjõ)�”}”(hhh]”j[)�”}”(hŒsystem subsystem”h]”hŒsystem subsystem”…”�”}”(hjlÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jhÌh´MFhjiÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjMÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jhÌh´MFhjJÌubjÓ)�”}”(hŒQ``const struct attribute_group **groups`` default attributes for the root device ”h]”(jÙ)�”}”(hŒ)``const struct attribute_group **groups``”h]”jß)�”}”(hjŒÌh]”hŒ%const struct attribute_group **groups”…”�”}”(hjŽÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MGhj†Ìubjõ)�”}”(hhh]”j[)�”}”(hŒ&default attributes for the root device”h]”hŒ&default attributes for the root device”…”�”}”(hj¥Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¡Ìh´MGhj¢Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡Ìh´MGhjJÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj.Ìubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÇÌh]”hŒ Description”…”�”}”(hjÉÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÅÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MIhj.Ìubj[)�”}”(hX{All 'system' subsystems have a /sys/devices/system/ root device with the name of the subsystem. The root device can carry subsystem- wide attributes. All registered devices are below this single root device and are named after the subsystem with a simple enumeration number appended. The registered devices are not explicitly named; only 'id' in the device needs to be set.”h]”hXƒAll ‘system’ subsystems have a /sys/devices/system/ root device with the name of the subsystem. The root device can carry subsystem- wide attributes. All registered devices are below this single root device and are named after the subsystem with a simple enumeration number appended. The registered devices are not explicitly named; only ‘id’ in the device needs to be set.”…”�”}”(hjÝÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MHhj.Ìubj[)�”}”(hX+Do not use this interface for anything new, it exists for compatibility with bad ideas only. New subsystems should use plain subsystems; and add the subsystem-wide attributes should be added to the subsystem directory itself and not some create fake root-device placed in /sys/devices/system/.”h]”hX+Do not use this interface for anything new, it exists for compatibility with bad ideas only. New subsystems should use plain subsystems; and add the subsystem-wide attributes should be added to the subsystem directory itself and not some create fake root-device placed in /sys/devices/system/.”…”�”}”(hjìÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MOhj.Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$subsys_virtual_register (C function)”Œc.subsys_virtual_register”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒbint subsys_virtual_register (const struct bus_type *subsys, const struct attribute_group **groups)”h]”hù)�”}”(hŒaint subsys_virtual_register(const struct bus_type *subsys, const struct attribute_group **groups)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÍh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍh²hh³j)Íh´M^ubj")�”}”(hŒsubsys_virtual_register”h]”j()�”}”(hŒsubsys_virtual_register”h]”hŒsubsys_virtual_register”…”�”}”(hj<Íh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj8Íubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÍh²hh³j)Íh´M^ubj÷7)�”}”(hŒF(const struct bus_type *subsys, const struct attribute_group **groups)”h]”(jý7)�”}”(hŒconst struct bus_type *subsys”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjXÍh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjTÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÍubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjsÍh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjTÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÍubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj‘Íh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjŽÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j“ÍŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j>ÍsbŒc.subsys_virtual_register”†”asbuh1hhjTÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÍubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¿Íh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjTÍubj()�”}”(hŒsubsys”h]”hŒsubsys”…”�”}”(hjÌÍh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjTÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÍubjý7)�”}”(hŒ%const struct attribute_group **groups”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjåÍh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjáÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÍubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjáÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÍubh)�”}”(hhh]”j()�”}”(hŒattribute_group”h]”hŒattribute_group”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j ÎŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j­ÍŒc.subsys_virtual_register”†”asbuh1hhjáÍubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÍubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjJÎh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjáÍubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjWÎh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjáÍubj()�”}”(hŒgroups”h]”hŒgroups”…”�”}”(hjdÎh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjáÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjPÍubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÍh²hh³j)Íh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÍh²hh³j)Íh´M^ubah}”(h]”jÍah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j)Íh´M^hjÍh²hubjV)�”}”(hhh]”j[)�”}”(hŒ-register a subsystem at /sys/devices/virtual/”h]”hŒ-register a subsystem at /sys/devices/virtual/”…”�”}”(hjŽÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M^hj‹Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÍh²hh³j)Íh´M^ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¦Îj{j¦Îj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXð**Parameters** ``const struct bus_type *subsys`` virtual subsystem ``const struct attribute_group **groups`` default attributes for the root device **Description** All 'virtual' subsystems have a /sys/devices/system/ root device with the name of the subsystem. The root device can carry subsystem-wide attributes. All registered devices are below this single root device. There's no restriction on device naming. This is for kernel software constructs which need sysfs interface.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj°Îh]”hŒ Parameters”…”�”}”(hj²Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj®Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MbhjªÎubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ4``const struct bus_type *subsys`` virtual subsystem ”h]”(jÙ)�”}”(hŒ!``const struct bus_type *subsys``”h]”jß)�”}”(hjÏÎh]”hŒconst struct bus_type *subsys”…”�”}”(hjÑÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÍÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M_hjÉÎubjõ)�”}”(hhh]”j[)�”}”(hŒvirtual subsystem”h]”hŒvirtual subsystem”…”�”}”(hjèÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jäÎh´M_hjåÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÉÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jäÎh´M_hjÆÎubjÓ)�”}”(hŒQ``const struct attribute_group **groups`` default attributes for the root device ”h]”(jÙ)�”}”(hŒ)``const struct attribute_group **groups``”h]”jß)�”}”(hjÏh]”hŒ%const struct attribute_group **groups”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M`hjÏubjõ)�”}”(hhh]”j[)�”}”(hŒ&default attributes for the root device”h]”hŒ&default attributes for the root device”…”�”}”(hj!Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÏh´M`hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÏh´M`hjÆÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjªÎubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjCÏh]”hŒ Description”…”�”}”(hjEÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjAÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MbhjªÎubj[)�”}”(hXDAll 'virtual' subsystems have a /sys/devices/system/ root device with the name of the subsystem. The root device can carry subsystem-wide attributes. All registered devices are below this single root device. There's no restriction on device naming. This is for kernel software constructs which need sysfs interface.”h]”hXJAll ‘virtual’ subsystems have a /sys/devices/system/ root device with the name of the subsystem. The root device can carry subsystem-wide attributes. All registered devices are below this single root device. There’s no restriction on device naming. This is for kernel software constructs which need sysfs interface.”…”�”•Q}”(hjYÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MahjªÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdriver_find (C function)”Œ c.driver_find”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒQstruct device_driver * driver_find (const char *name, const struct bus_type *bus)”h]”hù)�”}”(hŒOstruct device_driver *driver_find(const char *name, const struct bus_type *bus)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjˆÏh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj„Ïh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mvubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Ïh²hh³j•Ïh´Mvubh)�”}”(hhh]”j()�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj§Ïh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¤Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j©ÏŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œ driver_find”sbŒ c.driver_find”†”asbuh1hhj„Ïh²hh³j•Ïh´Mvubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Ïh²hh³j•Ïh´MvubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖÏh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj„Ïh²hh³j•Ïh´Mvubj")�”}”(hŒ driver_find”h]”j()�”}”(hjÅÏh]”hŒ driver_find”…”�”}”(hjçÏh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjãÏubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj„Ïh²hh³j•Ïh´Mvubj÷7)�”}”(hŒ.(const char *name, const struct bus_type *bus)”h]”(jý7)�”}”(hŒconst char *name”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjþÏubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþÏubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjþÏubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþÏubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj9Ðh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjþÏubj()�”}”(hŒname”h]”hŒname”…”�”}”(hjFÐh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjúÏubjý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj_Ðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj[Ðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[Ðubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjzÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj[Ðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[Ðubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj˜Ðh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•Ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jšÐŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÃÏŒ c.driver_find”†”asbuh1hhj[Ðubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ÐubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÄÐh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj[Ðubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjÑÐh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj[Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjúÏubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj„Ïh²hh³j•Ïh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj€Ïh²hh³j•Ïh´Mvubah}”(h]”j{Ïah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j•Ïh´Mvhj}Ïh²hubjV)�”}”(hhh]”j[)�”}”(hŒ#locate driver on a bus by its name.”h]”hŒ#locate driver on a bus by its name.”…”�”}”(hjûÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MvhjøÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj}Ïh²hh³j•Ïh´Mvubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjÑj{jÑj|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hX¬**Parameters** ``const char *name`` name of the driver. ``const struct bus_type *bus`` bus to scan for the driver. **Description** Call kset_find_obj() to iterate over list of drivers on a bus to find driver by name. Return driver if found. This routine provides no locking to prevent the driver it returns from being unregistered or unloaded while the caller is using it. The caller is responsible for preventing this.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÑh]”hŒ Parameters”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MzhjÑubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ)``const char *name`` name of the driver. ”h]”(jÙ)�”}”(hŒ``const char *name``”h]”jß)�”}”(hj<Ñh]”hŒconst char *name”…”�”}”(hj>Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj:Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mwhj6Ñubjõ)�”}”(hhh]”j[)�”}”(hŒname of the driver.”h]”hŒname of the driver.”…”�”}”(hjUÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jQÑh´MwhjRÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj6Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jQÑh´Mwhj3ÑubjÓ)�”}”(hŒ;``const struct bus_type *bus`` bus to scan for the driver. ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hjuÑh]”hŒconst struct bus_type *bus”…”�”}”(hjwÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjsÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MxhjoÑubjõ)�”}”(hhh]”j[)�”}”(hŒbus to scan for the driver.”h]”hŒbus to scan for the driver.”…”�”}”(hjŽÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŠÑh´Mxhj‹Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjoÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŠÑh´Mxhj3Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÑubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj°Ñh]”hŒ Description”…”�”}”(hj²Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj®Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MzhjÑubj[)�”}”(hŒmCall kset_find_obj() to iterate over list of drivers on a bus to find driver by name. Return driver if found.”h]”hŒmCall kset_find_obj() to iterate over list of drivers on a bus to find driver by name. Return driver if found.”…”�”}”(hjÆÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´MyhjÑubj[)�”}”(hŒ²This routine provides no locking to prevent the driver it returns from being unregistered or unloaded while the caller is using it. The caller is responsible for preventing this.”h]”hŒ²This routine provides no locking to prevent the driver it returns from being unregistered or unloaded while the caller is using it. The caller is responsible for preventing this.”…”�”}”(hjÕÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M|hjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒbus_get_dev_root (C function)”Œc.bus_get_dev_root”hNt”auh1hÜhj)qh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=struct device * bus_get_dev_root (const struct bus_type *bus)”h]”hù)�”}”(hŒ;struct device *bus_get_dev_root(const struct bus_type *bus)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÒh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒh²hh³jÒh´M¨ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj#Òh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j%ÒŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œbus_get_dev_root”sbŒc.bus_get_dev_root”†”asbuh1hhjÒh²hh³jÒh´M¨ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒh²hh³jÒh´M¨ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjRÒh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÒh²hh³jÒh´M¨ubj")�”}”(hŒbus_get_dev_root”h]”j()�”}”(hjAÒh]”hŒbus_get_dev_root”…”�”}”(hjcÒh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj_Òubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÒh²hh³jÒh´M¨ubj÷7)�”}”(hŒ(const struct bus_type *bus)”h]”jý7)�”}”(hŒconst struct bus_type *bus”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hj~Òh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjzÒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzÒubhÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj™Òh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjzÒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzÒubh)�”}”(hhh]”j()�”}”(hŒbus_type”h]”hŒbus_type”…”�”}”(hj·Òh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¹ÒŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j?ÒŒc.bus_get_dev_root”†”asbuh1hhjzÒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzÒubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjãÒh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjzÒubj()�”}”(hŒbus”h]”hŒbus”…”�”}”(hjðÒh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjzÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjvÒubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÒh²hh³jÒh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjüÑh²hh³jÒh´M¨ubah}”(h]”j÷Ñah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÒh´M¨hjùÑh²hubjV)�”}”(hhh]”j[)�”}”(hŒ.return a pointer to the "device root" of a bus”h]”hŒ2return a pointer to the “device rootâ€� of a bus”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¨hjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjùÑh²hh³jÒh´M¨ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj2Ój{j2Ój|‰j}‰j~‰uh1híh²hhj)qh³Nh´Nubj€)�”}”(hXb**Parameters** ``const struct bus_type *bus`` bus to return the device root of. **Description** If a bus has a "device root" structure, return it, WITH THE REFERENCE COUNT INCREMENTED. Note, when finished with the device, a call to put_device() is required. If the device root is not present (or bus is not a valid pointer), NULL will be returned.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj<Óh]”hŒ Parameters”…”�”}”(hj>Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj:Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¬hj6ÓubjÎ)�”}”(hhh]”jÓ)�”}”(hŒA``const struct bus_type *bus`` bus to return the device root of. ”h]”(jÙ)�”}”(hŒ``const struct bus_type *bus``”h]”jß)�”}”(hj[Óh]”hŒconst struct bus_type *bus”…”�”}”(hj]Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M©hjUÓubjõ)�”}”(hhh]”j[)�”}”(hŒ!bus to return the device root of.”h]”hŒ!bus to return the device root of.”…”�”}”(hjtÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jpÓh´M©hjqÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjUÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jpÓh´M©hjRÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj6Óubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj–Óh]”hŒ Description”…”�”}”(hj˜Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj”Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M«hj6Óubj[)�”}”(hŒXIf a bus has a "device root" structure, return it, WITH THE REFERENCE COUNT INCREMENTED.”h]”hŒ\If a bus has a “device rootâ€� structure, return it, WITH THE REFERENCE COUNT INCREMENTED.”…”�”}”(hj¬Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´Mªhj6Óubj[)�”}”(hŒHNote, when finished with the device, a call to put_device() is required.”h]”hŒHNote, when finished with the device, a call to put_device() is required.”…”�”}”(hj»Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M­hj6Óubj[)�”}”(hŒYIf the device root is not present (or bus is not a valid pointer), NULL will be returned.”h]”hŒYIf the device root is not present (or bus is not a valid pointer), NULL will be returned.”…”�”}”(hjÊÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:72: ./drivers/base/bus.c”h´M¯hj6Óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj)qh²hh³Nh´Nubeh}”(h]”Œdevice-drivers-base”ah ]”h"]”Œdevice drivers base”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒDevice Drivers DMA Management”h]”hŒDevice Drivers DMA Management”…”�”}”(hjëÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjèÓh²hh³hÊh´KLubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdmam_free_coherent (C function)”Œc.dmam_free_coherent”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ]void dmam_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle)”h]”hù)�”}”(hŒ\void dmam_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÔh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´K=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔh²hh³j Ôh´K=ubj")�”}”(hŒdmam_free_coherent”h]”j()�”}”(hŒdmam_free_coherent”h]”hŒdmam_free_coherent”…”�”}”(hj3Ôh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj/Ôubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÔh²hh³j Ôh´K=ubj÷7)�”}”(hŒE(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjOÔh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjKÔubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKÔubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjmÔh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”joÔŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j5ÔsbŒc.dmam_free_coherent”†”asbuh1hhjKÔubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKÔubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj›Ôh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjKÔubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¨Ôh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjKÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjGÔubjý7)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j()�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÄÔh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÁÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÆÔŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j‰ÔŒc.dmam_free_coherent”†”asbuh1hhj½Ôubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Ôubj()�”}”(hŒsize”h]”hŒsize”…”�”}”(hjðÔh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj½Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjGÔubjý7)�”}”(hŒ void *vaddr”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Õh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj%Õh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÕubj()�”}”(hŒvaddr”h]”hŒvaddr”…”�”}”(hj2Õh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjGÔubjý7)�”}”(hŒdma_addr_t dma_handle”h]”(h)�”}”(hhh]”j()�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(hjNÕh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjKÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jPÕŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j‰ÔŒc.dmam_free_coherent”†”asbuh1hhjGÕubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGÕubj()�”}”(hŒ dma_handle”h]”hŒ dma_handle”…”�”}”(hjzÕh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjGÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjGÔubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÔh²hh³j Ôh´K=ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj Ôh²hh³j Ôh´K=ubah}”(h]”jÔah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j Ôh´K=hjÔh²hubjV)�”}”(hhh]”j[)�”}”(hŒManaged dma_free_coherent()”h]”hŒManaged dma_free_coherent()”…”�”}”(hj¤Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´K=hj¡Õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÔh²hh³j Ôh´K=ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¼Õj{j¼Õj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hX**Parameters** ``struct device *dev`` Device to free coherent memory for ``size_t size`` Size of allocation ``void *vaddr`` Virtual address of the memory to free ``dma_addr_t dma_handle`` DMA handle of the memory to free **Description** Managed dma_free_coherent().”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÆÕh]”hŒ Parameters”…”�”}”(hjÈÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÄÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KAhjÀÕubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ:``struct device *dev`` Device to free coherent memory for ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjåÕh]”hŒstruct device *dev”…”�”}”(hjçÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjãÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´K>hjßÕubjõ)�”}”(hhh]”j[)�”}”(hŒ"Device to free coherent memory for”h]”hŒ"Device to free coherent memory for”…”�”}”(hjþÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³júÕh´K>hjûÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjßÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³júÕh´K>hjÜÕubjÓ)�”}”(hŒ#``size_t size`` Size of allocation ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hjÖh]”hŒ size_t size”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´K?hjÖubjõ)�”}”(hhh]”j[)�”}”(hŒSize of allocation”h]”hŒSize of allocation”…”�”}”(hj7Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j3Öh´K?hj4Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j3Öh´K?hjÜÕubjÓ)�”}”(hŒ6``void *vaddr`` Virtual address of the memory to free ”h]”(jÙ)�”}”(hŒ``void *vaddr``”h]”jß)�”}”(hjWÖh]”hŒ void *vaddr”…”�”}”(hjYÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjUÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´K@hjQÖubjõ)�”}”(hhh]”j[)�”}”(hŒ%Virtual address of the memory to free”h]”hŒ%Virtual address of the memory to free”…”�”}”(hjpÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jlÖh´K@hjmÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjQÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jlÖh´K@hjÜÕubjÓ)�”}”(hŒ;``dma_addr_t dma_handle`` DMA handle of the memory to free ”h]”(jÙ)�”}”(hŒ``dma_addr_t dma_handle``”h]”jß)�”}”(hj�Öh]”hŒdma_addr_t dma_handle”…”�”}”(hj’Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŽÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KAhjŠÖubjõ)�”}”(hhh]”j[)�”}”(hŒ DMA handle of the memory to free”h]”hŒ DMA handle of the memory to free”…”�”}”(hj©Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¥Öh´KAhj¦Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŠÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¥Öh´KAhjÜÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÀÕubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjËÖh]”hŒ Description”…”�”}”(hjÍÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÉÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KChjÀÕubj[)�”}”(hŒManaged dma_free_coherent().”h]”hŒManaged dma_free_coherent().”…”�”}”(hjáÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KBhjÀÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdmam_alloc_attrs (C function)”Œc.dmam_alloc_attrs”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒqvoid * dmam_alloc_attrs (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs)”h]”hù)�”}”(hŒovoid *dmam_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj ×h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KPubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ×h²hh³j×h´KPubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj-×h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj ×h²hh³j×h´KPubj")�”}”(hŒdmam_alloc_attrs”h]”j()�”}”(hŒdmam_alloc_attrs”h]”hŒdmam_alloc_attrs”…”�”}”(hj>×h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj:×ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj ×h²hh³j×h´KPubj÷7)�”}”(hŒY(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjZ×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjV×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV×ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjx×h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hju×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jz׌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j@×sbŒc.dmam_alloc_attrs”†”asbuh1hhjV×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV×ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦×h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjV×ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj³×h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjV×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjR×ubjý7)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j()�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÏ×h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÌ×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÑ׌modname”NŒ classname”Nj:8j=8)�”}”j@8]”j”׌c.dmam_alloc_attrs”†”asbuh1hhjÈ×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ×ubj()�”}”(hŒsize”h]”hŒsize”…”�”}”(hjû×h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈ×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjR×ubjý7)�”}”(hŒdma_addr_t *dma_handle”h]”(h)�”}”(hhh]”j()�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jØŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j”׌c.dmam_alloc_attrs”†”asbuh1hhjØubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjCØh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjØubj()�”}”(hŒ dma_handle”h]”hŒ dma_handle”…”�”}”(hjPØh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjR×ubjý7)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j()�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjlØh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjiØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jnØŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j”׌c.dmam_alloc_attrs”†”asbuh1hhjeØubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeØubj()�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj˜Øh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjeØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjR×ubjý7)�”}”(hŒunsigned long attrs”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj±Øh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj­Øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­Øubj¿7)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÍØh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj­Øubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­Øubj()�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjéØh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj­Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjR×ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj ×h²hh³j×h´KPubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj×h²hh³j×h´KPubah}”(h]”j×ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j×h´KPhj×h²hubjV)�”}”(hhh]”j[)�”}”(hŒManaged dma_alloc_attrs()”h]”hŒManaged dma_alloc_attrs()”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KPhjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj×h²hh³j×h´KPubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj+Ùj{j+Ùj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hXç**Parameters** ``struct device *dev`` Device to allocate non_coherent memory for ``size_t size`` Size of allocation ``dma_addr_t *dma_handle`` Out argument for allocated DMA handle ``gfp_t gfp`` Allocation flags ``unsigned long attrs`` Flags in the DMA_ATTR_* namespace. **Description** Managed dma_alloc_attrs(). Memory allocated using this function will be automatically released on driver detach. **Return** Pointer to allocated memory on success, NULL on failure.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj5Ùh]”hŒ Parameters”…”�”}”(hj7Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj3Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KThj/ÙubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒB``struct device *dev`` Device to allocate non_coherent memory for ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjTÙh]”hŒstruct device *dev”…”�”}”(hjVÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjRÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KQhjNÙubjõ)�”}”(hhh]”j[)�”}”(hŒ*Device to allocate non_coherent memory for”h]”hŒ*Device to allocate non_coherent memory for”…”�”}”(hjmÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jiÙh´KQhjjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjNÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jiÙh´KQhjKÙubjÓ)�”}”(hŒ#``size_t size`` Size of allocation ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hj�Ùh]”hŒ size_t size”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KRhj‡Ùubjõ)�”}”(hhh]”j[)�”}”(hŒSize of allocation”h]”hŒSize of allocation”…”�”}”(hj¦Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¢Ùh´KRhj£Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‡Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¢Ùh´KRhjKÙubjÓ)�”}”(hŒA``dma_addr_t *dma_handle`` Out argument for allocated DMA handle ”h]”(jÙ)�”}”(hŒ``dma_addr_t *dma_handle``”h]”jß)�”}”(hjÆÙh]”hŒdma_addr_t *dma_handle”…”�”}”(hjÈÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KShjÀÙubjõ)�”}”(hhh]”j[)�”}”(hŒ%Out argument for allocated DMA handle”h]”hŒ%Out argument for allocated DMA handle”…”�”}”(hjßÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÛÙh´KShjÜÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛÙh´KShjKÙubjÓ)�”}”(hŒ``gfp_t gfp`` Allocation flags ”h]”(jÙ)�”}”(hŒ ``gfp_t gfp``”h]”jß)�”}”(hjÿÙh]”hŒ gfp_t gfp”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjýÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KThjùÙubjõ)�”}”(hhh]”j[)�”}”(hŒAllocation flags”h]”hŒAllocation flags”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÚh´KThjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjùÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÚh´KThjKÙubjÓ)�”}”(hŒ;``unsigned long attrs`` Flags in the DMA_ATTR_* namespace. ”h]”(jÙ)�”}”(hŒ``unsigned long attrs``”h]”jß)�”}”(hj8Úh]”hŒunsigned long attrs”…”�”}”(hj:Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj6Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KUhj2Úubjõ)�”}”(hhh]”j[)�”}”(hŒ"Flags in the DMA_ATTR_* namespace.”h]”hŒ"Flags in the DMA_ATTR_* namespace.”…”�”}”(hjQÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jMÚh´KUhjNÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj2Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jMÚh´KUhjKÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj/Ùubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjsÚh]”hŒ Description”…”�”}”(hjuÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjqÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KWhj/Ùubj[)�”}”(hŒqManaged dma_alloc_attrs(). Memory allocated using this function will be automatically released on driver detach.”h]”hŒqManaged dma_alloc_attrs(). Memory allocated using this function will be automatically released on driver detach.”…”�”}”(hj‰Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KVhj/Ùubj[)�”}”(hŒ **Return**”h]”jŠ)�”}”(hjšÚh]”hŒReturn”…”�”}”(hjœÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj˜Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KYhj/Ùubj[)�”}”(hŒ8Pointer to allocated memory on success, NULL on failure.”h]”hŒ8Pointer to allocated memory on success, NULL on failure.”…”�”}”(hj°Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´KZhj/Ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdma_map_sg_attrs (C function)”Œc.dma_map_sg_attrs”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ‡unsigned int dma_map_sg_attrs (struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs)”h]”hù)�”}”(hŒ†unsigned int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs)”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjßÚh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÛÚh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛÚh²hh³jíÚh´Mubj¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjüÚh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÛÚh²hh³jíÚh´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛÚh²hh³jíÚh´Mubj")�”}”(hŒdma_map_sg_attrs”h]”j()�”}”(hŒdma_map_sg_attrs”h]”hŒdma_map_sg_attrs”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÛubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÛÚh²hh³jíÚh´Mubj÷7)�”}”(hŒi(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj8Ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj4Ûubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Ûubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjVÛh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjSÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jXÛŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÛsbŒc.dma_map_sg_attrs”†”asbuh1hhj4Ûubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ÛubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj„Ûh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj4Ûubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj‘Ûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj4Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0Ûubjý7)�”}”(hŒstruct scatterlist *sg”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjªÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¦Ûubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Ûubh)�”}”(hhh]”j()�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjÈÛh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÅÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÊÛŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jrÛŒc.dma_map_sg_attrs”†”asbuh1hhj¦Ûubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦ÛubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjôÛh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¦Ûubj()�”}”(hŒsg”h]”hŒsg”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¦Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0Ûubjý7)�”}”(hŒ int nents”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÜubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜubj()�”}”(hŒnents”h]”hŒnents”…”�”}”(hj6Üh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0Ûubjý7)�”}”(hŒenum dma_data_direction dir”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hjOÜh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjKÜubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKÜubh)�”}”(hhh]”j()�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjmÜh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”joÜŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jrÛŒc.dma_map_sg_attrs”†”asbuh1hhjKÜubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKÜubj()�”}”(hŒdir”h]”hŒdir”…”�”}”(hj™Üh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjKÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0Ûubjý7)�”}”(hŒunsigned long attrs”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj²Üh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj®Üubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®Üubj¿7)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÎÜh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj®Üubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®Üubj()�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjêÜh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj®Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0Ûubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÛÚh²hh³jíÚh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj×Úh²hh³jíÚh´Mubah}”(h]”jÒÚah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jíÚh´MhjÔÚh²hubjV)�”}”(hhh]”j[)�”}”(hŒMap the given buffer for DMA”h]”hŒMap the given buffer for DMA”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MhjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÔÚh²hh³jíÚh´Mubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj,Ýj{j,Ýj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hXá**Parameters** ``struct device *dev`` The device for which to perform the DMA operation ``struct scatterlist *sg`` The sg_table object describing the buffer ``int nents`` Number of entries to map ``enum dma_data_direction dir`` DMA direction ``unsigned long attrs`` Optional DMA attributes for the map operation **Description** Maps a buffer described by a scatterlist passed in the sg argument with nents segments for the **dir** DMA operation by the **dev** device. Returns the number of mapped entries (which can be less than nents) on success. Zero is returned for any error. dma_unmap_sg_attrs() should be used to unmap the buffer with the original sg and original nents (not the value returned by this funciton).”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj6Ýh]”hŒ Parameters”…”�”}”(hj8Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj4Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´Mhj0ÝubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒI``struct device *dev`` The device for which to perform the DMA operation ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjUÝh]”hŒstruct device *dev”…”�”}”(hjWÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjSÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MhjOÝubjõ)�”}”(hhh]”j[)�”}”(hŒ1The device for which to perform the DMA operation”h]”hŒ1The device for which to perform the DMA operation”…”�”}”(hjnÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jjÝh´MhjkÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjOÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jjÝh´MhjLÝubjÓ)�”}”(hŒE``struct scatterlist *sg`` The sg_table object describing the buffer ”h]”(jÙ)�”}”(hŒ``struct scatterlist *sg``”h]”jß)�”}”(hjŽÝh]”hŒstruct scatterlist *sg”…”�”}”(hj�Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŒÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MhjˆÝubjõ)�”}”(hhh]”j[)�”}”(hŒ)The sg_table object describing the buffer”h]”hŒ)The sg_table object describing the buffer”…”�”}”(hj§Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j£Ýh´Mhj¤Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjˆÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j£Ýh´MhjLÝubjÓ)�”}”(hŒ'``int nents`` Number of entries to map ”h]”(jÙ)�”}”(hŒ ``int nents``”h]”jß)�”}”(hjÇÝh]”hŒ int nents”…”�”}”(hjÉÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÅÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MhjÁÝubjõ)�”}”(hhh]”j[)�”}”(hŒNumber of entries to map”h]”hŒNumber of entries to map”…”�”}”(hjàÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÜÝh´MhjÝÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÁÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÜÝh´MhjLÝubjÓ)�”}”(hŒ.``enum dma_data_direction dir`` DMA direction ”h]”(jÙ)�”}”(hŒ``enum dma_data_direction dir``”h]”jß)�”}”(hjÞh]”hŒenum dma_data_direction dir”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjþÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MhjúÝubjõ)�”}”(hhh]”j[)�”}”(hŒ DMA direction”h]”hŒ DMA direction”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÞh´MhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjúÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÞh´MhjLÝubjÓ)�”}”(hŒF``unsigned long attrs`` Optional DMA attributes for the map operation ”h]”(jÙ)�”}”(hŒ``unsigned long attrs``”h]”jß)�”}”(hj9Þh]”hŒunsigned long attrs”…”�”}”(hj;Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj7Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´Mhj3Þubjõ)�”}”(hhh]”j[)�”}”(hŒ-Optional DMA attributes for the map operation”h]”hŒ-Optional DMA attributes for the map operation”…”�”}”(hjRÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jNÞh´MhjOÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj3Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jNÞh´MhjLÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj0Ýubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjtÞh]”hŒ Description”…”�”}”(hjvÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjrÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´Mhj0Ýubj[)�”}”(hŒ‹Maps a buffer described by a scatterlist passed in the sg argument with nents segments for the **dir** DMA operation by the **dev** device.”h]”(hŒ_Maps a buffer described by a scatterlist passed in the sg argument with nents segments for the ”…”�”}”(hjŠÞh²hh³Nh´NubjŠ)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hj’Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjŠÞubhŒ DMA operation by the ”…”�”}”(hjŠÞh²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¤Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjŠÞubhŒ device.”…”�”}”(hjŠÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´Mhj0Ýubj[)�”}”(hŒoReturns the number of mapped entries (which can be less than nents) on success. Zero is returned for any error.”h]”hŒoReturns the number of mapped entries (which can be less than nents) on success. Zero is returned for any error.”…”�”}”(hj½Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´Mhj0Ýubj[)�”}”(hŒŠdma_unmap_sg_attrs() should be used to unmap the buffer with the original sg and original nents (not the value returned by this funciton).”h]”hŒŠdma_unmap_sg_attrs() should be used to unmap the buffer with the original sg and original nents (not the value returned by this funciton).”…”�”}”(hjÌÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M hj0Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdma_map_sgtable (C function)”Œc.dma_map_sgtable”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒpint dma_map_sgtable (struct device *dev, struct sg_table *sgt, enum dma_data_direction dir, unsigned long attrs)”h]”hù)�”}”(hŒoint dma_map_sgtable(struct device *dev, struct sg_table *sgt, enum dma_data_direction dir, unsigned long attrs)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjûÞh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj÷Þh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M1ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷Þh²hh³j ßh´M1ubj")�”}”(hŒdma_map_sgtable”h]”j()�”}”(hŒdma_map_sgtable”h]”hŒdma_map_sgtable”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjßubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj÷Þh²hh³j ßh´M1ubj÷7)�”}”(hŒ\(struct device *dev, struct sg_table *sgt, enum dma_data_direction dir, unsigned long attrs)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj8ßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj4ßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ßubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjVßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjSßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jXߌmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jßsbŒc.dma_map_sgtable”†”asbuh1hhj4ßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ßubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj„ßh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj4ßubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj‘ßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj4ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0ßubjý7)�”}”(hŒstruct sg_table *sgt”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjªßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj¦ßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦ßubh)�”}”(hhh]”j()�”}”(hŒsg_table”h]”hŒsg_table”…”�”}”(hjÈßh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÅßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÊߌmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jrߌc.dma_map_sgtable”†”asbuh1hhj¦ßubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦ßubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjôßh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj¦ßubj()�”}”(hŒsgt”h]”hŒsgt”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¦ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0ßubjý7)�”}”(hŒenum dma_data_direction dir”h]”(hÿ)�”}”(hjÌh]”hŒenum”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjàubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubh)�”}”(hhh]”j()�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hj8àh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj5àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j:àŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jrߌc.dma_map_sgtable”†”asbuh1hhjàubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubj()�”}”(hŒdir”h]”hŒdir”…”�”}”(hjdàh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0ßubjý7)�”}”(hŒunsigned long attrs”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}àh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjyàubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyàubj¿7)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj™àh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjyàubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyàubj()�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjµàh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjyàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj0ßubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj÷Þh²hh³j ßh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjóÞh²hh³j ßh´M1ubah}”(h]”jîÞah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j ßh´M1hjðÞh²hubjV)�”}”(hhh]”j[)�”}”(hŒMap the given buffer for DMA”h]”hŒMap the given buffer for DMA”…”�”}”(hjßàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M1hjÜàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjðÞh²hh³j ßh´M1ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj÷àj{j÷àj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hX{**Parameters** ``struct device *dev`` The device for which to perform the DMA operation ``struct sg_table *sgt`` The sg_table object describing the buffer ``enum dma_data_direction dir`` DMA direction ``unsigned long attrs`` Optional DMA attributes for the map operation **Description** Maps a buffer described by a scatterlist stored in the given sg_table object for the **dir** DMA operation by the **dev** device. After success, the ownership for the buffer is transferred to the DMA domain. One has to call dma_sync_sgtable_for_cpu() or dma_unmap_sgtable() to move the ownership of the buffer back to the CPU domain before touching the buffer by the CPU. Returns 0 on success or a negative error code on error. The following error codes are supported with the given meaning: -EINVAL An invalid argument, unaligned access or other error in usage. Will not succeed if retried. -ENOMEM Insufficient resources (like memory or IOVA space) to complete the mapping. Should succeed if retried later. -EIO Legacy error code with an unknown meaning. eg. this is returned if a lower level call returned DMA_MAPPING_ERROR. -EREMOTEIO The DMA device cannot access P2PDMA memory specified in the sg_table. This will not succeed if retried.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjáh]”hŒ Parameters”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÿàubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M5hjûàubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒI``struct device *dev`` The device for which to perform the DMA operation ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj áh]”hŒstruct device *dev”…”�”}”(hj"áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M2hjáubjõ)�”}”(hhh]”j[)�”}”(hŒ1The device for which to perform the DMA operation”h]”hŒ1The device for which to perform the DMA operation”…”�”}”(hj9áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j5áh´M2hj6áubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j5áh´M2hjáubjÓ)�”}”(hŒC``struct sg_table *sgt`` The sg_table object describing the buffer ”h]”(jÙ)�”}”(hŒ``struct sg_table *sgt``”h]”jß)�”}”(hjYáh]”hŒstruct sg_table *sgt”…”�”}”(hj[áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjWáubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M3hjSáubjõ)�”}”(hhh]”j[)�”}”(hŒ)The sg_table object describing the buffer”h]”hŒ)The sg_table object describing the buffer”…”�”}”(hjráh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jnáh´M3hjoáubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjSáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jnáh´M3hjáubjÓ)�”}”(hŒ.``enum dma_data_direction dir`` DMA direction ”h]”(jÙ)�”}”(hŒ``enum dma_data_direction dir``”h]”jß)�”}”(hj’áh]”hŒenum dma_data_direction dir”…”�”}”(hj”áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj�áubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M4hjŒáubjõ)�”}”(hhh]”j[)�”}”(hŒ DMA direction”h]”hŒ DMA direction”…”�”}”(hj«áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j§áh´M4hj¨áubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŒáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j§áh´M4hjáubjÓ)�”}”(hŒF``unsigned long attrs`` Optional DMA attributes for the map operation ”h]”(jÙ)�”}”(hŒ``unsigned long attrs``”h]”jß)�”}”(hjËáh]”hŒunsigned long attrs”…”�”}”(hjÍáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÉáubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M5hjÅáubjõ)�”}”(hhh]”j[)�”}”(hŒ-Optional DMA attributes for the map operation”h]”hŒ-Optional DMA attributes for the map operation”…”�”}”(hjäáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jàáh´M5hjááubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÅáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jàáh´M5hjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjûàubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjâh]”hŒ Description”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M7hjûàubj[)�”}”(hXtMaps a buffer described by a scatterlist stored in the given sg_table object for the **dir** DMA operation by the **dev** device. After success, the ownership for the buffer is transferred to the DMA domain. One has to call dma_sync_sgtable_for_cpu() or dma_unmap_sgtable() to move the ownership of the buffer back to the CPU domain before touching the buffer by the CPU.”h]”(hŒUMaps a buffer described by a scatterlist stored in the given sg_table object for the ”…”�”}”(hjâh²hh³Nh´NubjŠ)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hj$âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjâubhŒ DMA operation by the ”…”�”}”(hjâh²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj6âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjâubhŒû device. After success, the ownership for the buffer is transferred to the DMA domain. One has to call dma_sync_sgtable_for_cpu() or dma_unmap_sgtable() to move the ownership of the buffer back to the CPU domain before touching the buffer by the CPU.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M6hjûàubj[)�”}”(hŒwReturns 0 on success or a negative error code on error. The following error codes are supported with the given meaning:”h]”hŒwReturns 0 on success or a negative error code on error. The following error codes are supported with the given meaning:”…”�”}”(hjOâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M=hjûàubj3)�”}”(hXM-EINVAL An invalid argument, unaligned access or other error in usage. Will not succeed if retried. -ENOMEM Insufficient resources (like memory or IOVA space) to complete the mapping. Should succeed if retried later. -EIO Legacy error code with an unknown meaning. eg. this is returned if a lower level call returned DMA_MAPPING_ERROR. -EREMOTEIO The DMA device cannot access P2PDMA memory specified in the sg_table. This will not succeed if retried.”h]”hŒ option_list”“”)�”}”(hhh]”(hŒoption_list_item”“”)�”}”(hhh]”(hŒ option_group”“”)�”}”(hhh]”hŒoption”“”)�”}”(hŒ-EINVAL”h]”(hŒ option_string”“”)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjyâsbah}”(h]”h ]”h"]”h$]”h&]”uh1jwâhjsâubhŒoption_argument”“”)�”}”(hŒINVAL”h]”hŒINVAL”…”�”}”(hj‰âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1j‡âhjsâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jqâhjnâubah}”(h]”h ]”h"]”h$]”h&]”uh1jlâhjiâubhŒ description”“”)�”}”(hŒ[An invalid argument, unaligned access or other error in usage. Will not succeed if retried.”h]”j[)�”}”(hŒ[An invalid argument, unaligned access or other error in usage. Will not succeed if retried.”h]”hŒ[An invalid argument, unaligned access or other error in usage. Will not succeed if retried.”…”�”}”(hjªâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M@hj¦âubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤âhjiâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jgâhjdâubjhâ)�”}”(hhh]”(jmâ)�”}”(hhh]”jrâ)�”}”(hŒ-ENOMEM”h]”(jxâ)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjÏâsbah}”(h]”h ]”h"]”h$]”h&]”uh1jwâhjËâubjˆâ)�”}”(hŒNOMEM”h]”hŒNOMEM”…”�”}”(hjÝâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1j‡âhjËâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jqâhjÈâubah}”(h]”h ]”h"]”h$]”h&]”uh1jlâhjÅâubj¥â)�”}”(hŒlInsufficient resources (like memory or IOVA space) to complete the mapping. Should succeed if retried later.”h]”j[)�”}”(hŒlInsufficient resources (like memory or IOVA space) to complete the mapping. Should succeed if retried later.”h]”hŒlInsufficient resources (like memory or IOVA space) to complete the mapping. Should succeed if retried later.”…”�”}”(hjüâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MBhjøâubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤âhjÅâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jgâhjdâubjhâ)�”}”(hhh]”(jmâ)�”}”(hhh]”jrâ)�”}”(hŒ-EIO”h]”(jxâ)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj!ãsbah}”(h]”h ]”h"]”h$]”h&]”uh1jwâhjãubjˆâ)�”}”(hŒIO”h]”hŒIO”…”�”}”(hj/ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1j‡âhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jqâhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jlâhjãubj¥â)�”}”(hŒqLegacy error code with an unknown meaning. eg. this is returned if a lower level call returned DMA_MAPPING_ERROR.”h]”j[)�”}”(hŒqLegacy error code with an unknown meaning. eg. this is returned if a lower level call returned DMA_MAPPING_ERROR.”h]”hŒqLegacy error code with an unknown meaning. eg. this is returned if a lower level call returned DMA_MAPPING_ERROR.”…”�”}”(hjNãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MDhjJãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤âhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jgâhjdâubjhâ)�”}”(hhh]”(jmâ)�”}”(hhh]”jrâ)�”}”(hŒ -EREMOTEIO”h]”(jxâ)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjsãsbah}”(h]”h ]”h"]”h$]”h&]”uh1jwâhjoãubjˆâ)�”}”(hŒREMOTEIO”h]”hŒREMOTEIO”…”�”}”(hj�ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1j‡âhjoãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jqâhjlãubah}”(h]”h ]”h"]”h$]”h&]”uh1jlâhjiãubj¥â)�”}”(hŒgThe DMA device cannot access P2PDMA memory specified in the sg_table. This will not succeed if retried.”h]”j[)�”}”(hŒgThe DMA device cannot access P2PDMA memory specified in the sg_table. This will not succeed if retried.”h]”hŒgThe DMA device cannot access P2PDMA memory specified in the sg_table. This will not succeed if retried.”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MGhjœãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤âhjiãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jgâhjdâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jbâh³j¸âh´M@hj^âubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j¸âh´M@hjûàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdma_need_unmap (C function)”Œc.dma_need_unmap”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(bool dma_need_unmap (struct device *dev)”h]”hù)�”}”(hŒ'bool dma_need_unmap(struct device *dev)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hjçãh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjããh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÎubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjããh²hh³jôãh´MÎubj")�”}”(hŒdma_need_unmap”h]”j()�”}”(hŒdma_need_unmap”h]”hŒdma_need_unmap”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjäubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjããh²hh³jôãh´MÎubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj#äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjäubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjAäh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj>äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jCäŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j äsbŒc.dma_need_unmap”†”asbuh1hhjäubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjoäh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjäubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj|äh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjäubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjããh²hh³jôãh´MÎubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjßãh²hh³jôãh´MÎubah}”(h]”jÚãah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jôãh´MÎhjÜãh²hubjV)�”}”(hhh]”j[)�”}”(hŒ,does this device need dma_unmap_* operations”h]”hŒ,does this device need dma_unmap_* operations”…”�”}”(hj¦äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÎhj£äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÜãh²hh³jôãh´MÎubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj¾äj{j¾äj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hX**Parameters** ``struct device *dev`` device to check **Description** If this function returns ``false``, drivers can skip calling dma_unmap_* after finishing an I/O. This function must be called after all mappings that might need to be unmapped have been performed.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjÈäh]”hŒ Parameters”…”�”}”(hjÊäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÆäubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÒhjÂäubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ'``struct device *dev`` device to check ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjçäh]”hŒstruct device *dev”…”�”}”(hjéäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjåäubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”•h´MÏhjáäubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jüäh´MÏhjýäubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjáäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jüäh´MÏhjÞäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÂäubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj"åh]”hŒ Description”…”�”}”(hj$åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj åubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÑhjÂäubj[)�”}”(hŒÅIf this function returns ``false``, drivers can skip calling dma_unmap_* after finishing an I/O. This function must be called after all mappings that might need to be unmapped have been performed.”h]”(hŒIf this function returns ”…”�”}”(hj8åh²hh³Nh´Nubjß)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj@åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj8åubhŒ£, drivers can skip calling dma_unmap_* after finishing an I/O. This function must be called after all mappings that might need to be unmapped have been performed.”…”�”}”(hj8åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÐhjÂäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdma_can_mmap (C function)”Œc.dma_can_mmap”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&bool dma_can_mmap (struct device *dev)”h]”hù)�”}”(hŒ%bool dma_can_mmap(struct device *dev)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hjyåh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjuåh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M/ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuåh²hh³j†åh´M/ubj")�”}”(hŒ dma_can_mmap”h]”j()�”}”(hŒ dma_can_mmap”h]”hŒ dma_can_mmap”…”�”}”(hj™åh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•åubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjuåh²hh³j†åh´M/ubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjµåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj±åubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±åubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÓåh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÐåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÕåŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j›åsbŒc.dma_can_mmap”†”asbuh1hhj±åubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±åubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj±åubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj±åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj­åubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjuåh²hh³j†åh´M/ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjqåh²hh³j†åh´M/ubah}”(h]”jlåah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j†åh´M/hjnåh²hubjV)�”}”(hhh]”j[)�”}”(hŒ+check if a given device supports dma_mmap_*”h]”hŒ+check if a given device supports dma_mmap_*”…”�”}”(hj8æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M/hj5æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjnåh²hh³j†åh´M/ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjPæj{jPæj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hŒ½**Parameters** ``struct device *dev`` device to check **Description** Returns ``true`` if **dev** supports dma_mmap_coherent() and dma_mmap_attrs() to map DMA allocations to userspace.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjZæh]”hŒ Parameters”…”�”}”(hj\æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjXæubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M3hjTæubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ'``struct device *dev`` device to check ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjyæh]”hŒstruct device *dev”…”�”}”(hj{æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjwæubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M0hjsæubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hj’æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jŽæh´M0hj�æubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjsæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jŽæh´M0hjpæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjTæubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj´æh]”hŒ Description”…”�”}”(hj¶æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj²æubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M2hjTæubj[)�”}”(hŒrReturns ``true`` if **dev** supports dma_mmap_coherent() and dma_mmap_attrs() to map DMA allocations to userspace.”h]”(hŒReturns ”…”�”}”(hjÊæh²hh³Nh´Nubjß)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÒæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÊæubhŒ if ”…”�”}”(hjÊæh²hh³Nh´NubjŠ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjäæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÊæubhŒW supports dma_mmap_coherent() and dma_mmap_attrs() to map DMA allocations to userspace.”…”�”}”(hjÊæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M1hjTæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdma_mmap_attrs (C function)”Œc.dma_mmap_attrs”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒŠint dma_mmap_attrs (struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs)”h]”hù)�”}”(hŒ‰int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjçh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MBubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçh²hh³j+çh´MBubj")�”}”(hŒdma_mmap_attrs”h]”j()�”}”(hŒdma_mmap_attrs”h]”hŒdma_mmap_attrs”…”�”}”(hj>çh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj:çubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjçh²hh³j+çh´MBubj÷7)�”}”(hŒw(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs)”h]”(jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjZçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjVçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVçubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjxçh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjuçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jzçŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j@çsbŒc.dma_mmap_attrs”†”asbuh1hhjVçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVçubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¦çh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjVçubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj³çh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjVçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubjý7)�”}”(hŒstruct vm_area_struct *vma”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÌçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjÈçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈçubh)�”}”(hhh]”j()�”}”(hŒvm_area_struct”h]”hŒvm_area_struct”…”�”}”(hjêçh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjççubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jìçŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j”çŒc.dma_mmap_attrs”†”asbuh1hhjÈçubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈçubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjÈçubj()�”}”(hŒvma”h]”hŒvma”…”�”}”(hj#èh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubjý7)�”}”(hŒvoid *cpu_addr”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<èh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj8èubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8èubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjXèh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj8èubj()�”}”(hŒcpu_addr”h]”hŒcpu_addr”…”�”}”(hjeèh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj8èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubjý7)�”}”(hŒdma_addr_t dma_addr”h]”(h)�”}”(hhh]”j()�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(hj�èh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj~èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jƒèŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j”çŒc.dma_mmap_attrs”†”asbuh1hhjzèubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzèubj()�”}”(hŒdma_addr”h]”hŒdma_addr”…”�”}”(hj­èh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjzèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubjý7)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j()�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÉèh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÆèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jËèŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j”çŒc.dma_mmap_attrs”†”asbuh1hhjÂèubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂèubj()�”}”(hŒsize”h]”hŒsize”…”�”}”(hjõèh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÂèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubjý7)�”}”(hŒunsigned long attrs”h]”(j¿7)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj éubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj éubj¿7)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj*éh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj éubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj éubj()�”}”(hŒattrs”h]”hŒattrs”…”�”}”(hjFéh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjRçubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjçh²hh³j+çh´MBubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjçh²hh³j+çh´MBubah}”(h]”jçah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j+çh´MBhjçh²hubjV)�”}”(hhh]”j[)�”}”(hŒ-map a coherent DMA allocation into user space”h]”hŒ-map a coherent DMA allocation into user space”…”�”}”(hjpéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MBhjméh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjçh²hh³j+çh´MBubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjˆéj{jˆéj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hXÈ**Parameters** ``struct device *dev`` valid struct device pointer, or NULL for ISA and EISA-like devices ``struct vm_area_struct *vma`` vm_area_struct describing requested user mapping ``void *cpu_addr`` kernel CPU-view address returned from dma_alloc_attrs ``dma_addr_t dma_addr`` device-view address returned from dma_alloc_attrs ``size_t size`` size of memory originally requested in dma_alloc_attrs ``unsigned long attrs`` attributes of mapping properties requested in dma_alloc_attrs **Description** Map a coherent DMA buffer previously allocated by dma_alloc_attrs into user space. The coherent DMA buffer must not be freed by the driver until the user space mapping has been released.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj’éh]”hŒ Parameters”…”�”}”(hj”éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj�éubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MFhjŒéubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒZ``struct device *dev`` valid struct device pointer, or NULL for ISA and EISA-like devices ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hj±éh]”hŒstruct device *dev”…”�”}”(hj³éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¯éubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MChj«éubjõ)�”}”(hhh]”j[)�”}”(hŒBvalid struct device pointer, or NULL for ISA and EISA-like devices”h]”hŒBvalid struct device pointer, or NULL for ISA and EISA-like devices”…”�”}”(hjÊéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÆéh´MChjÇéubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj«éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÆéh´MChj¨éubjÓ)�”}”(hŒP``struct vm_area_struct *vma`` vm_area_struct describing requested user mapping ”h]”(jÙ)�”}”(hŒ``struct vm_area_struct *vma``”h]”jß)�”}”(hjêéh]”hŒstruct vm_area_struct *vma”…”�”}”(hjìéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjèéubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MDhjäéubjõ)�”}”(hhh]”j[)�”}”(hŒ0vm_area_struct describing requested user mapping”h]”hŒ0vm_area_struct describing requested user mapping”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÿéh´MDhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjäéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÿéh´MDhj¨éubjÓ)�”}”(hŒI``void *cpu_addr`` kernel CPU-view address returned from dma_alloc_attrs ”h]”(jÙ)�”}”(hŒ``void *cpu_addr``”h]”jß)�”}”(hj#êh]”hŒvoid *cpu_addr”…”�”}”(hj%êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj!êubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MEhjêubjõ)�”}”(hhh]”j[)�”}”(hŒ5kernel CPU-view address returned from dma_alloc_attrs”h]”hŒ5kernel CPU-view address returned from dma_alloc_attrs”…”�”}”(hj<êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j8êh´MEhj9êubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j8êh´MEhj¨éubjÓ)�”}”(hŒJ``dma_addr_t dma_addr`` device-view address returned from dma_alloc_attrs ”h]”(jÙ)�”}”(hŒ``dma_addr_t dma_addr``”h]”jß)�”}”(hj\êh]”hŒdma_addr_t dma_addr”…”�”}”(hj^êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjZêubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MFhjVêubjõ)�”}”(hhh]”j[)�”}”(hŒ1device-view address returned from dma_alloc_attrs”h]”hŒ1device-view address returned from dma_alloc_attrs”…”�”}”(hjuêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jqêh´MFhjrêubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjVêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jqêh´MFhj¨éubjÓ)�”}”(hŒG``size_t size`` size of memory originally requested in dma_alloc_attrs ”h]”(jÙ)�”}”(hŒ``size_t size``”h]”jß)�”}”(hj•êh]”hŒ size_t size”…”�”}”(hj—êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj“êubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MGhj�êubjõ)�”}”(hhh]”j[)�”}”(hŒ6size of memory originally requested in dma_alloc_attrs”h]”hŒ6size of memory originally requested in dma_alloc_attrs”…”�”}”(hj®êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jªêh´MGhj«êubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj�êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jªêh´MGhj¨éubjÓ)�”}”(hŒV``unsigned long attrs`` attributes of mapping properties requested in dma_alloc_attrs ”h]”(jÙ)�”}”(hŒ``unsigned long attrs``”h]”jß)�”}”(hjÎêh]”hŒunsigned long attrs”…”�”}”(hjÐêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÌêubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MHhjÈêubjõ)�”}”(hhh]”j[)�”}”(hŒ=attributes of mapping properties requested in dma_alloc_attrs”h]”hŒ=attributes of mapping properties requested in dma_alloc_attrs”…”�”}”(hjçêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jãêh´MHhjäêubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÈêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jãêh´MHhj¨éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŒéubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj ëh]”hŒ Description”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MJhjŒéubj[)�”}”(hŒ»Map a coherent DMA buffer previously allocated by dma_alloc_attrs into user space. The coherent DMA buffer must not be freed by the driver until the user space mapping has been released.”h]”hŒ»Map a coherent DMA buffer previously allocated by dma_alloc_attrs into user space. The coherent DMA buffer must not be freed by the driver until the user space mapping has been released.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MIhjŒéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#dma_addressing_limited (C function)”Œc.dma_addressing_limited”hNt”auh1hÜhjèÓh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0bool dma_addressing_limited (struct device *dev)”h]”hù)�”}”(hŒ/bool dma_addressing_limited(struct device *dev)”h]”(j¿7)�”}”(hj:h]”hŒbool”…”�”}”(hjNëh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjJëh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÓubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJëh²hh³j[ëh´MÓubj")�”}”(hŒdma_addressing_limited”h]”j()�”}”(hŒdma_addressing_limited”h]”hŒdma_addressing_limited”…”�”}”(hjnëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjëubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjJëh²hh³j[ëh´MÓubj÷7)�”}”(hŒ(struct device *dev)”h]”jý7)�”}”(hŒstruct device *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŠëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj†ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ëubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj¨ëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jªëŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jpësbŒc.dma_addressing_limited”†”asbuh1hhj†ëubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ëubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖëh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj†ëubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjãëh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj†ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj‚ëubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjJëh²hh³j[ëh´MÓubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjFëh²hh³j[ëh´MÓubah}”(h]”jAëah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j[ëh´MÓhjCëh²hubjV)�”}”(hhh]”j[)�”}”(hŒ*return if the device is addressing limited”h]”hŒ*return if the device is addressing limited”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÓhj ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjCëh²hh³j[ëh´MÓubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj%ìj{j%ìj|‰j}‰j~‰uh1híh²hhjèÓh³Nh´Nubj€)�”}”(hX**Parameters** ``struct device *dev`` device to check **Description** Return ``true`` if the devices DMA mask is too small to address all memory in the system, else ``false``. Lack of addressing bits is the prime reason for bounce buffering, but might not be the only one.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj/ìh]”hŒ Parameters”…”�”}”(hj1ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj-ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´M×hj)ìubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ'``struct device *dev`` device to check ”h]”(jÙ)�”}”(hŒ``struct device *dev``”h]”jß)�”}”(hjNìh]”hŒstruct device *dev”…”�”}”(hjPìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjLìubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÔhjHìubjõ)�”}”(hhh]”j[)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hjgìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jcìh´MÔhjdìubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjHìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jcìh´MÔhjEìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj)ìubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hj‰ìh]”hŒ Description”…”�”}”(hj‹ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‡ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÖhj)ìubj[)�”}”(hŒËReturn ``true`` if the devices DMA mask is too small to address all memory in the system, else ``false``. Lack of addressing bits is the prime reason for bounce buffering, but might not be the only one.”h]”(hŒReturn ”…”�”}”(hjŸìh²hh³Nh´Nubjß)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj§ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŸìubhŒP if the devices DMA mask is too small to address all memory in the system, else ”…”�”}”(hjŸìh²hh³Nh´Nubjß)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj¹ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŸìubhŒc. Lack of addressing bits is the prime reason for bounce buffering, but might not be the only one.”…”�”}”(hjŸìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:78: ./kernel/dma/mapping.c”h´MÕhj)ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjèÓh²hh³Nh´Nubeh}”(h]”Œdevice-drivers-dma-management”ah ]”h"]”Œdevice drivers dma management”ah$]”h&]”uh1hµhh·h²hh³hÊh´KLubh¶)�”}”(hhh]”(h»)�”}”(hŒDevice drivers PnP support”h]”hŒDevice drivers PnP support”…”�”}”(hjäìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjáìh²hh³hÊh´KRubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"pnp_register_protocol (C function)”Œc.pnp_register_protocol”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9int pnp_register_protocol (struct pnp_protocol *protocol)”h]”hù)�”}”(hŒ8int pnp_register_protocol(struct pnp_protocol *protocol)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjíh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:84: ./drivers/pnp/core.c”h´K*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíh²hh³jíh´K*ubj")�”}”(hŒpnp_register_protocol”h]”j()�”}”(hŒpnp_register_protocol”h]”hŒpnp_register_protocol”…”�”}”(hj,íh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj(íubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjíh²hh³jíh´K*ubj÷7)�”}”(hŒ(struct pnp_protocol *protocol)”h]”jý7)�”}”(hŒstruct pnp_protocol *protocol”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjHíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjDíubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDíubh)�”}”(hhh]”j()�”}”(hŒ pnp_protocol”h]”hŒ pnp_protocol”…”�”}”(hjfíh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjcíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jhíŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j.ísbŒc.pnp_register_protocol”†”asbuh1hhjDíubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDíubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj”íh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjDíubj()�”}”(hŒprotocol”h]”hŒprotocol”…”�”}”(hj¡íh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjDíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj@íubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjíh²hh³jíh´K*ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjíh²hh³jíh´K*ubah}”(h]”jþìah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jíh´K*hjíh²hubjV)�”}”(hhh]”j[)�”}”(hŒ$adds a pnp protocol to the pnp layer”h]”hŒ$adds a pnp protocol to the pnp layer”…”�”}”(hjËíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:84: ./drivers/pnp/core.c”h´K*hjÈíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjíh²hh³jíh´K*ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjãíj{jãíj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒ�**Parameters** ``struct pnp_protocol *protocol`` pointer to the corresponding pnp_protocol structure **Description** Ex protocols: ISAPNP, PNPBIOS, etc”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjííh]”hŒ Parameters”…”�”}”(hjïíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjëíubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:84: ./drivers/pnp/core.c”h´K.hjçíubjÎ)�”}”(hhh]”jÓ)�”}”(hŒV``struct pnp_protocol *protocol`` pointer to the corresponding pnp_protocol structure ”h]”(jÙ)�”}”(hŒ!``struct pnp_protocol *protocol``”h]”jß)�”}”(hj îh]”hŒstruct pnp_protocol *protocol”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj îubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:84: ./drivers/pnp/core.c”h´K+hjîubjõ)�”}”(hhh]”j[)�”}”(hŒ3pointer to the corresponding pnp_protocol structure”h]”hŒ3pointer to the corresponding pnp_protocol structure”…”�”}”(hj%îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j!îh´K+hj"îubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j!îh´K+hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjçíubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjGîh]”hŒ Description”…”�”}”(hjIîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjEîubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:84: ./drivers/pnp/core.c”h´K-hjçíubj3)�”}”(hŒ"Ex protocols: ISAPNP, PNPBIOS, etc”h]”j[)�”}”(hj_îh]”hŒ"Ex protocols: ISAPNP, PNPBIOS, etc”…”�”}”(hjaîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:84: ./drivers/pnp/core.c”h´K,hj]îubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jnîh´K,hjçíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$pnp_request_card_device (C function)”Œc.pnp_request_card_device”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒlstruct pnp_dev * pnp_request_card_device (struct pnp_card_link *clink, const char *id, struct pnp_dev *from)”h]”hù)�”}”(hŒjstruct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink, const char *id, struct pnp_dev *from)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj•îh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj‘îh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘îh²hh³j¢îh´M*ubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hj´îh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj±îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¶îŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œpnp_request_card_device”sbŒc.pnp_request_card_device”†”asbuh1hhj‘îh²hh³j¢îh´M*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘îh²hh³j¢îh´M*ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjãîh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj‘îh²hh³j¢îh´M*ubj")�”}”(hŒpnp_request_card_device”h]”j()�”}”(hjÒîh]”hŒpnp_request_card_device”…”�”}”(hjôîh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjðîubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj‘îh²hh³j¢îh´M*ubj÷7)�”}”(hŒC(struct pnp_card_link *clink, const char *id, struct pnp_dev *from)”h]”(jý7)�”}”(hŒstruct pnp_card_link *clink”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj ïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ïubh)�”}”(hhh]”j()�”}”(hŒ pnp_card_link”h]”hŒ pnp_card_link”…”�”}”(hj-ïh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj*ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j/ïŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÐîŒc.pnp_request_card_device”†”asbuh1hhj ïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ïubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjYïh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj ïubj()�”}”(hŒclink”h]”hŒclink”…”�”}”(hjfïh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjïubjý7)�”}”(hŒconst char *id”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj{ïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ïubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjšïh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj{ïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ïubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¶ïh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj{ïubj()�”}”(hŒid”h]”hŒid”…”�”}”(hjÃïh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj{ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjïubjý7)�”}”(hŒstruct pnp_dev *from”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÜïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjØïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØïubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjúïh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj÷ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jüïŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÐîŒc.pnp_request_card_device”†”asbuh1hhjØïubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØïubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj&ðh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjØïubj()�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hj3ðh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjØïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjïubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj‘îh²hh³j¢îh´M*ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj�îh²hh³j¢îh´M*ubah}”(h]”jˆîah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¢îh´M*hjŠîh²hubjV)�”}”(hhh]”j[)�”}”(hŒ2Searches for a PnP device under the specified card”h]”hŒ2Searches for a PnP device under the specified card”…”�”}”(hj]ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M*hjZðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjŠîh²hh³j¢îh´M*ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjuðj{juðj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hX"**Parameters** ``struct pnp_card_link *clink`` pointer to the card link, cannot be NULL ``const char *id`` pointer to a PnP ID structure that explains the rules for finding the device ``struct pnp_dev *from`` Starting place to search from. If NULL it will start from the beginning.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjðh]”hŒ Parameters”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj}ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M.hjyðubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒI``struct pnp_card_link *clink`` pointer to the card link, cannot be NULL ”h]”(jÙ)�”}”(hŒ``struct pnp_card_link *clink``”h]”jß)�”}”(hjžðh]”hŒstruct pnp_card_link *clink”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjœðubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M+hj˜ðubjõ)�”}”(hhh]”j[)�”}”(hŒ(pointer to the card link, cannot be NULL”h]”hŒ(pointer to the card link, cannot be NULL”…”�”}”(hj·ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j³ðh´M+hj´ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj˜ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j³ðh´M+hj•ðubjÓ)�”}”(hŒ```const char *id`` pointer to a PnP ID structure that explains the rules for finding the device ”h]”(jÙ)�”}”(hŒ``const char *id``”h]”jß)�”}”(hj×ðh]”hŒconst char *id”…”�”}”(hjÙðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÕðubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M,hjÑðubjõ)�”}”(hhh]”j[)�”}”(hŒLpointer to a PnP ID structure that explains the rules for finding the device”h]”hŒLpointer to a PnP ID structure that explains the rules for finding the device”…”�”}”(hjððh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jìðh´M,hjíðubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÑðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jìðh´M,hj•ðubjÓ)�”}”(hŒa``struct pnp_dev *from`` Starting place to search from. If NULL it will start from the beginning.”h]”(jÙ)�”}”(hŒ``struct pnp_dev *from``”h]”jß)�”}”(hjñh]”hŒstruct pnp_dev *from”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M.hj ñubjõ)�”}”(hhh]”j[)�”}”(hŒHStarting place to search from. If NULL it will start from the beginning.”h]”hŒHStarting place to search from. If NULL it will start from the beginning.”…”�”}”(hj)ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M-hj&ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j%ñh´M.hj•ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjyðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$pnp_release_card_device (C function)”Œc.pnp_release_card_device”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2void pnp_release_card_device (struct pnp_dev *dev)”h]”hù)�”}”(hŒ1void pnp_release_card_device(struct pnp_dev *dev)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjjñh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjfñh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M^ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfñh²hh³jxñh´M^ubj")�”}”(hŒpnp_release_card_device”h]”j()�”}”(hŒpnp_release_card_device”h]”hŒpnp_release_card_device”…”�”}”(hj‹ñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‡ñubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjfñh²hh³jxñh´M^ubj÷7)�”}”(hŒ(struct pnp_dev *dev)”h]”jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj§ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj£ñubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£ñubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjÅñh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÂñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jÇñŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j�ñsbŒc.pnp_release_card_device”†”asbuh1hhj£ñubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£ñubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjóñh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj£ñubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj£ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjŸñubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjfñh²hh³jxñh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjbñh²hh³jxñh´M^ubah}”(h]”j]ñah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jxñh´M^hj_ñh²hubjV)�”}”(hhh]”j[)�”}”(hŒ4call this when the driver no longer needs the device”h]”hŒ4call this when the driver no longer needs the device”…”�”}”(hj*òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M^hj'òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj_ñh²hh³jxñh´M^ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjBòj{jBòj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒM**Parameters** ``struct pnp_dev *dev`` pointer to the PnP device structure”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjLòh]”hŒ Parameters”…”�”}”(hjNòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjJòubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´MbhjFòubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ;``struct pnp_dev *dev`` pointer to the PnP device structure”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hjkòh]”hŒstruct pnp_dev *dev”…”�”}”(hjmòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjiòubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´Mdhjeòubjõ)�”}”(hhh]”j[)�”}”(hŒ#pointer to the PnP device structure”h]”hŒ#pointer to the PnP device structure”…”�”}”(hj„òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M_hj�òubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjeòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j€òh´Mdhjbòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjFòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%pnp_register_card_driver (C function)”Œc.pnp_register_card_driver”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:int pnp_register_card_driver (struct pnp_card_driver *drv)”h]”hù)�”}”(hŒ9int pnp_register_card_driver(struct pnp_card_driver *drv)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅòh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÁòh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M„ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁòh²hh³jÓòh´M„ubj")�”}”(hŒpnp_register_card_driver”h]”j()�”}”(hŒpnp_register_card_driver”h]”hŒpnp_register_card_driver”…”�”}”(hjæòh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjâòubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÁòh²hh³jÓòh´M„ubj÷7)�”}”(hŒ(struct pnp_card_driver *drv)”h]”jý7)�”}”(hŒstruct pnp_card_driver *drv”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjþòubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþòubh)�”}”(hhh]”j()�”}”(hŒpnp_card_driver”h]”hŒpnp_card_driver”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j"óŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jèòsbŒc.pnp_register_card_driver”†”asbuh1hhjþòubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþòubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjNóh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjþòubj()�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hj[óh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjúòubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÁòh²hh³jÓòh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj½òh²hh³jÓòh´M„ubah}”(h]”j¸òah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jÓòh´M„hjºòh²hubjV)�”}”(hhh]”j[)�”}”(hŒ.registers a PnP card driver with the PnP Layer”h]”hŒ.registers a PnP card driver with the PnP Layer”…”�”}”(hj…óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M„hj‚óh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjºòh²hh³jÓòh´M„ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj�ój{j�ój|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒS**Parameters** ``struct pnp_card_driver *drv`` pointer to the driver to register”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj§óh]”hŒ Parameters”…”�”}”(hj©óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¥óubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´Mˆhj¡óubjÎ)�”}”(hhh]”jÓ)�”}”(hŒA``struct pnp_card_driver *drv`` pointer to the driver to register”h]”(jÙ)�”}”(hŒ``struct pnp_card_driver *drv``”h]”jß)�”}”(hjÆóh]”hŒstruct pnp_card_driver *drv”…”�”}”(hjÈóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄóubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´MŠhjÀóubjõ)�”}”(hhh]”j[)�”}”(hŒ!pointer to the driver to register”h]”hŒ!pointer to the driver to register”…”�”}”(hjßóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:87: ./drivers/pnp/card.c”h´M…hjÜóubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛóh´MŠhj½óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¡óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'pnp_unregister_card_driver (C function)”Œc.pnp_unregister_card_driver”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=void pnp_unregister_card_driver (struct pnp_card_driver *drv)”h]”hù)�”}”(hŒstruct pnp_id *pnp_add_id(struct pnp_dev *dev, const char *id)”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj{õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjwõh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:90: ./drivers/pnp/driver.c”h´M6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwõh²hh³jˆõh´M6ubh)�”}”(hhh]”j()�”}”(hŒpnp_id”h]”hŒpnp_id”…”�”}”(hjšõh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj—õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jœõŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68Œ pnp_add_id”sbŒ c.pnp_add_id”†”asbuh1hhjwõh²hh³jˆõh´M6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwõh²hh³jˆõh´M6ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÉõh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjwõh²hh³jˆõh´M6ubj")�”}”(hŒ pnp_add_id”h]”j()�”}”(hj¸õh]”hŒ pnp_add_id”…”�”}”(hjÚõh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÖõubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjwõh²hh³jˆõh´M6ubj÷7)�”}”(hŒ%(struct pnp_dev *dev, const char *id)”h]”(jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjõõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjñõubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñõubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jöŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”j¶õŒ c.pnp_add_id”†”asbuh1hhjñõubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñõubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj?öh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjñõubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjLöh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjñõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjíõubjý7)�”}”(hŒconst char *id”h]”(hÿ)�”}”(hj‚8h]”hŒconst”…”�”}”(hjeöh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjaöubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjröh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaöubj¿7)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj€öh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjaöubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaöubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjœöh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjaöubj()�”}”(hŒid”h]”hŒid”…”�”}”(hj©öh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjíõubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjwõh²hh³jˆõh´M6ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjsõh²hh³jˆõh´M6ubah}”(h]”jnõah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jˆõh´M6hjpõh²hubjV)�”}”(hhh]”j[)�”}”(hŒ'adds an EISA id to the specified device”h]”hŒ'adds an EISA id to the specified device”…”�”}”(hjÓöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:90: ./drivers/pnp/driver.c”h´M6hjÐöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjpõh²hh³jˆõh´M6ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjëöj{jëöj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒz**Parameters** ``struct pnp_dev *dev`` pointer to the desired device ``const char *id`` pointer to an EISA id string”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjõöh]”hŒ Parameters”…”�”}”(hj÷öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjóöubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:90: ./drivers/pnp/driver.c”h´M:hjïöubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ6``struct pnp_dev *dev`` pointer to the desired device ”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hj÷h]”hŒstruct pnp_dev *dev”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:90: ./drivers/pnp/driver.c”h´M7hj÷ubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to the desired device”h]”hŒpointer to the desired device”…”�”}”(hj-÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j)÷h´M7hj*÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j)÷h´M7hj ÷ubjÓ)�”}”(hŒ/``const char *id`` pointer to an EISA id string”h]”(jÙ)�”}”(hŒ``const char *id``”h]”jß)�”}”(hjM÷h]”hŒconst char *id”…”�”}”(hjO÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjK÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:90: ./drivers/pnp/driver.c”h´M9hjG÷ubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to an EISA id string”h]”hŒpointer to an EISA id string”…”�”}”(hjf÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:90: ./drivers/pnp/driver.c”h´M8hjc÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjG÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jb÷h´M9hj ÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjïöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpnp_start_dev (C function)”Œc.pnp_start_dev”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'int pnp_start_dev (struct pnp_dev *dev)”h]”hù)�”}”(hŒ&int pnp_start_dev(struct pnp_dev *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj§÷h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj£÷h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MLubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£÷h²hh³jµ÷h´MLubj")�”}”(hŒ pnp_start_dev”h]”j()�”}”(hŒ pnp_start_dev”h]”hŒ pnp_start_dev”…”�”}”(hjÈ÷h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÄ÷ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj£÷h²hh³jµ÷h´MLubj÷7)�”}”(hŒ(struct pnp_dev *dev)”h]”jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjä÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjà÷ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà÷ubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÿ÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jøŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÊ÷sbŒc.pnp_start_dev”†”asbuh1hhjà÷ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà÷ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj0øh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjà÷ubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj=øh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjà÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÜ÷ubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj£÷h²hh³jµ÷h´MLubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjŸ÷h²hh³jµ÷h´MLubah}”(h]”jš÷ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jµ÷h´MLhjœ÷h²hubjV)�”}”(hhh]”j[)�”}”(hŒ!low-level start of the PnP device”h]”hŒ!low-level start of the PnP device”…”�”}”(hjgøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MLhjdøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjœ÷h²hh³jµ÷h´MLubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjøj{jøj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒŒ**Parameters** ``struct pnp_dev *dev`` pointer to the desired device **Description** assumes that resources have already been allocated”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‰øh]”hŒ Parameters”…”�”}”(hj‹øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‡øubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MPhjƒøubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ6``struct pnp_dev *dev`` pointer to the desired device ”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hj¨øh]”hŒstruct pnp_dev *dev”…”�”}”(hjªøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦øubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MMhj¢øubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to the desired device”h]”hŒpointer to the desired device”…”�”}”(hjÁøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j½øh´MMhj¾øubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¢øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j½øh´MMhjŸøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjƒøubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjãøh]”hŒ Description”…”�”}”(hjåøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjáøubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MOhjƒøubj[)�”}”(hŒ2assumes that resources have already been allocated”h]”hŒ2assumes that resources have already been allocated”…”�”}”(hjùøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MNhjƒøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpnp_stop_dev (C function)”Œc.pnp_stop_dev”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&int pnp_stop_dev (struct pnp_dev *dev)”h]”hù)�”}”(hŒ%int pnp_stop_dev(struct pnp_dev *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj(ùh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj$ùh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mdubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ùh²hh³j6ùh´Mdubj")�”}”(hŒ pnp_stop_dev”h]”j()�”}”(hŒ pnp_stop_dev”h]”hŒ pnp_stop_dev”…”�”}”(hjIùh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjEùubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj$ùh²hh³j6ùh´Mdubj÷7)�”}”(hŒ(struct pnp_dev *dev)”h]”jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjeùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjaùubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaùubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjƒùh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj€ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j…ùŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jKùsbŒc.pnp_stop_dev”†”asbuh1hhjaùubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaùubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj±ùh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjaùubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¾ùh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjaùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj]ùubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj$ùh²hh³j6ùh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj ùh²hh³j6ùh´Mdubah}”(h]”jùah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j6ùh´Mdhjùh²hubjV)�”}”(hhh]”j[)�”}”(hŒ#low-level disable of the PnP device”h]”hŒ#low-level disable of the PnP device”…”�”}”(hjèùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mdhjåùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjùh²hh³j6ùh´Mdubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjúj{júj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒq**Parameters** ``struct pnp_dev *dev`` pointer to the desired device **Description** does not free resources”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj úh]”hŒ Parameters”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´MhhjúubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ6``struct pnp_dev *dev`` pointer to the desired device ”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hj)úh]”hŒstruct pnp_dev *dev”…”�”}”(hj+úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj'úubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mehj#úubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to the desired device”h]”hŒpointer to the desired device”…”�”}”(hjBúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j>úh´Mehj?úubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj#úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j>úh´Mehj úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjúubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjdúh]”hŒ Description”…”�”}”(hjfúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjbúubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mghjúubj[)�”}”(hŒdoes not free resources”h]”hŒdoes not free resources”…”�”}”(hjzúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mfhjúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpnp_activate_dev (C function)”Œc.pnp_activate_dev”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int pnp_activate_dev (struct pnp_dev *dev)”h]”hù)�”}”(hŒ)int pnp_activate_dev(struct pnp_dev *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj©úh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj¥úh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mzubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥úh²hh³j·úh´Mzubj")�”}”(hŒpnp_activate_dev”h]”j()�”}”(hŒpnp_activate_dev”h]”hŒpnp_activate_dev”…”�”}”(hjÊúh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÆúubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj¥úh²hh³j·úh´Mzubj÷7)�”}”(hŒ(struct pnp_dev *dev)”h]”jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjæúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjâúubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâúubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jûŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÌúsbŒc.pnp_activate_dev”†”asbuh1hhjâúubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâúubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj2ûh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjâúubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hj?ûh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjâúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjÞúubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj¥úh²hh³j·úh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj¡úh²hh³j·úh´Mzubah}”(h]”jœúah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j·úh´Mzhjžúh²hubjV)�”}”(hhh]”j[)�”}”(hŒactivates a PnP device for use”h]”hŒactivates a PnP device for use”…”�”}”(hjiûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´Mzhjfûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjžúh²hh³j·úh´Mzubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj�ûj{j�ûj|•‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒ‹**Parameters** ``struct pnp_dev *dev`` pointer to the desired device **Description** does not validate or set resources so be careful.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj‹ûh]”hŒ Parameters”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‰ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M~hj…ûubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ6``struct pnp_dev *dev`` pointer to the desired device ”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hjªûh]”hŒstruct pnp_dev *dev”…”�”}”(hj¬ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¨ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M{hj¤ûubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to the desired device”h]”hŒpointer to the desired device”…”�”}”(hjÃûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¿ûh´M{hjÀûubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¤ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¿ûh´M{hj¡ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj…ûubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjåûh]”hŒ Description”…”�”}”(hjçûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjãûubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M}hj…ûubj[)�”}”(hŒ1does not validate or set resources so be careful.”h]”hŒ1does not validate or set resources so be careful.”…”�”}”(hjûûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M|hj…ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpnp_disable_dev (C function)”Œc.pnp_disable_dev”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)int pnp_disable_dev (struct pnp_dev *dev)”h]”hù)�”}”(hŒ(int pnp_disable_dev(struct pnp_dev *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj*üh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj&üh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M”ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&üh²hh³j8üh´M”ubj")�”}”(hŒpnp_disable_dev”h]”j()�”}”(hŒpnp_disable_dev”h]”hŒpnp_disable_dev”…”�”}”(hjKüh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjGüubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj&üh²hh³j8üh´M”ubj÷7)�”}”(hŒ(struct pnp_dev *dev)”h]”jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjgüh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjcüubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcüubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hj…üh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‚üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j‡üŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jMüsbŒc.pnp_disable_dev”†”asbuh1hhjcüubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcüubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj³üh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjcüubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÀüh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjcüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj_üubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj&üh²hh³j8üh´M”ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj"üh²hh³j8üh´M”ubah}”(h]”jüah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j8üh´M”hjüh²hubjV)�”}”(hhh]”j[)�”}”(hŒdisables device”h]”hŒdisables device”…”�”}”(hjêüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M”hjçüh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjüh²hh³j8üh´M”ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjýj{jýj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒ¨**Parameters** ``struct pnp_dev *dev`` pointer to the desired device **Description** inform the correct pnp protocol so that resources can be used by other devices”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj ýh]”hŒ Parameters”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M˜hjýubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ6``struct pnp_dev *dev`` pointer to the desired device ”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hj+ýh]”hŒstruct pnp_dev *dev”…”�”}”(hj-ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj)ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M•hj%ýubjõ)�”}”(hhh]”j[)�”}”(hŒpointer to the desired device”h]”hŒpointer to the desired device”…”�”}”(hjDýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j@ýh´M•hjAýubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj%ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j@ýh´M•hj"ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjýubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjfýh]”hŒ Description”…”�”}”(hjhýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjdýubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M—hjýubj[)�”}”(hŒNinform the correct pnp protocol so that resources can be used by other devices”h]”hŒNinform the correct pnp protocol so that resources can be used by other devices”…”�”}”(hj|ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:93: ./drivers/pnp/manager.c”h´M–hjýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpnp_is_active (C function)”Œc.pnp_is_active”hNt”auh1hÜhjáìh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'int pnp_is_active (struct pnp_dev *dev)”h]”hù)�”}”(hŒ&int pnp_is_active(struct pnp_dev *dev)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hj«ýh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hj§ýh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:96: ./drivers/pnp/support.c”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§ýh²hh³j¹ýh´Kubj")�”}”(hŒ pnp_is_active”h]”j()�”}”(hŒ pnp_is_active”h]”hŒ pnp_is_active”…”�”}”(hjÌýh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÈýubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj§ýh²hh³j¹ýh´Kubj÷7)�”}”(hŒ(struct pnp_dev *dev)”h]”jý7)�”}”(hŒstruct pnp_dev *dev”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjèýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjäýubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäýubh)�”}”(hhh]”j()�”}”(hŒpnp_dev”h]”hŒpnp_dev”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jþŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jÎýsbŒc.pnp_is_active”†”asbuh1hhjäýubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäýubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj4þh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjäýubj()�”}”(hŒdev”h]”hŒdev”…”�”}”(hjAþh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjäýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjàýubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hj§ýh²hh³j¹ýh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj£ýh²hh³j¹ýh´Kubah}”(h]”jžýah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j¹ýh´Khj ýh²hubjV)�”}”(hhh]”j[)�”}”(hŒ?Determines if a device is active based on its current resources”h]”hŒ?Determines if a device is active based on its current resources”…”�”}”(hjkþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:96: ./drivers/pnp/support.c”h´Khjhþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj ýh²hh³j¹ýh´Kubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjƒþj{jƒþj|‰j}‰j~‰uh1híh²hhjáìh³Nh´Nubj€)�”}”(hŒK**Parameters** ``struct pnp_dev *dev`` pointer to the desired PnP device”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj�þh]”hŒ Parameters”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj‹þubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:96: ./drivers/pnp/support.c”h´Khj‡þubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ9``struct pnp_dev *dev`` pointer to the desired PnP device”h]”(jÙ)�”}”(hŒ``struct pnp_dev *dev``”h]”jß)�”}”(hj¬þh]”hŒstruct pnp_dev *dev”…”�”}”(hj®þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjªþubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:96: ./drivers/pnp/support.c”h´Khj¦þubjõ)�”}”(hhh]”j[)�”}”(hŒ!pointer to the desired PnP device”h]”hŒ!pointer to the desired PnP device”…”�”}”(hjÅþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:96: ./drivers/pnp/support.c”h´KhjÂþubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¦þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÁþh´Khj£þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj‡þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáìh²hh³Nh´Nubeh}”(h]”Œdevice-drivers-pnp-support”ah ]”h"]”Œdevice drivers pnp support”ah$]”h&]”uh1hµhh·h²hh³hÊh´KRubh¶)�”}”(hhh]”(h»)�”}”(hŒUserspace IO devices”h]”hŒUserspace IO devices”…”�”}”(hjøþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjõþh²hh³hÊh´KdubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒuio_event_notify (C function)”Œc.uio_event_notify”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-void uio_event_notify (struct uio_info *info)”h]”hù)�”}”(hŒ,void uio_event_notify(struct uio_info *info)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjÿh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M«ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿh²hh³j-ÿh´M«ubj")�”}”(hŒuio_event_notify”h]”j()�”}”(hŒuio_event_notify”h]”hŒuio_event_notify”…”�”}”(hj@ÿh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj<ÿubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÿh²hh³j-ÿh´M«ubj÷7)�”}”(hŒ(struct uio_info *info)”h]”jý7)�”}”(hŒstruct uio_info *info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj\ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjXÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXÿubh)�”}”(hhh]”j()�”}”(hŒuio_info”h]”hŒuio_info”…”�”}”(hjzÿh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjwÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j|ÿŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jBÿsbŒc.uio_event_notify”†”asbuh1hhjXÿubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXÿubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¨ÿh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjXÿubj()�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjµÿh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjXÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjTÿubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjÿh²hh³j-ÿh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjÿh²hh³j-ÿh´M«ubah}”(h]”jÿah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j-ÿh´M«hjÿh²hubjV)�”}”(hhh]”j[)�”}”(hŒtrigger an interrupt event”h]”hŒtrigger an interrupt event”…”�”}”(hjßÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M«hjÜÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÿh²hh³j-ÿh´M«ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj÷ÿj{j÷ÿj|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hŒC**Parameters** ``struct uio_info *info`` UIO device capabilities”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÿÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M¯hjûÿubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ1``struct uio_info *info`` UIO device capabilities”h]”(jÙ)�”}”(hŒ``struct uio_info *info``”h]”jß)�”}”(hj h]”hŒstruct uio_info *info”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M±hjubjõ)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M¬hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j5h´M±hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjûÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"__uio_register_device (C function)”Œc.__uio_register_device”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ^int __uio_register_device (struct module *owner, struct device *parent, struct uio_info *info)”h]”hù)�”}”(hŒ]int __uio_register_device(struct module *owner, struct device *parent, struct uio_info *info)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjvh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÒubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvh²hh³jˆh´MÒubj")�”}”(hŒ__uio_register_device”h]”j()�”}”(hŒ__uio_register_device”h]”hŒ__uio_register_device”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj—ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjvh²hh³jˆh´MÒubj÷7)�”}”(hŒD(struct module *owner, struct device *parent, struct uio_info *info)”h]”(jý7)�”}”(hŒstruct module *owner”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj³ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubh)�”}”(hhh]”j()�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j׌modname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68j�sbŒc.__uio_register_device”†”asbuh1hhj³ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj³ubj()�”}”(hŒowner”h]”hŒowner”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¯ubjý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj%ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jIŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jñŒc.__uio_register_device”†”asbuh1hhj%ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj%ubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¯ubjý7)�”}”(hŒstruct uio_info *info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•ubh)�”}”(hhh]”j()�”}”(hŒuio_info”h]”hŒuio_info”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j¹Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jñŒc.__uio_register_device”†”asbuh1hhj•ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj•ubj()�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjvh²hh³jˆh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjrh²hh³jˆh´MÒubah}”(h]”jmah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jˆh´MÒhjoh²hubjV)�”}”(hhh]”j[)�”}”(hŒ"register a new userspace IO device”h]”hŒ"register a new userspace IO device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÒhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjoh²hh³jˆh´MÒubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzj2j{j2j|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hŒñ**Parameters** ``struct module *owner`` module that creates the new device ``struct device *parent`` parent device ``struct uio_info *info`` UIO device capabilities **Description** returns zero on success or a negative error code.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj<h]”hŒ Parameters”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÖhj6ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ<``struct module *owner`` module that creates the new device ”h]”(jÙ)�”}”(hŒ``struct module *owner``”h]”jß)�”}”(hj[h]”hŒstruct module *owner”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÓhjUubjõ)�”}”(hhh]”j[)�”}”(hŒ"module that creates the new device”h]”hŒ"module that creates the new device”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jph´MÓhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jph´MÓhjRubjÓ)�”}”(hŒ(``struct device *parent`` parent device ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hj”h]”hŒstruct device *parent”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÔhjŽubjõ)�”}”(hhh]”j[)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j©h´MÔhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j©h´MÔhjRubjÓ)�”}”(hŒ2``struct uio_info *info`` UIO device capabilities ”h]”(jÙ)�”}”(hŒ``struct uio_info *info``”h]”jß)�”}”(hjÍh]”hŒstruct uio_info *info”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÕhjÇubjõ)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jâh´MÕhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jâh´MÕhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj6ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M×hj6ubj[)�”}”(hŒ1returns zero on success or a negative error code.”h]”hŒ1returns zero on success or a negative error code.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MÖhj6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'__devm_uio_register_device (C function)”Œc.__devm_uio_register_device”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒcint __devm_uio_register_device (struct module *owner, struct device *parent, struct uio_info *info)”h]”hù)�”}”(hŒbint __devm_uio_register_device(struct module *owner, struct device *parent, struct uio_info *info)”h]”(j¿7)�”}”(hŒint”h]”hŒint”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjIh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIh²hh³j[h´M7ubj")�”}”(hŒ__devm_uio_register_device”h]”j()�”}”(hŒ__devm_uio_register_device”h]”hŒ__devm_uio_register_device”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjjubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjIh²hh³j[h´M7ubj÷7)�”}”(hŒD(struct module *owner, struct device *parent, struct uio_info *info)”h]”(jý7)�”}”(hŒstruct module *owner”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ubh)�”}”(hhh]”j()�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jªŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jpsbŒc.__devm_uio_register_device”†”asbuh1hhj†ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hj†ubj()�”}”(hŒowner”h]”hŒowner”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj‚ubjý7)�”}”(hŒstruct device *parent”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjøubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubh)�”}”(hhh]”j()�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÄŒc.__devm_uio_register_device”†”asbuh1hhjøubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjøubj()�”}”(hŒparent”h]”hŒparent”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj‚ubjý7)�”}”(hŒstruct uio_info *info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjhubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubh)�”}”(hhh]”j()�”}”(hŒuio_info”h]”hŒuio_info”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”jŒŒmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jÄŒc.__devm_uio_register_device”†”asbuh1hhjhubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjhubj()�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjIh²hh³j[h´M7ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjEh²hh³j[h´M7ubah}”(h]”j@ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j[h´M7hjBh²hubjV)�”}”(hhh]”j[)�”}”(hŒ&Resource managed uio_register_device()”h]”hŒ&Resource managed uio_register_device()”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M7hjêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjBh²hh³j[h´M7ubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjj{jj|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hŒñ**Parameters** ``struct module *owner`` module that creates the new device ``struct device *parent`` parent device ``struct uio_info *info`` UIO device capabilities **Description** returns zero on success or a negative error code.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M;hj ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ<``struct module *owner`` module that creates the new device ”h]”(jÙ)�”}”(hŒ``struct module *owner``”h]”jß)�”}”(hj.h]”hŒstruct module *owner”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M8hj(ubjõ)�”}”(hhh]”j[)�”}”(hŒ"module that creates the new device”h]”hŒ"module that creates the new device”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jCh´M8hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jCh´M8hj%ubjÓ)�”}”(hŒ(``struct device *parent`` parent device ”h]”(jÙ)�”}”(hŒ``struct device *parent``”h]”jß)�”}”(hjgh]”hŒstruct device *parent”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M9hjaubjõ)�”}”(hhh]”j[)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j|h´M9hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j|h´M9hj%ubjÓ)�”}”(hŒ2``struct uio_info *info`` UIO device capabilities ”h]”(jÙ)�”}”(hŒ``struct uio_info *info``”h]”jß)�”}”(hj h]”hŒstruct uio_info *info”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M:hjšubjõ)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jµh´M:hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jµh´M:hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjÛh]”hŒ Description”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M<hj ubj[)�”}”(hŒ1returns zero on success or a negative error code.”h]”hŒ1returns zero on success or a negative error code.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M;hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"uio_unregister_device (C function)”Œc.uio_unregister_device”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2void uio_unregister_device (struct uio_info *info)”h]”hù)�”}”(hŒ1void uio_unregister_device(struct uio_info *info)”h]”(j¿7)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jË7ah"]”h$]”h&]”uh1j¾7hjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MXubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³j.h´MXubj")�”}”(hŒuio_unregister_device”h]”j()�”}”(hŒuio_unregister_device”h]”hŒuio_unregister_device”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj=ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjh²hh³j.h´MXubj÷7)�”}”(hŒ(struct uio_info *info)”h]”jý7)�”}”(hŒstruct uio_info *info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjYubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYubh)�”}”(hhh]”j()�”}”(hŒuio_info”h]”hŒuio_info”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jtŒreftype”j68Œ reftarget”j}Œmodname”NŒ classname”Nj:8j=8)�”}”j@8]”jC8)�”}”j68jCsbŒc.uio_unregister_device”†”asbuh1hhjYubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYubjW8)�”}”(hjZ8h]”hŒ*”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jc8ah"]”h$]”h&]”uh1jV8hjYubj()�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj?j@uh1jü7hjUubah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1jö7hjh²hh³j.h´MXubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjh²hh³j.h´MXubah}”(h]”jah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j.h´MXhjh²hubjV)�”}”(hhh]”j[)�”}”(hŒ!unregister a industrial IO device”h]”hŒ!unregister a industrial IO device”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MXhjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjh²hh³j.h´MXubeh}”(h]”h ]”(jtŒfunction”eh"]”h$]”h&]”jyjtjzjøj{jøj|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hŒC**Parameters** ``struct uio_info *info`` UIO device capabilities”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M\hjüubjÎ)�”}”(hhh]”jÓ)�”}”(hŒ1``struct uio_info *info`` UIO device capabilities”h]”(jÙ)�”}”(hŒ``struct uio_info *info``”h]”jß)�”}”(hj!h]”hŒstruct uio_info *info”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´M^hjubjõ)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:102: ./drivers/uio/uio.c”h´MYhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j6h´M^hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒuio_mem (C struct)”Œ c.uio_mem”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒuio_mem”h]”hù)�”}”(hŒstruct uio_mem”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjwh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwh²hh³jˆh´Kubj")�”}”(hŒuio_mem”h]”j()�”}”(hjuh]”hŒuio_mem”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj—ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjwh²hh³jˆh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjsh²hh³jˆh´Kubah}”(h]”jnah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jˆh´Khjph²hubjV)�”}”(hhh]”j[)�”}”(hŒ"description of a UIO memory region”h]”hŒ"description of a UIO memory region”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Khjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjph²hh³jˆh´Kubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzjÕj{jÕj|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hX�**Definition**:: struct uio_mem { const char *name; phys_addr_t addr; dma_addr_t dma_addr; unsigned long offs; resource_size_t size; int memtype; void __iomem *internal_addr; struct device *dma_device; struct uio_map *map; }; **Members** ``name`` name of the memory region for identification ``addr`` address of the device's memory rounded to page size (phys_addr is used since addr can be logical, virtual, or physical & phys_addr_t should always be large enough to handle any of the address types) ``dma_addr`` DMA handle set by dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only (**addr** should be the void * returned from the same dma_alloc_coherent call) ``offs`` offset of device memory within the page ``size`` size of IO (multiple of page size) ``memtype`` type of memory addr points to ``internal_addr`` ioremap-ped version of addr, for driver internal use ``dma_device`` device struct that was passed to dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only ``map`` for use by the UIO core only.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÝubhŒ:”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KhjÙubj¥)�”}”(hX)struct uio_mem { const char *name; phys_addr_t addr; dma_addr_t dma_addr; unsigned long offs; resource_size_t size; int memtype; void __iomem *internal_addr; struct device *dma_device; struct uio_map *map; };”h]”hX)struct uio_mem { const char *name; phys_addr_t addr; dma_addr_t dma_addr; unsigned long offs; resource_size_t size; int memtype; void __iomem *internal_addr; struct device *dma_device; struct uio_map *map; };”…”�”}”hjúsbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KhjÙubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hj h]”hŒMembers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K*hjÙubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ6``name`` name of the memory region for identification ”h]”(jÙ)�”}”(hŒ``name``”h]”jß)�”}”(hj*h]”hŒname”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Khj$ubjõ)�”}”(hhh]”j[)�”}”(hŒ,name of the memory region for identification”h]”hŒ,name of the memory region for identification”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j?h´Khj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j?h´Khj!ubjÓ)�”}”(hŒÐ``addr`` address of the device's memory rounded to page size (phys_addr is used since addr can be logical, virtual, or physical & phys_addr_t should always be large enough to handle any of the address types) ”h]”(jÙ)�”}”(hŒ``addr``”h]”jß)�”}”(hjch]”hŒaddr”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Khj]ubjõ)�”}”(hhh]”j[)�”}”(hŒÆaddress of the device's memory rounded to page size (phys_addr is used since addr can be logical, virtual, or physical & phys_addr_t should always be large enough to handle any of the address types)”h]”hŒÈaddress of the device’s memory rounded to page size (phys_addr is used since addr can be logical, virtual, or physical & phys_addr_t should always be large enough to handle any of the address types)”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Khjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jxh´Khj!ubjÓ)�”}”(hŒ¦``dma_addr`` DMA handle set by dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only (**addr** should be the void * returned from the same dma_alloc_coherent call) ”h]”(jÙ)�”}”(hŒ ``dma_addr``”h]”jß)�”}”(hj�h]”hŒdma_addr”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K"hj—ubjõ)�”}”(hhh]”j[)�”}”(hŒ˜DMA handle set by dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only (**addr** should be the void * returned from the same dma_alloc_coherent call)”h]”(hŒKDMA handle set by dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only (”…”�”}”(hj¶h²hh³Nh´NubjŠ)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¶ubhŒE should be the void * returned from the same dma_alloc_coherent call)”…”�”}”(hj¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j²h´K"hj!ubjÓ)�”}”(hŒ1``offs`` offset of device memory within the page ”h]”(jÙ)�”}”(hŒ``offs``”h]”jß)�”}”(hjéh]”hŒoffs”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K#hjãubjõ)�”}”(hhh]”j[)�”}”(hŒ'offset of device memory within the page”h]”hŒ'offset of device memory within the page”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jþh´K#hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jþh´K#hj!ubjÓ)�”}”(hŒ,``size`` size of IO (multiple of page size) ”h]”(jÙ)�”}”(hŒ``size``”h]”jß)�”}”(hj" h]”hŒsize”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K$hj ubjõ)�”}”(hhh]”j[)�”}”(hŒ"size of IO (multiple of page size)”h]”hŒ"size of IO (multiple of page size)”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j7 h´K$hj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j7 h´K$hj!ubjÓ)�”}”(hŒ*``memtype`` type of memory addr points to ”h]”(jÙ)�”}”(hŒ ``memtype``”h]”jß)�”}”(hj[ h]”hŒmemtype”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K%hjU ubjõ)�”}”(hhh]”j[)�”}”(hŒtype of memory addr points to”h]”hŒtype of memory addr points to”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jp h´K%hjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjU ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jp h´K%hj!ubjÓ)�”}”(hŒG``internal_addr`` ioremap-ped version of addr, for driver internal use ”h]”(jÙ)�”}”(hŒ``internal_addr``”h]”jß)�”}”(hj” h]”hŒ internal_addr”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K&hjŽ ubjõ)�”}”(hhh]”j[)�”}”(hŒ4ioremap-ped version of addr, for driver internal use”h]”hŒ4ioremap-ped version of addr, for driver internal use”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j© h´K&hjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j© h´K&hj!ubjÓ)�”}”(hŒh``dma_device`` device struct that was passed to dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only ”h]”(jÙ)�”}”(hŒ``dma_device``”h]”jß)�”}”(hjÍ h]”hŒ dma_device”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjË ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K(hjÇ ubjõ)�”}”(hhh]”j[)�”}”(hŒXdevice struct that was passed to dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only”h]”hŒXdevice struct that was passed to dma_alloc_coherent, used with UIO_MEM_DMA_COHERENT only”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K'hjã ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÇ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jâ h´K(hj!ubjÓ)�”}”(hŒ%``map`` for use by the UIO core only.”h]”(jÙ)�”}”(hŒ``map``”h]”jß)�”}”(hj h]”hŒmap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K(hj ubjõ)�”}”(hhh]”j[)�”}”(hŒfor use by the UIO core only.”h]”hŒfor use by the UIO core only.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K)hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´K(hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒuio_port (C struct)”Œ c.uio_port”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒuio_port”h]”hù)�”}”(hŒstruct uio_port”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhj] h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K/ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj] h²hh³jn h´K/ubj")�”}”(hŒuio_port”h]”j()�”}”(hj[ h]”hŒuio_port”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hj} ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hj] h²hh³jn h´K/ubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjY h²hh³jn h´K/ubah}”(h]”jT ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³jn h´K/hjV h²hubjV)�”}”(hhh]”j[)�”}”(hŒ description of a UIO port region”h]”hŒ description of a UIO port region”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K;hj  h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjV h²hh³jn h´K/ubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzj» j{j» j|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hX¹**Definition**:: struct uio_port { const char *name; unsigned long start; unsigned long size; int porttype; struct uio_portio *portio; }; **Members** ``name`` name of the port region for identification ``start`` start of port region ``size`` size of port region ``porttype`` type of port (see UIO_PORT_* below) ``portio`` for use by the UIO core only.”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjà ubhŒ:”…”�”}”(hjà h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K?hj¿ ubj¥)�”}”(hŒ³struct uio_port { const char *name; unsigned long start; unsigned long size; int porttype; struct uio_portio *portio; };”h]”hŒ³struct uio_port { const char *name; unsigned long start; unsigned long size; int porttype; struct uio_portio *portio; };”…”�”}”hjà sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KAhj¿ ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hjñ h]”hŒMembers”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KIhj¿ ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ4``name`` name of the port region for identification ”h]”(jÙ)�”}”(hŒ``name``”h]”jß)�”}”(hj h]”hŒname”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K=hj ubjõ)�”}”(hhh]”j[)�”}”(hŒ*name of the port region for identification”h]”hŒ*name of the port region for identification”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j% h´K=hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j% h´K=hj ubjÓ)�”}”(hŒ``start`` start of port region ”h]”(jÙ)�”}”(hŒ ``start``”h]”jß)�”}”(hjI h]”hŒstart”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K>hjC ubjõ)�”}”(hhh]”j[)�”}”(hŒstart of port region”h]”hŒstart of port region”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j^ h´K>hj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j^ h´K>hj ubjÓ)�”}”(hŒ``size`` size of port region ”h]”(jÙ)�”}”(hŒ``size``”h]”jß)�”}”(hj‚ h]”hŒsize”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K?hj| ubjõ)�”}”(hhh]”j[)�”}”(hŒsize of port region”h]”hŒsize of port region”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j— h´K?hj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj| ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j— h´K?hj ubjÓ)�”}”(hŒ1``porttype`` type of port (see UIO_PORT_* below) ”h]”(jÙ)�”}”(hŒ ``porttype``”h]”jß)�”}”(hj» h]”hŒporttype”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K@hjµ ubjõ)�”}”(hhh]”j[)�”}”(hŒ#type of port (see UIO_PORT_* below)”h]”hŒ#type of port (see UIO_PORT_* below)”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÐ h´K@hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÐ h´K@hj ubjÓ)�”}”(hŒ(``portio`` for use by the UIO core only.”h]”(jÙ)�”}”(hŒ ``portio``”h]”jß)�”}”(hjô h]”hŒportio”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K@hjî ubjõ)�”}”(hhh]”j[)�”}”(hŒfor use by the UIO core only.”h]”hŒfor use by the UIO core only.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KAhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjî ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´K@hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¿ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒuio_info (C struct)”Œ c.uio_info”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒuio_info”h]”hù)�”}”(hŒstruct uio_info”h]”(hÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1hþhjJ h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ h²hh³j[ h´KGubj")�”}”(hŒuio_info”h]”j()�”}”(hjH h]”hŒuio_info”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjj ubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjJ h²hh³j[ h´KGubeh}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjF h²hh³j[ h´KGubah}”(h]”jA ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j[ h´KGhjC h²hubjV)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KZhj� h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjC h²hh³j[ h´KGubeh}”(h]”h ]”(jtŒstruct”eh"]”h$]”h&]”jyjtjzj¨ j{j¨ j|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj€)�”}”(hX'**Definition**:: struct uio_info { struct uio_device *uio_dev; const char *name; const char *version; struct uio_mem mem[MAX_UIO_MAPS]; struct uio_port port[MAX_UIO_PORT_REGIONS]; long irq; unsigned long irq_flags; void *priv; irqreturn_t (*handler)(int irq, struct uio_info *dev_info); int (*mmap_prepare)(struct uio_info *info, struct vm_area_desc *desc); int (*open)(struct uio_info *info, struct inode *inode); int (*release)(struct uio_info *info, struct inode *inode); int (*irqcontrol)(struct uio_info *info, s32 irq_on); }; **Members** ``uio_dev`` the UIO device this info belongs to ``name`` device name ``version`` device driver version ``mem`` list of mappable memory regions, size==0 for end of list ``port`` list of port regions, size==0 for end of list ``irq`` interrupt number or UIO_IRQ_CUSTOM ``irq_flags`` flags for request_irq() ``priv`` optional private data ``handler`` the device's irq handler ``mmap_prepare`` mmap_prepare operation for this uio device ``open`` open operation for this uio device ``release`` release operation for this uio device ``irqcontrol`` disable/enable irqs when 0/1 is written to /dev/uioX”h]”(j[)�”}”(hŒ**Definition**::”h]”(jŠ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj° ubhŒ:”…”�”}”(hj° h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K^hj¬ ubj¥)�”}”(hXqstruct uio_info { struct uio_device *uio_dev; const char *name; const char *version; struct uio_mem mem[MAX_UIO_MAPS]; struct uio_port port[MAX_UIO_PORT_REGIONS]; long irq; unsigned long irq_flags; void *priv; irqreturn_t (*handler)(int irq, struct uio_info *dev_info); int (*mmap_prepare)(struct uio_info *info, struct vm_area_desc *desc); int (*open)(struct uio_info *info, struct inode *inode); int (*release)(struct uio_info *info, struct inode *inode); int (*irqcontrol)(struct uio_info *info, s32 irq_on); };”h]”hXqstruct uio_info { struct uio_device *uio_dev; const char *name; const char *version; struct uio_mem mem[MAX_UIO_MAPS]; struct uio_port port[MAX_UIO_PORT_REGIONS]; long irq; unsigned long irq_flags; void *priv; irqreturn_t (*handler)(int irq, struct uio_info *dev_info); int (*mmap_prepare)(struct uio_info *info, struct vm_area_desc *desc); int (*open)(struct uio_info *info, struct inode *inode); int (*release)(struct uio_info *info, struct inode *inode); int (*irqcontrol)(struct uio_info *info, s32 irq_on); };”…”�”}”hjÍ sbah}”(h]”h ]”h"]”h$]”h&]”j?j@uh1j¤h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K`hj¬ ubj[)�”}”(hŒ **Members**”h]”jŠ)�”}”(hjÞ h]”hŒMembers”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kphj¬ ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ0``uio_dev`` the UIO device this info belongs to ”h]”(jÙ)�”}”(hŒ ``uio_dev``”h]”jß)�”}”(hjý h]”hŒuio_dev”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K\hj÷ ubjõ)�”}”(hhh]”j[)�”}”(hŒ#the UIO device this info belongs to”h]”hŒ#the UIO device this info belongs to”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j h´K\hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj÷ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j h´K\hjô ubjÓ)�”}”(hŒ``name`` device name ”h]”(jÙ)�”}”(hŒ``name``”h]”jß)�”}”(hj6 h]”hŒname”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K]hj0 ubjõ)�”}”(hhh]”j[)�”}”(hŒ device name”h]”hŒ device name”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jK h´K]hjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj0 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jK h´K]hjô ubjÓ)�”}”(hŒ"``version`` device driver version ”h]”(jÙ)�”}”(hŒ ``version``”h]”jß)�”}”(hjo h]”hŒversion”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K^hji ubjõ)�”}”(hhh]”j[)�”}”(hŒdevice driver version”h]”hŒdevice driver version”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j„ h´K^hj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhji ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j„ h´K^hjô ubjÓ)�”}”(hŒA``mem`` list of mappable memory regions, size==0 for end of list ”h]”(jÙ)�”}”(hŒ``mem``”h]”jß)�”}”(hj¨ h]”hŒmem”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K_hj¢ ubjõ)�”}”(hhh]”j[)�”}”(hŒ8list of mappable memory regions, size==0 for end of list”h]”hŒ8list of mappable memory regions, size==0 for end of list”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j½ h´K_hj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j½ h´K_hjô ubjÓ)�”}”(hŒ7``port`` list of port regions, size==0 for end of list ”h]”(jÙ)�”}”(hŒ``port``”h]”jß)�”}”(hjá h]”hŒport”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K`hjÛ ubjõ)�”}”(hhh]”j[)�”}”(hŒ-list of port regions, size==0 for end of list”h]”hŒ-list of port regions, size==0 for end of list”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jö h´K`hj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jö h´K`hjô ubjÓ)�”}”(hŒ+``irq`` interrupt number or UIO_IRQ_CUSTOM ”h]”(jÙ)�”}”(hŒ``irq``”h]”jß)�”}”(hjh]”hŒirq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kahjubjõ)�”}”(hhh]”j[)�”}”(hŒ"interrupt number or UIO_IRQ_CUSTOM”h]”hŒ"interrupt number or UIO_IRQ_CUSTOM”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j/h´Kahj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j/h´Kahjô ubjÓ)�”}”(hŒ&``irq_flags`` flags for request_irq() ”h]”(jÙ)�”}”(hŒ ``irq_flags``”h]”jß)�”}”(hjSh]”hŒ irq_flags”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KbhjMubjõ)�”}”(hhh]”j[)�”}”(hŒflags for request_irq()”h]”hŒflags for request_irq()”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jhh´Kbhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jhh´Kbhjô ubjÓ)�”}”(hŒ``priv`` optional private data ”h]”(jÙ)�”}”(hŒ``priv``”h]”jß)�”}”(hjŒh]”hŒpriv”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kchj†ubjõ)�”}”(hhh]”j[)�”}”(hŒoptional private data”h]”hŒoptional private data”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¡h´Kchj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¡h´Kchjô ubjÓ)�”}”(hŒ%``handler`` the device's irq handler ”h]”(jÙ)�”}”(hŒ ``handler``”h]”jß)�”}”(hjÅh]”hŒhandler”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kdhj¿ubjõ)�”}”(hhh]”j[)�”}”(hŒthe device's irq handler”h]”hŒthe device’s irq handler”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÚh´KdhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÚh´Kdhjô ubjÓ)�”}”(hŒ<``mmap_prepare`` mmap_prepare operation for this uio device ”h]”(jÙ)�”}”(hŒ``mmap_prepare``”h]”jß)�”}”(hjþh]”hŒ mmap_prepare”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kehjøubjõ)�”}”(hhh]”j[)�”}”(hŒ*mmap_prepare operation for this uio device”h]”hŒ*mmap_prepare operation for this uio device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´Kehjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´Kehjô ubjÓ)�”}”(hŒ,``open`` open operation for this uio device ”h]”(jÙ)�”}”(hŒ``open``”h]”jß)�”}”(hj7h]”hŒopen”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kfhj1ubjõ)�”}”(hhh]”j[)�”}”(hŒ"open operation for this uio device”h]”hŒ"open operation for this uio device”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jLh´KfhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jLh´Kfhjô ubjÓ)�”}”(hŒ2``release`` release operation for this uio device ”h]”(jÙ)�”}”(hŒ ``release``”h]”jß)�”}”(hjph]”hŒrelease”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kghjjubjõ)�”}”(hhh]”j[)�”}”(hŒ%release operation for this uio device”h]”hŒ%release operation for this uio device”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j…h´Kghj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j…h´Kghjô ubjÓ)�”}”(hŒC``irqcontrol`` disable/enable irqs when 0/1 is written to /dev/uioX”h]”(jÙ)�”}”(hŒ``irqcontrol``”h]”jß)�”}”(hj©h]”hŒ irqcontrol”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kghj£ubjõ)�”}”(hhh]”j[)�”}”(hŒ4disable/enable irqs when 0/1 is written to /dev/uioX”h]”hŒ4disable/enable irqs when 0/1 is written to /dev/uioX”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Khhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¾h´Kghjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj¬ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒuio_register_device (C macro)”Œc.uio_register_device”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒuio_register_device”h]”hù)�”}”(hŒuio_register_device”h]”j")�”}”(hŒuio_register_device”h]”j()�”}”(hjýh]”hŒuio_register_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjÿh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K�ubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhjûh²hh³jh´K�ubah}”(h]”jöah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³•þ.jh´K�hjøh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjøh²hh³jh´K�ubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzj3j{j3j|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj[)�”}”(hŒ&``uio_register_device (parent, info)``”h]”jß)�”}”(hj9h]”hŒ"uio_register_device (parent, info)”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´Kƒhjõþh²hubj3)�”}”(hŒ#register a new userspace IO device ”h]”j[)�”}”(hŒ"register a new userspace IO device”h]”hŒ"register a new userspace IO device”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K�hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³jah´K�hjõþh²hubj€)�”}”(hŒ’**Parameters** ``parent`` parent device ``info`` UIO device capabilities **Description** returns zero on success or a negative error code.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hjnh]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K…hjhubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``parent`` parent device ”h]”(jÙ)�”}”(hŒ ``parent``”h]”jß)�”}”(hj�h]”hŒparent”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K‚hj‡ubjõ)�”}”(hhh]”j[)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³j¢h´K‚hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³j¢h´K‚hj„ubjÓ)�”}”(hŒ!``info`` UIO device capabilities ”h]”(jÙ)�”}”(hŒ``info``”h]”jß)�”}”(hjÆh]”hŒinfo”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´KƒhjÀubjõ)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jÛh´KƒhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jÛh´Kƒhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjhubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K…hjhubj[)�”}”(hŒ1returns zero on success or a negative error code.”h]”hŒ1returns zero on success or a negative error code.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K„hjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"devm_uio_register_device (C macro)”Œc.devm_uio_register_device”hNt”auh1hÜhjõþh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdevm_uio_register_device”h]”hù)�”}”(hŒdevm_uio_register_device”h]”j")�”}”(hŒdevm_uio_register_device”h]”j()�”}”(hj@h]”hŒdevm_uio_register_device”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j3ah"]”h$]”h&]”uh1j'hjFubah}”(h]”h ]”(j:j;eh"]”h$]”h&]”j?j@uh1j!hjBh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K•ubah}”(h]”h ]”h"]”h$]”h&]”j?j@jGˆuh1højHjIhj>h²hh³j]h´K•ubah}”(h]”j9ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1hòh³j]h´K•hj;h²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj;h²hh³j]h´K•ubeh}”(h]”h ]”(jtŒmacro”eh"]”h$]”h&]”jyjtjzjvj{jvj|‰j}‰j~‰uh1híh²hhjõþh³Nh´Nubj[)�”}”(hŒ+``devm_uio_register_device (parent, info)``”h]”jß)�”}”(hj|h]”hŒ'devm_uio_register_device (parent, info)”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K—hjõþh²hubj3)�”}”(hŒ'Resource managed uio_register_device() ”h]”j[)�”}”(hŒ&Resource managed uio_register_device()”h]”hŒ&Resource managed uio_register_device()”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K•hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2h³j¤h´K•hjõþh²hubj€)�”}”(hŒ’**Parameters** ``parent`` parent device ``info`` UIO device capabilities **Description** returns zero on success or a negative error code.”h]”(j[)�”}”(hŒ**Parameters**”h]”jŠ)�”}”(hj±h]”hŒ Parameters”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K™hj«ubjÎ)�”}”(hhh]”(jÓ)�”}”(hŒ``parent`` parent device ”h]”(jÙ)�”}”(hŒ ``parent``”h]”jß)�”}”(hjÐh]”hŒparent”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K–hjÊubjõ)�”}”(hhh]”j[)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jåh´K–hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jåh´K–hjÇubjÓ)�”}”(hŒ!``info`` UIO device capabilities ”h]”(jÙ)�”}”(hŒ``info``”h]”jß)�”}”(hj h]”hŒinfo”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jØh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K—hjubjõ)�”}”(hhh]”j[)�”}”(hŒUIO device capabilities”h]”hŒUIO device capabilities”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³jh´K—hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jôhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÒh³jh´K—hjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj«ubj[)�”}”(hŒ**Description**”h]”jŠ)�”}”(hjDh]”hŒ Description”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K™hj«ubj[)�”}”(hŒ1returns zero on success or a negative error code.”h]”hŒ1returns zero on success or a negative error code.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/infrastructure:105: ./include/linux/uio_driver.h”h´K˜hj«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjõþh²hh³Nh´Nubeh}”(h]”Œuserspace-io-devices”ah ]”h"]”Œuserspace io devices”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kdubeh}”(h]”Œdevice-drivers-infrastructure”ah ]”h"]”Œdevice drivers infrastructure”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j£Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j}jzj&qj#qjåÓjâÓjÞìjÛìjòþjïþjujruŒ nametypes”}”(j}‰j&q‰jåÓ‰jÞì‰jòþ‰ju‰uh}”(jzh·j#qhËhëhôj8j=j—jœjÙjÞjÄjÉj j j j% jc jh j‘ j– j­j²jðjõjj#jajfjjj¡j¦j/j4j½jÂjFjKjÏjÔjƒjˆjÅjÊjø jý jG"jL"j–#j›#j†%j‹%jÌ(jÑ(jn4js4j±7j¶7j:j :j…;jŠ;jÊ=jÏ=j$?j)?jè@jí@j¬Bj±Bj7EjuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.