€•Œ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/i2c”Œ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/i2c”Œ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/i2c”Œ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/i2c”Œ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/i2c”Œ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/i2c”Œ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/i2c”Œ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Œ"I\ :sup:`2`\ C and SMBus Subsystem”h]”(hŒI ”…”�”}”(hh¼h²hh³Nh´NubhŒ superscript”“”)�”}”(hŒ:sup:`2`”h]”hŒ2”…”�”}”(hhÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÄhh¼ubhŒ C and SMBus Subsystem”…”�”}”(hh¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ` representing each I2C bus segment it manages. On each I2C bus segment will be I2C devices represented by a :c:type:`struct i2c_client `. Those devices will be bound to a :c:type:`struct i2c_driver `, which should follow the standard Linux driver model. There are functions to perform various I2C protocol operations; at this writing all such functions are usable only from task context.”h]”(hXWThe Linux I2C programming interfaces support the master side of bus interactions and the slave side. The programming interface is structured around two kinds of driver, and two kinds of device. An I2C “Adapter Driverâ€� abstracts the controller hardware; it binds to a physical device (perhaps a PCI device or platform_device) and exposes a ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct i2c_adapter `”h]”hŒliteral”“”)�”}”(hj h]”hŒstruct i2c_adapter”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/i2c”Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œ i2c_adapter”uh1hh³hÞh´KhjubhŒl representing each I2C bus segment it manages. On each I2C bus segment will be I2C devices represented by a ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct i2c_client `”h]”j)�”}”(hj4h]”hŒstruct i2c_client”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j,Œ i2c_client”uh1hh³hÞh´KhjubhŒ#. Those devices will be bound to a ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct i2c_driver `”h]”j)�”}”(hjWh]”hŒstruct i2c_driver”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j,Œ i2c_driver”uh1hh³hÞh´KhjubhŒ¼, which should follow the standard Linux driver model. There are functions to perform various I2C protocol operations; at this writing all such functions are usable only from task context.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÞh´Khh·h²hubhà)�”}”(hX.The System Management Bus (SMBus) is a sibling protocol. Most SMBus systems are also I2C conformant. The electrical constraints are tighter for SMBus, and it standardizes particular protocol messages and idioms. Controllers that support I2C can also support most SMBus operations, but SMBus controllers don't support all the protocol options that an I2C controller will. There are functions to perform various SMBus protocol operations, either using I2C primitives or by issuing SMBus commands to i2c_adapter devices which don't support those I2C operations.”h]”hX2The System Management Bus (SMBus) is a sibling protocol. Most SMBus systems are also I2C conformant. The electrical constraints are tighter for SMBus, and it standardizes particular protocol messages and idioms. Controllers that support I2C can also support most SMBus operations, but SMBus controllers don’t support all the protocol options that an I2C controller will. There are functions to perform various SMBus protocol operations, either using I2C primitives or by issuing SMBus commands to i2c_adapter devices which don’t support those I2C operations.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³hÞh´Khh·h²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œi2c_master_recv (C function)”Œc.i2c_master_recv”hNt”auh1jŒhh·h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒKint i2c_master_recv (const struct i2c_client *client, char *buf, int count)”h]”hŒdesc_signature_line”“”)�”}”(hŒJint i2c_master_recv(const struct i2c_client *client, char *buf, int count)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j®hjªh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KEubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jÀhjªh²hh³j¿h´KEubhŒ desc_name”“”)�”}”(hŒi2c_master_recv”h]”hŒ desc_sig_name”“”)�”}”(hŒi2c_master_recv”h]”hŒi2c_master_recv”…”�”}”(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Ñhjªh²hh³j¿h´KEubhŒdesc_parameterlist”“”)�”}”(hŒ7(const struct i2c_client *client, char *buf, int count)”h]”(hŒdesc_parameter”“”)�”}”(hŒconst struct i2c_client *client”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jþhjúubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjúubjÿ)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjúubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjúubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”Œ identifier”Œ reftarget”j>Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jWŒ ASTIdentifier”“”)�”}”jRjÛsbŒc.i2c_master_recv”†”asbuh1hhjúubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjúubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jrhjúubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjôubjù)�”}”(hŒ char *buf”h]”(j¯)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj˜ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj˜ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj˜ubjØ)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjôubjù)�”}”(hŒ int count”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÚubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÚubjØ)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjôubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjªh²hh³j¿h´KEubeh}”(h]”h ]”h"]”h$]”h&]”jðjñŒ add_permalink”ˆuh1j¨Œsphinx_line_type”Œ declarator”hj¤h²hh³j¿h´KEubah}”(h]”j›ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j¢h³j¿h´KEhjŸh²hubhŒ desc_content”“”)�”}”(hhh]”hà)�”}”(hŒ1issue a single I2C message in master receive mode”h]”hŒ1issue a single I2C message in master receive mode”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KEhj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjŸh²hh³j¿h´KEubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”Œdomain”jŒobjtype”jFŒdesctype”jFŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j�h²hhh·h³Nh´NubhŒ container”“”)�”}”(hX!**Parameters** ``const struct i2c_client *client`` Handle to slave device ``char *buf`` Where to store data read from slave ``int count`` How many bytes to read, must be less than 64k since msg.len is u16 **Description** Returns negative errno, or else the number of bytes read.”h]”(hà)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjXh]”hŒ Parameters”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KIhjRubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(hŒterm”“”)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjh]”hŒconst struct i2c_client *client”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KFhjwubhŒ definition”“”)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j”h´KFhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j”h´KFhjrubjv)�”}”(hŒ2``char *buf`` Where to store data read from slave ”h]”(j|)�”}”(hŒ ``char *buf``”h]”j)�”}”(hjºh]”hŒ char *buf”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KGhj´ubj–)�”}”(hhh]”hà)�”}”(hŒ#Where to store data read from slave”h]”hŒ#Where to store data read from slave”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÏh´KGhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÏh´KGhjrubjv)�”}”(hŒQ``int count`` How many bytes to read, must be less than 64k since msg.len is u16 ”h]”(j|)�”}”(hŒ ``int count``”h]”j)�”}”(hjóh]”hŒ int count”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KHhjíubj–)�”}”(hhh]”hà)�”}”(hŒBHow many bytes to read, must be less than 64k since msg.len is u16”h]”hŒBHow many bytes to read, must be less than 64k since msg.len is u16”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jh´KHhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´KHhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjRubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj.h]”hŒ Description”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KJhjRubhà)�”}”(hŒ9Returns negative errno, or else the number of bytes read.”h]”hŒ9Returns negative errno, or else the number of bytes read.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KIhjRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ$i2c_master_recv_dmasafe (C function)”Œc.i2c_master_recv_dmasafe”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒSint i2c_master_recv_dmasafe (const struct i2c_client *client, char *buf, int count)”h]”j©)�”}”(hŒRint i2c_master_recv_dmasafe(const struct i2c_client *client, char *buf, int count)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjoh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KSubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjoh²hh³j�h´KSubjÒ)�”}”(hŒi2c_master_recv_dmasafe”h]”jØ)�”}”(hŒi2c_master_recv_dmasafe”h]”hŒi2c_master_recv_dmasafe”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjoh²hh³j�h´KSubjó)�”}”(hŒ7(const struct i2c_client *client, char *buf, int count)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¬ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¬ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¬ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¬ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jëŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj–sbŒc.i2c_master_recv_dmasafe”†”asbuh1hhj¬ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¬ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¬ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj¨ubjù)�”}”(hŒ char *buf”h]”(j¯)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj9ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj9ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj9ubjØ)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj¨ubjù)�”}”(hŒ int count”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj{ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj{ubjØ)�”}”(hŒcount”h]”hŒcount”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjoh²hh³j�h´KSubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjkh²hh³j�h´KSubah}”(h]”jfah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j�h´KShjhh²hubj*)�”}”(hhh]”hà)�”}”(hŒIissue a single I2C message in master receive mode using a DMA safe buffer”h]”hŒIissue a single I2C message in master receive mode using a DMA safe buffer”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KShjÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjhh²hh³j�h´KSubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjÝjLjÝjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX?**Parameters** ``const struct i2c_client *client`` Handle to slave device ``char *buf`` Where to store data read from slave, must be safe to use with DMA ``int count`` How many bytes to read, must be less than 64k since msg.len is u16 **Description** Returns negative errno, or else the number of bytes read.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjçh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KWhjáubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjh]”hŒconst struct i2c_client *client”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KUhjubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jh´KUhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´KUhjýubjv)�”}”(hŒP``char *buf`` Where to store data read from slave, must be safe to use with DMA ”h]”(j|)�”}”(hŒ ``char *buf``”h]”j)�”}”(hj?h]”hŒ char *buf”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KVhj9ubj–)�”}”(hhh]”hà)�”}”(hŒAWhere to store data read from slave, must be safe to use with DMA”h]”hŒAWhere to store data read from slave, must be safe to use with DMA”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jTh´KVhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jTh´KVhjýubjv)�”}”(hŒQ``int count`` How many bytes to read, must be less than 64k since msg.len is u16 ”h]”(j|)�”}”(hŒ ``int count``”h]”j)�”}”(hjxh]”hŒ int count”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KWhjrubj–)�”}”(hhh]”hà)�”}”(hŒBHow many bytes to read, must be less than 64k since msg.len is u16”h]”hŒBHow many bytes to read, must be less than 64k since msg.len is u16”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j�h´KWhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�h´KWhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjáubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj³h]”hŒ Description”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KYhjáubhà)�”}”(hŒ9Returns negative errno, or else the number of bytes read.”h]”hŒ9Returns negative errno, or else the number of bytes read.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KXhjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_master_send (C function)”Œc.i2c_master_send”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒQint i2c_master_send (const struct i2c_client *client, const char *buf, int count)”h]”j©)�”}”(hŒPint i2c_master_send(const struct i2c_client *client, const char *buf, int count)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjôh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KcubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjôh²hh³jh´KcubjÒ)�”}”(hŒi2c_master_send”h]”jØ)�”}”(hŒi2c_master_send”h]”hŒi2c_master_send”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjôh²hh³jh´Kcubjó)�”}”(hŒ=(const struct i2c_client *client, const char *buf, int count)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj1ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj1ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj1ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj1ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jpŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjsbŒc.i2c_master_send”†”asbuh1hhj1ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj1ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj1ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj-ubjù)�”}”(hŒconst char *buf”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¾ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¾ubj¯)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¾ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¾ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¾ubjØ)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj-ubjù)�”}”(hŒ int count”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjubjØ)�”}”(hŒcount”h]”hŒcount”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj-ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjôh²hh³jh´Kcubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjðh²hh³jh´Kcubah}”(h]”jëah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jh´Kchjíh²hubj*)�”}”(hhh]”hà)�”}”(hŒ2issue a single I2C message in master transmit mode”h]”hŒ2issue a single I2C message in master transmit mode”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kchjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjíh²hh³jh´Kcubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj}jLj}jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX.**Parameters** ``const struct i2c_client *client`` Handle to slave device ``const char *buf`` Data that will be written to the slave ``int count`` How many bytes to write, must be less than 64k since msg.len is u16 **Description** Returns negative errno, or else the number of bytes written.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kghj�ubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hj¦h]”hŒconst struct i2c_client *client”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kdhj ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j»h´Kdhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j»h´Kdhj�ubjv)�”}”(hŒ;``const char *buf`` Data that will be written to the slave ”h]”(j|)�”}”(hŒ``const char *buf``”h]”j)�”}”(hjßh]”hŒconst char *buf”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KehjÙubj–)�”}”(hhh]”hà)�”}”(hŒ&Data that will be written to the slave”h]”hŒ&Data that will be written to the slave”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jôh´Kehjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jôh´Kehj�ubjv)�”}”(hŒR``int count`` How many bytes to write, must be less than 64k since msg.len is u16 ”h]”(j|)�”}”(hŒ ``int count``”h]”j)�”}”(hj h]”hŒ int count”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kfhj ubj–)�”}”(hhh]”hà)�”}”(hŒCHow many bytes to write, must be less than 64k since msg.len is u16”h]”hŒCHow many bytes to write, must be less than 64k since msg.len is u16”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j- h´Kfhj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j- h´Kfhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj�ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjS h]”hŒ Description”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Khhj�ubhà)�”}”(hŒ`”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjõubhŒ:”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kðhjñubj¸ )�”}”(hXUstruct i2c_driver { unsigned int class; int (*probe)(struct i2c_client *client); void (*remove)(struct i2c_client *client); void (*shutdown)(struct i2c_client *client); void (*alert)(struct i2c_client *client, enum i2c_alert_protocol protocol, unsigned int data); int (*command)(struct i2c_client *client, unsigned int cmd, void *arg); struct device_driver driver; const struct i2c_device_id *id_table; int (*detect)(struct i2c_client *client, struct i2c_board_info *info); const unsigned short *address_list; struct list_head clients; u32 flags; };”h]”hXUstruct i2c_driver { unsigned int class; int (*probe)(struct i2c_client *client); void (*remove)(struct i2c_client *client); void (*shutdown)(struct i2c_client *client); void (*alert)(struct i2c_client *client, enum i2c_alert_protocol protocol, unsigned int data); int (*command)(struct i2c_client *client, unsigned int cmd, void *arg); struct device_driver driver; const struct i2c_device_id *id_table; int (*detect)(struct i2c_client *client, struct i2c_board_info *info); const unsigned short *address_list; struct list_head clients; u32 flags; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kòhjñubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hj#h]”hŒMembers”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhjñubjq)�”}”(hhh]”(jv)�”}”(hŒ>``class`` What kind of i2c device we instantiate (for detect) ”h]”(j|)�”}”(hŒ ``class``”h]”j)�”}”(hjBh]”hŒclass”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kîhj<ubj–)�”}”(hhh]”hà)�”}”(hŒ3What kind of i2c device we instantiate (for detect)”h]”hŒ3What kind of i2c device we instantiate (for detect)”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jWh´KîhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jWh´Kîhj9ubjv)�”}”(hŒ&``probe`` Callback for device binding ”h]”(j|)�”}”(hŒ ``probe``”h]”j)�”}”(hj{h]”hŒprobe”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kïhjuubj–)�”}”(hhh]”hà)�”}”(hŒCallback for device binding”h]”hŒCallback for device binding”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j�h´Kïhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�h´Kïhj9ubjv)�”}”(hŒ)``remove`` Callback for device unbinding ”h]”(j|)�”}”(hŒ ``remove``”h]”j)�”}”(hj´h]”hŒremove”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kðhj®ubj–)�”}”(hhh]”hà)�”}”(hŒCallback for device unbinding”h]”hŒCallback for device unbinding”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÉh´KðhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÉh´Kðhj9ubjv)�”}”(hŒ*``shutdown`` Callback for device shutdown ”h]”(j|)�”}”(hŒ ``shutdown``”h]”j)�”}”(hjíh]”hŒshutdown”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kñhjçubj–)�”}”(hhh]”hà)�”}”(hŒCallback for device shutdown”h]”hŒCallback for device shutdown”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jh´Kñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´Kñhj9ubjv)�”}”(hŒC``alert`` Alert callback, for example for the SMBus alert protocol ”h]”(j|)�”}”(hŒ ``alert``”h]”j)�”}”(hj&h]”hŒalert”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kòhj ubj–)�”}”(hhh]”hà)�”}”(hŒ8Alert callback, for example for the SMBus alert protocol”h]”hŒ8Alert callback, for example for the SMBus alert protocol”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j;h´Kòhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j;h´Kòhj9ubjv)�”}”(hŒ7``command`` Callback for bus-wide signaling (optional) ”h]”(j|)�”}”(hŒ ``command``”h]”j)�”}”(hj_h]”hŒcommand”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KóhjYubj–)�”}”(hhh]”hà)�”}”(hŒ*Callback for bus-wide signaling (optional)”h]”hŒ*Callback for bus-wide signaling (optional)”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jth´Kóhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jth´Kóhj9ubjv)�”}”(hŒ&``driver`` Device driver model driver ”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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kôhj’ubj–)�”}”(hhh]”hà)�”}”(hŒDevice driver model driver”h]”hŒDevice driver model driver”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j­h´Kôhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j­h´Kôhj9ubjv)�”}”(hŒ:``id_table`` List of I2C devices supported by this driver ”h]”(j|)�”}”(hŒ ``id_table``”h]”j)�”}”(hjÑh]”hŒid_table”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KõhjËubj–)�”}”(hhh]”hà)�”}”(hŒ,List of I2C devices supported by this driver”h]”hŒ,List of I2C devices supported by this driver”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jæh´Kõhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jæh´Kõhj9ubjv)�”}”(hŒ)``detect`` Callback for device detection ”h]”(j|)�”}”(hŒ ``detect``”h]”j)�”}”(hj h]”hŒdetect”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Köhjubj–)�”}”(hhh]”hà)�”}”(hŒCallback for device detection”h]”hŒCallback for device detection”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jh´Köhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´Köhj9ubjv)�”}”(hŒ9``address_list`` The I2C addresses to probe (for detect) ”h]”(j|)�”}”(hŒ``address_list``”h]”j)�”}”(hjCh]”hŒ address_list”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´K÷hj=ubj–)�”}”(hhh]”hà)�”}”(hŒ'The I2C addresses to probe (for detect)”h]”hŒ'The I2C addresses to probe (for detect)”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jXh´K÷hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jXh´K÷hj9ubjv)�”}”(hŒH``clients`` List of detected clients we created (for i2c-core use only) ”h]”(j|)�”}”(hŒ ``clients``”h]”j)�”}”(hj|h]”hŒclients”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Køhjvubj–)�”}”(hhh]”hà)�”}”(hŒ;List of detected clients we created (for i2c-core use only)”h]”hŒ;List of detected clients we created (for i2c-core use only)”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‘h´Køhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‘h´Køhj9ubjv)�”}”(hŒZ``flags`` A bitmask of flags defined in :c:type:`enum i2c_driver_flags `”h]”(j|)�”}”(hŒ ``flags``”h]”j)�”}”(hjµh]”hŒflags”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Køhj¯ubj–)�”}”(hhh]”hà)�”}”(hŒPA bitmask of flags defined in :c:type:`enum i2c_driver_flags `”h]”(hŒA bitmask of flags defined in ”…”�”}”(hjÎh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum i2c_driver_flags `”h]”j)�”}”(hjØh]”hŒenum i2c_driver_flags”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjY)�”}”j\]”sbj,Œi2c_driver_flags”uh1hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KùhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jøh´KùhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÊh´Køhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kühh·h²hubhà)�”}”(hŒˆThe driver.owner field should be set to the module owner of this driver. The driver.name field should be set to the name of this driver.”h]”hŒˆThe driver.owner field should be set to the module owner of this driver. The driver.name field should be set to the name of this driver.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kùhh·h²hubhà)�”}”(hXZFor automatic device detection, both **detect** and **address_list** must be defined. **class** should also be set, otherwise only devices forced with module parameters will be created. The detect function must fill at least the name field of the i2c_board_info structure it is handed upon successful detection, and possibly also the flags field.”h]”(hŒ%For automatic device detection, both ”…”�”}”(hj?h²hh³Nh´Nubj[)�”}”(hŒ **detect**”h]”hŒdetect”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj?ubhŒ and ”…”�”}”(hj?h²hh³Nh´Nubj[)�”}”(hŒ**address_list**”h]”hŒ address_list”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj?ubhŒ must be defined. ”…”�”}”(hj?h²hh³Nh´Nubj[)�”}”(hŒ **class**”h]”hŒclass”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj?ubhŒû should also be set, otherwise only devices forced with module parameters will be created. The detect function must fill at least the name field of the i2c_board_info structure it is handed upon successful detection, and possibly also the flags field.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Kühh·h²hubhà)�”}”(hXIf **detect** is missing, the driver will still work fine for enumerated devices. Detected devices simply won't be supported. This is expected for the many I2C/SMBus devices which can't be detected reliably, and the ones which can always be enumerated in practice.”h]”(hŒIf ”…”�”}”(hj„h²hh³Nh´Nubj[)�”}”(hŒ **detect**”h]”hŒdetect”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj„ubhŒÿ is missing, the driver will still work fine for enumerated devices. Detected devices simply won’t be supported. This is expected for the many I2C/SMBus devices which can’t be detected reliably, and the ones which can always be enumerated in practice.”…”�”}”(hj„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhh·h²hubhà)�”}”(hXThe i2c_client structure which is handed to the **detect** callback is not a real i2c_client. It is initialized just enough so that you can call i2c_smbus_read_byte_data and friends on it. Don't do anything else with it. In particular, calling dev_dbg and friends on it is not allowed.”h]”(hŒ0The i2c_client structure which is handed to the ”…”�”}”(hj¥h²hh³Nh´Nubj[)�”}”(hŒ **detect**”h]”hŒdetect”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¥ubhŒå callback is not a real i2c_client. It is initialized just enough so that you can call i2c_smbus_read_byte_data and friends on it. Don’t do anything else with it. In particular, calling dev_dbg and friends on it is not allowed.”…”�”}”(hj¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhh·h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_client (C struct)”Œ c.i2c_client”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ i2c_client”h]”j©)�”}”(hŒstruct i2c_client”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÛh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÛh²hh³jìh´MubjÒ)�”}”(hŒ i2c_client”h]”jØ)�”}”(hjÙh]”hŒ i2c_client”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jäah"]”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ñjˆuh1j¨jjhj×h²hh³jìh´Mubah}”(h]”jÒah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jìh´MhjÔh²hubj*)�”}”(hhh]”hà)�”}”(hŒrepresent an I2C slave device”h]”hŒrepresent an I2C slave device”…”�”}”(hj!h²hh³Nh´Nubah•}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M5hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÔh²hh³jìh´Mubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKj9jLj9jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXE**Definition**:: struct i2c_client { unsigned short flags; #define I2C_CLIENT_PEC 0x04 ; #define I2C_CLIENT_TEN 0x10 ; #define I2C_CLIENT_SLAVE 0x20 ; #define I2C_CLIENT_HOST_NOTIFY 0x40 ; #define I2C_CLIENT_WAKE 0x80 ; #define I2C_CLIENT_SCCB 0x9000 ; unsigned short addr; char name[I2C_NAME_SIZE]; struct i2c_adapter *adapter; struct device dev; int init_irq; int irq; struct list_head detected; #if IS_ENABLED(CONFIG_I2C_SLAVE); i2c_slave_cb_t slave_cb; #endif; void *devres_group_id; struct dentry *debugfs; }; **Members** ``flags`` see I2C_CLIENT_* for possible flags ``addr`` Address used on the I2C bus connected to the parent adapter. ``name`` Indicates the type of the device, usually a chip name that's generic enough to hide second-sourcing and compatible revisions. ``adapter`` manages the bus segment hosting this I2C device ``dev`` Driver model device node for the slave. ``init_irq`` IRQ that was set at initialization ``irq`` indicates the IRQ generated by this device (if any) ``detected`` member of an i2c_driver.clients list or i2c-core's userspace_devices list ``slave_cb`` Callback when I2C slave mode of an adapter is used. The adapter calls it to pass on slave events to the slave driver. ``devres_group_id`` id of the devres group that will be created for resources acquired when probing this device. ``debugfs`` pointer to the debugfs subdirectory which the I2C core created for this client.”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjAubhŒ:”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M9hj=ubj¸ )�”}”(hXWstruct i2c_client { unsigned short flags; #define I2C_CLIENT_PEC 0x04 ; #define I2C_CLIENT_TEN 0x10 ; #define I2C_CLIENT_SLAVE 0x20 ; #define I2C_CLIENT_HOST_NOTIFY 0x40 ; #define I2C_CLIENT_WAKE 0x80 ; #define I2C_CLIENT_SCCB 0x9000 ; unsigned short addr; char name[I2C_NAME_SIZE]; struct i2c_adapter *adapter; struct device dev; int init_irq; int irq; struct list_head detected; #if IS_ENABLED(CONFIG_I2C_SLAVE); i2c_slave_cb_t slave_cb; #endif; void *devres_group_id; struct dentry *debugfs; };”h]”hXWstruct i2c_client { unsigned short flags; #define I2C_CLIENT_PEC 0x04 ; #define I2C_CLIENT_TEN 0x10 ; #define I2C_CLIENT_SLAVE 0x20 ; #define I2C_CLIENT_HOST_NOTIFY 0x40 ; #define I2C_CLIENT_WAKE 0x80 ; #define I2C_CLIENT_SCCB 0x9000 ; unsigned short addr; char name[I2C_NAME_SIZE]; struct i2c_adapter *adapter; struct device dev; int init_irq; int irq; struct list_head detected; #if IS_ENABLED(CONFIG_I2C_SLAVE); i2c_slave_cb_t slave_cb; #endif; void *devres_group_id; struct dentry *debugfs; };”…”�”}”hj^sbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M;hj=ubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hjoh]”hŒMembers”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MQhj=ubjq)�”}”(hhh]”(jv)�”}”(hŒ.``flags`` see I2C_CLIENT_* for possible flags ”h]”(j|)�”}”(hŒ ``flags``”h]”j)�”}”(hjŽh]”hŒflags”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M7hjˆubj–)�”}”(hhh]”hà)�”}”(hŒ#see I2C_CLIENT_* for possible flags”h]”hŒ#see I2C_CLIENT_* for possible flags”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j£h´M7hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j£h´M7hj…ubjv)�”}”(hŒF``addr`` Address used on the I2C bus connected to the parent adapter. ”h]”(j|)�”}”(hŒ``addr``”h]”j)�”}”(hjÇh]”hŒaddr”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M8hjÁubj–)�”}”(hhh]”hà)�”}”(hŒ
hjßubj–)�”}”(hhh]”hà)�”}”(hŒ3indicates the IRQ generated by this device (if any)”h]”hŒ3indicates the IRQ generated by this device (if any)”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³júh´M>hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³júh´M>hj…ubjv)�”}”(hŒW``detected`` member of an i2c_driver.clients list or i2c-core's userspace_devices list ”h]”(j|)�”}”(hŒ ``detected``”h]”j)�”}”(hjh]”hŒdetected”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M@hjubj–)�”}”(hhh]”hà)�”}”(hŒImember of an i2c_driver.clients list or i2c-core's userspace_devices list”h]”hŒKmember of an i2c_driver.clients list or i2c-core’s userspace_devices list”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M?hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j3h´M@hj…ubjv)�”}”(hŒƒ``slave_cb`` Callback when I2C slave mode of an adapter is used. The adapter calls it to pass on slave events to the slave driver. ”h]”(j|)�”}”(hŒ ``slave_cb``”h]”j)�”}”(hjXh]”hŒslave_cb”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MBhjRubj–)�”}”(hhh]”hà)�”}”(hŒuCallback when I2C slave mode of an adapter is used. The adapter calls it to pass on slave events to the slave driver.”h]”hŒuCallback when I2C slave mode of an adapter is used. The adapter calls it to pass on slave events to the slave driver.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MAhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jmh´MBhj…ubjv)�”}”(hŒq``devres_group_id`` id of the devres group that will be created for resources acquired when probing this device. ”h]”(j|)�”}”(hŒ``devres_group_id``”h]”j)�”}”(hj’h]”hŒdevres_group_id”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MDhjŒubj–)�”}”(hhh]”hà)�”}”(hŒ\id of the devres group that will be created for resources acquired when probing this device.”h]”hŒ\id of the devres group that will be created for resources acquired when probing this device.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MChj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j§h´MDhj…ubjv)�”}”(hŒ[``debugfs`` pointer to the debugfs subdirectory which the I2C core created for this client.”h]”(j|)�”}”(hŒ ``debugfs``”h]”j)�”}”(hjÌh]”hŒdebugfs”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MEhjÆubj–)�”}”(hhh]”hà)�”}”(hŒOpointer to the debugfs subdirectory which the I2C core created for this client.”h]”hŒOpointer to the debugfs subdirectory which the I2C core created for this client.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jáh´MEhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jáh´MEhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MIhh·h²hubhà)�”}”(hŒšAn i2c_client identifies a single device (i.e. chip) connected to an i2c bus. The behaviour exposed to Linux is defined by the driver managing the device.”h]”hŒšAn i2c_client identifies a single device (i.e. chip) connected to an i2c bus. The behaviour exposed to Linux is defined by the driver managing the device.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MFhh·h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_board_info (C struct)”Œc.i2c_board_info”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒi2c_board_info”h]”j©)�”}”(hŒstruct i2c_board_info”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjHh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MMubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjHh²hh³jYh´MMubjÒ)�”}”(hŒi2c_board_info”h]”jØ)�”}”(hjFh]”hŒi2c_board_info”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjhubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjHh²hh³jYh´MMubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjDh²hh³jYh´MMubah}”(h]”j?ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jYh´MMhjAh²hubj*)�”}”(hhh]”hà)�”}”(hŒtemplate for device creation”h]”hŒtemplate for device creation”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M’hj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjAh²hh³jYh´MMubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKj¦jLj¦jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX‰**Definition**:: struct i2c_board_info { char type[I2C_NAME_SIZE]; unsigned short flags; unsigned short addr; const char *dev_name; void *platform_data; struct fwnode_handle *fwnode; const struct software_node *swnode; const struct resource *resources; unsigned int num_resources; int irq; }; **Members** ``type`` chip type, to initialize i2c_client.name ``flags`` to initialize i2c_client.flags ``addr`` stored in i2c_client.addr ``dev_name`` Overrides the default - dev_name if set ``platform_data`` stored in i2c_client.dev.platform_data ``fwnode`` device node supplied by the platform firmware ``swnode`` software node for the device ``resources`` resources associated with the device ``num_resources`` number of resources in the **resources** array ``irq`` stored in i2c_client.irq”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj®ubhŒ:”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M–hjªubj¸ )�”}”(hXEstruct i2c_board_info { char type[I2C_NAME_SIZE]; unsigned short flags; unsigned short addr; const char *dev_name; void *platform_data; struct fwnode_handle *fwnode; const struct software_node *swnode; const struct resource *resources; unsigned int num_resources; int irq; };”h]”hXEstruct i2c_board_info { char type[I2C_NAME_SIZE]; unsigned short flags; unsigned short addr; const char *dev_name; void *platform_data; struct fwnode_handle *fwnode; const struct software_node *swnode; const struct resource *resources; unsigned int num_resources; int irq; };”…”�”}”hjËsbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M˜hjªubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hjÜh]”hŒMembers”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¥hjªubjq)�”}”(hhh]”(jv)�”}”(hŒ2``type`` chip type, to initialize i2c_client.name ”h]”(j|)�”}”(hŒ``type``”h]”j)�”}”(hjûh]”hŒtype”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M”hjõubj–)�”}”(hhh]”hà)�”}”(hŒ(chip type, to initialize i2c_client.name”h]”hŒ(chip type, to initialize i2c_client.name”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jh´M”hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´M”hjòubjv)�”}”(hŒ)``flags`` to initialize i2c_client.flags ”h]”(j|)�”}”(hŒ ``flags``”h]”j)�”}”(hj4h]”hŒflags”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M•hj.ubj–)�”}”(hhh]”hà)�”}”(hŒto initialize i2c_client.flags”h]”hŒto initialize i2c_client.flags”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jIh´M•hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jIh´M•hjòubjv)�”}”(hŒ#``addr`` stored in i2c_client.addr ”h]”(j|)�”}”(hŒ``addr``”h]”j)�”}”(hjmh]”hŒaddr”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M–hjgubj–)�”}”(hhh]”hà)�”}”(hŒstored in i2c_client.addr”h]”hŒstored in i2c_client.addr”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‚h´M–hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‚h´M–hjòubjv)�”}”(hŒB``dev_name`` Overrides the default - dev_name if set ”h]”(j|)�”}”(hŒ ``dev_name``”h]”j)�”}”(hj¦h]”hŒdev_name”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M—hj ubj–)�”}”(hhh]”hà)�”}”(hŒ4Overrides the default - dev_name if set”h]”hŒ4Overrides the default - dev_name if set”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j»h´M—hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j»h´M—hjòubjv)�”}”(hŒ9``platform_data`` stored in i2c_client.dev.platform_data ”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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M˜hjÙubj–)�”}”(hhh]”hà)�”}”(hŒ&stored in i2c_client.dev.platform_data”h]”hŒ&stored in i2c_client.dev.platform_data”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jôh´M˜hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jôh´M˜hjòubjv)�”}”(hŒ9``fwnode`` device node supplied by the platform firmware ”h]”(j|)�”}”(hŒ ``fwnode``”h]”j)�”}”(hjh]”hŒfwnode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M™hjubj–)�”}”(hhh]”hà)�”}”(hŒ-device node supplied by the platform firmware”h]”hŒ-device node supplied by the platform firmware”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j-h´M™hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j-h´M™hjòubjv)�”}”(hŒ(``swnode`` software node for the device ”h]”(j|)�”}”(hŒ ``swnode``”h]”j)�”}”(hjQh]”hŒswnode”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MšhjKubj–)�”}”(hhh]”hà)�”}”(hŒsoftware node for the device”h]”hŒsoftware node for the device”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jfh´Mšhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jfh´Mšhjòubjv)�”}”(hŒ3``resources`` resources associated with the device ”h]”(j|)�”}”(hŒ ``resources``”h]”j)�”}”(hjŠh]”hŒ resources”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M›hj„ubj–)�”}”(hhh]”hà)�”}”(hŒ$resources associated with the device”h]”hŒ$resources associated with the device”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jŸh´M›hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jŸh´M›hjòubjv)�”}”(hŒA``num_resources`` number of resources in the **resources** array ”h]”(j|)�”}”(hŒ``num_resources``”h]”j)�”}”(hjÃh]”hŒ num_resources”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mœhj½ubj–)�”}”(hhh]”hà)�”}”(hŒ.number of resources in the **resources** array”h]”(hŒnumber of resources in the ”…”�”}”(hjÜh²hh³Nh´Nubj[)�”}”(hŒ **resources**”h]”hŒ resources”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÜubhŒ array”…”�”}”(hjÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jØh´MœhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jØh´Mœhjòubjv)�”}”(hŒ ``irq`` stored in i2c_client.irq”h]”(j|)�”}”(hŒ``irq``”h]”j)�”}”(hjh]”hŒirq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mœhjubj–)�”}”(hhh]”hà)�”}”(hŒstored in i2c_client.irq”h]”hŒstored in i2c_client.irq”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M�hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j#h´Mœhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjQh]”hŒ Description”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M hh·h²hubhà)�”}”(hXI2C doesn't actually support hardware probing, although controllers and devices may be able to use I2C_SMBUS_QUICK to tell whether or not there's a device at a given address. Drivers commonly need more information than that, such as chip type, configuration, associated IRQ, and so on.”h]”hX"I2C doesn’t actually support hardware probing, although controllers and devices may be able to use I2C_SMBUS_QUICK to tell whether or not there’s a device at a given address. Drivers commonly need more information than that, such as chip type, configuration, associated IRQ, and so on.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M�hh·h²hubhà)�”}”(hXwi2c_board_info is used to build tables of information listing I2C devices that are present. This information is used to grow the driver model tree. For mainboards this is done statically using i2c_register_board_info(); bus numbers identify adapters that aren't yet available. For add-on boards, i2c_new_client_device() does this dynamically with the adapter already known.”h]”hXyi2c_board_info is used to build tables of information listing I2C devices that are present. This information is used to grow the driver model tree. For mainboards this is done statically using i2c_register_board_info(); bus numbers identify adapters that aren’t yet available. For add-on boards, i2c_new_client_device() does this dynamically with the adapter already known.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¢hh·h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™ŒI2C_BOARD_INFO (C macro)”Œc.I2C_BOARD_INFO”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒI2C_BOARD_INFO”h]”j©)�”}”(hŒI2C_BOARD_INFO”h]”jÒ)�”}”(hŒI2C_BOARD_INFO”h]”jØ)�”}”(hj˜h]”hŒI2C_BOARD_INFO”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjžubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjšh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M·ubah}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj–h²hh³jµh´M·ubah}”(h]”j‘ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jµh´M·hj“h²hubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j)hj“h²hh³jµh´M·ubeh}”(h]”h ]”(jŒmacro”eh"]”h$]”h&]”jJjjKjÎjLjÎjM‰jN‰jO‰uh1j�h²hhh·h³Nh´Nubhà)�”}”(hŒ'``I2C_BOARD_INFO (dev_type, dev_addr)``”h]”j)�”}”(hjÔh]”hŒ#I2C_BOARD_INFO (dev_type, dev_addr)”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¹hh·h²hubhŒ block_quote”“”)�”}”(hŒ1macro used to list an i2c device and its address ”h]”hà)�”}”(hŒ0macro used to list an i2c device and its address”h]”hŒ0macro used to list an i2c device and its address”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M·hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jêh³jþh´M·hh·h²hubjQ)�”}”(hXl**Parameters** ``dev_type`` identifies the device type ``dev_addr`` the device's address on the bus. **Description** This macro initializes essential fields of a struct i2c_board_info, declaring what has been provided on a particular board. Optional fields (such as associated irq, or device-specific platform_data) are provided using conventional syntax.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M»hjubjq)�”}”(hhh]”(jv)�”}”(hŒ(``dev_type`` identifies the device type ”h]”(j|)�”}”(hŒ ``dev_type``”h]”j)�”}”(hj*h]”hŒdev_type”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¸hj$ubj–)�”}”(hhh]”hà)�”}”(hŒidentifies the device type”h]”hŒidentifies the device type”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j?h´M¸hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j?h´M¸hj!ubjv)�”}”(hŒ.``dev_addr`` the device's address on the bus. ”h]”(j|)�”}”(hŒ ``dev_addr``”h]”j)�”}”(hjch]”hŒdev_addr”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¹hj]ubj–)�”}”(hhh]”hà)�”}”(hŒ the device's address on the bus.”h]”hŒ"the device’s address on the bus.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jxh´M¹hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jxh´M¹hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjžh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M»hjubhà)�”}”(hŒïThis macro initializes essential fields of a struct i2c_board_info, declaring what has been provided on a particular board. Optional fields (such as associated irq, or device-specific platform_data) are provided using conventional syntax.”h]”hŒïThis macro initializes essential fields of a struct i2c_board_info, declaring what has been provided on a particular board. Optional fields (such as associated irq, or device-specific platform_data) are provided using conventional syntax.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mºhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_algorithm (C struct)”Œc.i2c_algorithm”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ i2c_algorithm”h]”j©)�”}”(hŒstruct i2c_algorithm”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjßh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÂubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjßh²hh³jðh´MÂubjÒ)�”}”(hŒ i2c_algorithm”h]”jØ)�”}”(hjÝh]”hŒ i2c_algorithm”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jäah"]”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ñjˆuh1j¨jjhjÛh²hh³jðh´MÂubah}”(h]”jÖah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jðh´MÂhjØh²hubj*)�”}”(hhh]”hà)�”}”(hŒrepresent I2C transfer methods”h]”hŒrepresent I2C transfer methods”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjØh²hh³jðh´MÂubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKj=jLj=jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX **Definition**:: struct i2c_algorithm { union { int (*xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); }; union { int (*xfer_atomic)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*master_xfer_atomic)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); }; int (*smbus_xfer)(struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, u8 command, int size, union i2c_smbus_data *data); int (*smbus_xfer_atomic)(struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, u8 command, int size, union i2c_smbus_data *data); u32 (*functionality)(struct i2c_adapter *adap); #if IS_ENABLED(CONFIG_I2C_SLAVE); union { int (*reg_target)(struct i2c_client *client); int (*reg_slave)(struct i2c_client *client); }; union { int (*unreg_target)(struct i2c_client *client); int (*unreg_slave)(struct i2c_client *client); }; #endif; }; **Members** ``{unnamed_union}`` anonymous ``xfer`` Transfer a given number of messages defined by the msgs array via the specified adapter. ``master_xfer`` deprecated, use **xfer** ``{unnamed_union}`` anonymous ``xfer_atomic`` Same as **xfer**. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional. ``master_xfer_atomic`` deprecated, use **xfer_atomic** ``smbus_xfer`` Issue SMBus transactions to the given I2C adapter. If this is not present, then the bus layer will try and convert the SMBus calls into I2C transfers instead. ``smbus_xfer_atomic`` Same as **smbus_xfer**. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional. ``functionality`` Return the flags that this algorithm/adapter pair supports from the ``I2C_FUNC_*`` flags. ``{unnamed_union}`` anonymous ``reg_target`` Register given client to local target mode of this adapter ``reg_slave`` deprecated, use **reg_target** ``{unnamed_union}`` anonymous ``unreg_target`` Unregister given client from local target mode of this adapter ``unreg_slave`` deprecated, use **unreg_target**”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjEubhŒ:”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MhjAubj¸ )�”}”(hX struct i2c_algorithm { union { int (*xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); }; union { int (*xfer_atomic)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*master_xfer_atomic)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); }; int (*smbus_xfer)(struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, u8 command, int size, union i2c_smbus_data *data); int (*smbus_xfer_atomic)(struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, u8 command, int size, union i2c_smbus_data *data); u32 (*functionality)(struct i2c_adapter *adap); #if IS_ENABLED(CONFIG_I2C_SLAVE); union { int (*reg_target)(struct i2c_client *client); int (*reg_slave)(struct i2c_client *client); }; union { int (*unreg_target)(struct i2c_client *client); int (*unreg_slave)(struct i2c_client *client); }; #endif; };”h]”hX struct i2c_algorithm { union { int (*xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); }; union { int (*xfer_atomic)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*master_xfer_atomic)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); }; int (*smbus_xfer)(struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, u8 command, int size, union i2c_smbus_data *data); int (*smbus_xfer_atomic)(struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, u8 command, int size, union i2c_smbus_data *data); u32 (*functionality)(struct i2c_adapter *adap); #if IS_ENABLED(CONFIG_I2C_SLAVE); union { int (*reg_target)(struct i2c_client *client); int (*reg_slave)(struct i2c_client *client); }; union { int (*unreg_target)(struct i2c_client *client); int (*unreg_slave)(struct i2c_client *client); }; #endif; };”…”�”}”hjbsbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M hjAubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hjsh]”hŒMembers”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M!hjAubjq)�”}”(hhh]”(jv)�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KhjŒubj–)�”}”(hhh]”hà)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j§h´Khj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j§h´Khj‰ubjv)�”}”(hŒb``xfer`` Transfer a given number of messages defined by the msgs array via the specified adapter. ”h]”(j|)�”}”(hŒ``xfer``”h]”j)�”}”(hjËh]”hŒxfer”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MhjÅubj–)�”}”(hhh]”hà)�”}”(hŒXTransfer a given number of messages defined by the msgs array via the specified adapter.”h]”hŒXTransfer a given number of messages defined by the msgs array via the specified adapter.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jàh´Mhj‰ubjv)�”}”(hŒ)``master_xfer`` deprecated, use **xfer** ”h]”(j|)�”}”(hŒ``master_xfer``”h]”j)�”}”(hjh]”hŒ master_xfer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhjÿubj–)�”}”(hhh]”hà)�”}”(hŒdeprecated, use **xfer**”h]”(hŒdeprecated, use ”…”�”}”(hjh²hh³Nh´Nubj[)�”}”(hŒ**xfer**”h]”hŒxfer”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´Mhj‰ubjv)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j|)�”}”(hŒ``{unnamed_union}``”h]”j)�”}”(hjLh]”hŒ{unnamed_union}”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´KhjFubj–)�”}”(hhh]”hà)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jah´Khjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jah´Khj‰ubjv)�”}”(hŒ„``xfer_atomic`` Same as **xfer**. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional. ”h]”(j|)�”}”(hŒ``xfer_atomic``”h]”j)�”}”(hj…h]”hŒ xfer_atomic”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhjubj–)�”}”(hhh]”hà)�”}”(hŒsSame as **xfer**. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional.”h]”(hŒSame as ”…”�”}”(hjžh²hh³Nh´Nubj[)�”}”(hŒ**xfer**”h]”hŒxfer”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjžubhŒc. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jšh´Mhj‰ubjv)�”}”(hŒ7``master_xfer_atomic`` deprecated, use **xfer_atomic** ”h]”(j|)�”}”(hŒ``master_xfer_atomic``”h]”j)�”}”(hjÑh]”hŒmaster_xfer_atomic”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MhjËubj–)�”}”(hhh]”hà)�”}”(hŒdeprecated, use **xfer_atomic**”h]”(hŒdeprecated, use ”…”�”}”(hjêh²hh³Nh´Nubj[)�”}”(hŒ**xfer_atomic**”h]”hŒ xfer_atomic”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jæh´Mhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jæh´Mhj‰ubjv)�”}”(hŒ®``smbus_xfer`` Issue SMBus transactions to the given I2C adapter. If this is not present, then the bus layer will try and convert the SMBus calls into I2C transfers instead. ”h]”(j|)�”}”(hŒ``smbus_xfer``”h]”j)�”}”(hjh]”hŒ smbus_xfer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M hjubj–)�”}”(hhh]”hà)�”}”(hŒžIssue SMBus transactions to the given I2C adapter. If this is not present, then the bus layer will try and convert the SMBus calls into I2C transfers instead.”h]”hŒžIssue SMBus transactions to the given I2C adapter. If this is not present, then the bus layer will try and convert the SMBus calls into I2C transfers instead.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j-h´M hj‰ubjv)�”}”(hŒ�``smbus_xfer_atomic`` Same as **smbus_xfer**. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional. ”h]”(j|)�”}”(hŒ``smbus_xfer_atomic``”h]”j)�”}”(hjRh]”hŒsmbus_xfer_atomic”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M hjLubj–)�”}”(hhh]”hà)�”}”(hŒySame as **smbus_xfer**. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional.”h]”(hŒSame as ”…”�”}”(hjkh²hh³Nh´Nubj[)�”}”(hŒ**smbus_xfer**”h]”hŒ smbus_xfer”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjkubhŒc. Yet, only using atomic context so e.g. PMICs can be accessed very late before shutdown. Optional.”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jgh´M hj‰ubjv)�”}”(hŒl``functionality`` Return the flags that this algorithm/adapter pair supports from the ``I2C_FUNC_*`` flags. ”h]”(j|)�”}”(hŒ``functionality``”h]”j)�”}”(hjžh]”hŒ functionality”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhj˜ubj–)�”}”(hhh]”hà)�”}”(hŒYReturn the flags that this algorithm/adapter pair supports from the ``I2C_FUNC_*`` flags.”h]”(hŒDReturn the flags that this algorithm/adapter pair supports from the ”…”�”}”(hj·h²hh³Nh´Nubj)�”}”(hŒ``I2C_FUNC_*``”h]”hŒ I2C_FUNC_*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·ubhŒ flags.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j³h´Mhj‰ubjv)�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Khjäubj–)�”}”(hhh]”hà)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÿh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÿh´Khj‰ubjv)�”}”(hŒJ``reg_target`` Register given client to local target mode of this adapter ”h]”(j|)�”}”(hŒ``reg_target``”h]”j)�”}”(hj#h]”hŒ reg_target”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhjubj–)�”}”(hhh]”hà)�”}”(hŒ:Register given client to local target mode of this adapter”h]”hŒ:Register given client to local target mode of this adapter”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j8h´Mhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j8h´Mhj‰ubjv)�”}”(hŒ-``reg_slave`` deprecated, use **reg_target** ”h]”(j|)�”}”(hŒ ``reg_slave``”h]”j)�”}”(hj\h]”hŒ reg_slave”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MhjVubj–)�”}”(hhh]”hà)�”}”(hŒdeprecated, use **reg_target**”h]”(hŒdeprecated, use ”…”�”}”(hjuh²hh³Nh´Nubj[)�”}”(hŒ**reg_target**”h]”hŒ reg_target”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jqh´Mhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jqh´Mhj‰ubjv)�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Khj�ubj–)�”}”(hhh]”hà)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j¸h´Khj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¸h´Khj‰ubjv)�”}”(hŒP``unreg_target`` Unregister given client from local target mode of this adapter ”h]”(j|)�”}”(hŒ``unreg_target``”h]”j)�”}”(hjÜh]”hŒ unreg_target”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MhjÖubj–)�”}”(hhh]”hà)�”}”(hŒ>Unregister given client from local target mode of this adapter”h]”hŒ>Unregister given client from local target mode of this adapter”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jñh´Mhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jñh´Mhj‰ubjv)�”}”(hŒ0``unreg_slave`` deprecated, use **unreg_target**”h]”(j|)�”}”(hŒ``unreg_slave``”h]”j)�”}”(hjh]”hŒ unreg_slave”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhjubj–)�”}”(hhh]”hà)�”}”(hŒ deprecated, use **unreg_target**”h]”(hŒdeprecated, use ”…”�”}”(hj.h²hh³Nh´Nubj[)�”}”(hŒ**unreg_target**”h]”hŒ unreg_target”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j*h´Mhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjfh]”hŒ Description”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhh·h²hubhà)�”}”(hŒ¶i2c_algorithm is the interface to a class of hardware solutions which can be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 to name two of the most common.”h]”hŒ¶i2c_algorithm is the interface to a class of hardware solutions which can be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 to name two of the most common.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhh·h²hubhà)�”}”(hX The return codes from the ``xfer{_atomic}`` fields should indicate the type of error code that occurred during the transfer, as documented in the Kernel Documentation file Documentation/i2c/fault-codes.rst. Otherwise, the number of messages executed should be returned.”h]”(hŒThe return codes from the ”…”�”}”(hj‹h²hh³Nh´Nubj)�”}”(hŒ``xfer{_atomic}``”h]”hŒ xfer{_atomic}”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ubhŒâ fields should indicate the type of error code that occurred during the transfer, as documented in the Kernel Documentation file Documentation/i2c/fault-codes.rst. Otherwise, the number of messages executed should be returned.”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mhh·h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_lock_operations (C struct)”Œc.i2c_lock_operations”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒi2c_lock_operations”h]”j©)�”}”(hŒstruct i2c_lock_operations”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÁh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M"ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÁh²hh³jÒh´M"ubjÒ)�”}”(hŒi2c_lock_operations”h]”jØ)�”}”(hj¿h]”hŒi2c_lock_operations”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jäah"]”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ñjˆuh1j¨jjhj½h²hh³jÒh´M"ubah}”(h]”j¸ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jÒh´M"hjºh²hubj*)�”}”(hhh]”hà)�”}”(hŒ represent I2C locking operations”h]”hŒ represent I2C locking operations”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MJhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjºh²hh³jÒh´M"ubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKj jLj jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXâ**Definition**:: struct i2c_lock_operations { void (*lock_bus)(struct i2c_adapter *adapter, unsigned int flags); int (*trylock_bus)(struct i2c_adapter *adapter, unsigned int flags); void (*unlock_bus)(struct i2c_adapter *adapter, unsigned int flags); }; **Members** ``lock_bus`` Get exclusive access to an I2C bus segment ``trylock_bus`` Try to get exclusive access to an I2C bus segment ``unlock_bus`` Release exclusive access to an I2C bus segment”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj' ubhŒ:”…”�”}”(hj' h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MNhj# ubj¸ )�”}”(hŒøstruct i2c_lock_operations { void (*lock_bus)(struct i2c_adapter *adapter, unsigned int flags); int (*trylock_bus)(struct i2c_adapter *adapter, unsigned int flags); void (*unlock_bus)(struct i2c_adapter *adapter, unsigned int flags); };”h]”hŒøstruct i2c_lock_operations { void (*lock_bus)(struct i2c_adapter *adapter, unsigned int flags); int (*trylock_bus)(struct i2c_adapter *adapter, unsigned int flags); void (*unlock_bus)(struct i2c_adapter *adapter, unsigned int flags); };”…”�”}”hjD sbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MPhj# ubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hjU h]”hŒMembers”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjS ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MVhj# ubjq)�”}”(hhh]”(jv)�”}”(hŒ8``lock_bus`` Get exclusive access to an I2C bus segment ”h]”(j|)�”}”(hŒ ``lock_bus``”h]”j)�”}”(hjt h]”hŒlock_bus”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjr ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MLhjn ubj–)�”}”(hhh]”hà)�”}”(hŒ*Get exclusive access to an I2C bus segment”h]”hŒ*Get exclusive access to an I2C bus segment”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‰ h´MLhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjn ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‰ h´MLhjk ubjv)�”}”(hŒB``trylock_bus`` Try to get exclusive access to an I2C bus segment ”h]”(j|)�”}”(hŒ``trylock_bus``”h]”j)�”}”(hj­ h]”hŒ trylock_bus”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj« ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MMhj§ ubj–)�”}”(hhh]”hà)�”}”(hŒ1Try to get exclusive access to an I2C bus segment”h]”hŒ1Try to get exclusive access to an I2C bus segment”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j h´MMhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj§ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j h´MMhjk ubjv)�”}”(hŒ=``unlock_bus`` Release exclusive access to an I2C bus segment”h]”(j|)�”}”(hŒ``unlock_bus``”h]”j)�”}”(hjæ h]”hŒ unlock_bus”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MMhjà ubj–)�”}”(hhh]”hà)�”}”(hŒ.Release exclusive access to an I2C bus segment”h]”hŒ.Release exclusive access to an I2C bus segment”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MNhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jû h´MMhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj# ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj)!h]”hŒ Description”…”�”}”(hj+!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj'!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MQhh·h²hubhà)�”}”(hŒCThe main operations are wrapped by i2c_lock_bus and i2c_unlock_bus.”h]”hŒCThe main operations are wrapped by i2c_lock_bus and i2c_unlock_bus.”…”�”}”(hj?!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MNhh·h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_timings (C struct)”Œ c.i2c_timings”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ i2c_timings”h]”j©)�”}”(hŒstruct i2c_timings”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjc!h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MSubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju!h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjc!h²hh³jt!h´MSubjÒ)�”}”(hŒ i2c_timings”h]”jØ)�”}”(hja!h]”hŒ i2c_timings”…”�”}”(hj‡!h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjƒ!ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjc!h²hh³jt!h´MSubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj_!h²hh³jt!h´MSubah}”(h]”jZ!ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jt!h´MShj\!h²hubj*)�”}”(hhh]”hà)�”}”(hŒI2C timing information”h]”hŒI2C timing information”…”�”}”(hj©!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MXhj¦!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj\!h²hh³jt!h´MSubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKjÁ!jLjÁ!jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX¥**Definition**:: struct i2c_timings { u32 bus_freq_hz; u32 scl_rise_ns; u32 scl_fall_ns; u32 scl_int_delay_ns; u32 sda_fall_ns; u32 sda_hold_ns; u32 digital_filter_width_ns; u32 analog_filter_cutoff_freq_hz; }; **Members** ``bus_freq_hz`` the bus frequency in Hz ``scl_rise_ns`` time SCL signal takes to rise in ns; t(r) in the I2C specification ``scl_fall_ns`` time SCL signal takes to fall in ns; t(f) in the I2C specification ``scl_int_delay_ns`` time IP core additionally needs to setup SCL in ns ``sda_fall_ns`` time SDA signal takes to fall in ns; t(f) in the I2C specification ``sda_hold_ns`` time IP core additionally needs to hold SDA in ns ``digital_filter_width_ns`` width in ns of spikes on i2c lines that the IP core digital filter can filter out ``analog_filter_cutoff_freq_hz`` threshold frequency for the low pass IP core analog filter”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÍ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÉ!ubhŒ:”…”�”}”(hjÉ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M\hjÅ!ubj¸ )�”}”(hŒástruct i2c_timings { u32 bus_freq_hz; u32 scl_rise_ns; u32 scl_fall_ns; u32 scl_int_delay_ns; u32 sda_fall_ns; u32 sda_hold_ns; u32 digital_filter_width_ns; u32 analog_filter_cutoff_freq_hz; };”h]”hŒástruct i2c_timings { u32 bus_freq_hz; u32 scl_rise_ns; u32 scl_fall_ns; u32 scl_int_delay_ns; u32 sda_fall_ns; u32 sda_hold_ns; u32 digital_filter_width_ns; u32 analog_filter_cutoff_freq_hz; };”…”�”}”hjæ!sbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M^hjÅ!ubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hj÷!h]”hŒMembers”…”�”}”(hjù!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjõ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MihjÅ!ubjq)�”}”(hhh]”(jv)�”}”(hŒ(``bus_freq_hz`` the bus frequency in Hz ”h]”(j|)�”}”(hŒ``bus_freq_hz``”h]”j)�”}”(hj"h]”hŒ bus_freq_hz”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MZhj"ubj–)�”}”(hhh]”hà)�”}”(hŒthe bus frequency in Hz”h]”hŒthe bus frequency in Hz”…”�”}”(hj/"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j+"h´MZhj,"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j+"h´MZhj "ubjv)�”}”(hŒS``scl_rise_ns`` time SCL signal takes to rise in ns; t(r) in the I2C specification ”h]”(j|)�”}”(hŒ``scl_rise_ns``”h]”j)�”}”(hjO"h]”hŒ scl_rise_ns”…”�”}”(hjQ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjM"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M[hjI"ubj–)�”}”(hhh]”hà)�”}”(hŒBtime SCL signal takes to rise in ns; t(r) in the I2C specification”h]”hŒBtime SCL signal takes to rise in ns; t(r) in the I2C specification”…”�”}”(hjh"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jd"h´M[hje"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjI"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jd"h´M[hj "ubjv)�”}”(hŒS``scl_fall_ns`` time SCL signal takes to fall in ns; t(f) in the I2C specification ”h]”(j|)�”}”(hŒ``scl_fall_ns``”h]”j)�”}”(hjˆ"h]”hŒ scl_fall_ns”…”�”}”(hjŠ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M\hj‚"ubj–)�”}”(hhh]”hà)�”}”(hŒBtime SCL signal takes to fall in ns; t(f) in the I2C specification”h]”hŒBtime SCL signal takes to fall in ns; t(f) in the I2C specification”…”�”}”(hj¡"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j�"h´M\hjž"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj‚"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�"h´M\hj "ubjv)�”}”(hŒH``scl_int_delay_ns`` time IP core additionally needs to setup SCL in ns ”h]”(j|)�”}”(hŒ``scl_int_delay_ns``”h]”j)�”}”(hjÁ"h]”hŒscl_int_delay_ns”…”�”}”(hjÃ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¿"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M]hj»"ubj–)�”}”(hhh]”hà)�”}”(hŒ2time IP core additionally needs to setup SCL in ns”h]”hŒ2time IP core additionally needs to setup SCL in ns”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÖ"h´M]hj×"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj»"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÖ"h´M]hj "ubjv)�”}”(hŒS``sda_fall_ns`` time SDA signal takes to fall in ns; t(f) in the I2C specification ”h]”(j|)�”}”(hŒ``sda_fall_ns``”h]”j)�”}”(hjú"h]”hŒ sda_fall_ns”…”�”}”(hjü"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M^hjô"ubj–)�”}”(hhh]”hà)�”}”(hŒBtime SDA signal takes to fall in ns; t(f) in the I2C specification”h]”hŒBtime SDA signal takes to fall in ns; t(f) in the I2C specification”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j#h´M^hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjô"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j#h´M^hj "ubjv)�”}”(hŒB``sda_hold_ns`` time IP core additionally needs to hold SDA in ns ”h]”(j|)�”}”(hŒ``sda_hold_ns``”h]”j)�”}”(hj3#h]”hŒ sda_hold_ns”…”�”}”(hj5#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M_hj-#ubj–)�”}”(hhh]”hà)�”}”(hŒ1time IP core additionally needs to hold SDA in ns”h]”hŒ1time IP core additionally needs to hold SDA in ns”…”�”}”(hjL#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jH#h´M_hjI#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj-#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jH#h´M_hj "ubjv)�”}”(hŒn``digital_filter_width_ns`` width in ns of spikes on i2c lines that the IP core digital filter can filter out ”h]”(j|)�”}”(hŒ``digital_filter_width_ns``”h]”j)�”}”(hjl#h]”hŒdigital_filter_width_ns”…”�”}”(hjn#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mahjf#ubj–)�”}”(hhh]”hà)�”}”(hŒQwidth in ns of spikes on i2c lines that the IP core digital filter can filter out”h]”hŒQwidth in ns of spikes on i2c lines that the IP core digital filter can filter out”…”�”}”(hj…#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M`hj‚#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjf#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�#h´Mahj "ubjv)�”}”(hŒ[``analog_filter_cutoff_freq_hz`` threshold frequency for the low pass IP core analog filter”h]”(j|)�”}”(hŒ ``analog_filter_cutoff_freq_hz``”h]”j)�”}”(hj¦#h]”hŒanalog_filter_cutoff_freq_hz”…”�”}”(hj¨#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mbhj #ubj–)�”}”(hhh]”hà)�”}”(hŒ:threshold frequency for the low pass IP core analog filter”h]”hŒ:threshold frequency for the low pass IP core analog filter”…”�”}”(hj¿#h²hh³Nh´Nubah}”(h]”h ]”•Th"]”h$]”h&]”uh1hßh³j»#h´Mbhj¼#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j»#h´Mbhj "ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjÅ!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ i2c_bus_recovery_info (C struct)”Œc.i2c_bus_recovery_info”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒi2c_bus_recovery_info”h]”j©)�”}”(hŒstruct i2c_bus_recovery_info”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjû#h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MiubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjû#h²hh³j $h´MiubjÒ)�”}”(hŒi2c_bus_recovery_info”h]”jØ)�”}”(hjù#h]”hŒi2c_bus_recovery_info”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj$ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjû#h²hh³j $h´Miubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj÷#h²hh³j $h´Miubah}”(h]”jò#ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j $h´Mihjô#h²hubj*)�”}”(hhh]”hà)�”}”(hŒI2C bus recovery information”h]”hŒI2C bus recovery information”…”�”}”(hjA$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mphj>$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjô#h²hh³j $h´Miubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKjY$jLjY$jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX **Definition**:: struct i2c_bus_recovery_info { int (*recover_bus)(struct i2c_adapter *adap); int (*get_scl)(struct i2c_adapter *adap); void (*set_scl)(struct i2c_adapter *adap, int val); int (*get_sda)(struct i2c_adapter *adap); void (*set_sda)(struct i2c_adapter *adap, int val); int (*get_bus_free)(struct i2c_adapter *adap); void (*prepare_recovery)(struct i2c_adapter *adap); void (*unprepare_recovery)(struct i2c_adapter *adap); struct gpio_desc *scl_gpiod; struct gpio_desc *sda_gpiod; struct pinctrl *pinctrl; struct pinctrl_state *pins_default; struct pinctrl_state *pins_gpio; }; **Members** ``recover_bus`` Recover routine. Either pass driver's recover_bus() routine, or i2c_generic_scl_recovery(). ``get_scl`` This gets current value of SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery. ``set_scl`` This sets/clears the SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery. ``get_sda`` This gets current value of SDA line. This or set_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery. ``set_sda`` This sets/clears the SDA line. This or get_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery. ``get_bus_free`` Returns the bus free state as seen from the IP core in case it has a more complex internal logic than just reading SDA. Optional. ``prepare_recovery`` This will be called before starting recovery. Platform may configure padmux here for SDA/SCL line or something else they want. ``unprepare_recovery`` This will be called after completing recovery. Platform may configure padmux here for SDA/SCL line or something else they want. ``scl_gpiod`` gpiod of the SCL line. Only required for GPIO recovery. ``sda_gpiod`` gpiod of the SDA line. Only required for GPIO recovery. ``pinctrl`` pinctrl used by GPIO recovery to change the state of the I2C pins. Optional. ``pins_default`` default pinctrl state of SCL/SDA lines, when they are assigned to the I2C bus. Optional. Populated internally for GPIO recovery, if state with the name PINCTRL_STATE_DEFAULT is found and pinctrl is valid. ``pins_gpio`` recovery pinctrl state of SCL/SDA lines, when they are used as GPIOs. Optional. Populated internally for GPIO recovery, if this state is called "gpio" or "recovery" and pinctrl is valid.”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hje$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhja$ubhŒ:”…”�”}”(hja$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mthj]$ubj¸ )�”}”(hXpstruct i2c_bus_recovery_info { int (*recover_bus)(struct i2c_adapter *adap); int (*get_scl)(struct i2c_adapter *adap); void (*set_scl)(struct i2c_adapter *adap, int val); int (*get_sda)(struct i2c_adapter *adap); void (*set_sda)(struct i2c_adapter *adap, int val); int (*get_bus_free)(struct i2c_adapter *adap); void (*prepare_recovery)(struct i2c_adapter *adap); void (*unprepare_recovery)(struct i2c_adapter *adap); struct gpio_desc *scl_gpiod; struct gpio_desc *sda_gpiod; struct pinctrl *pinctrl; struct pinctrl_state *pins_default; struct pinctrl_state *pins_gpio; };”h]”hXpstruct i2c_bus_recovery_info { int (*recover_bus)(struct i2c_adapter *adap); int (*get_scl)(struct i2c_adapter *adap); void (*set_scl)(struct i2c_adapter *adap, int val); int (*get_sda)(struct i2c_adapter *adap); void (*set_sda)(struct i2c_adapter *adap, int val); int (*get_bus_free)(struct i2c_adapter *adap); void (*prepare_recovery)(struct i2c_adapter *adap); void (*unprepare_recovery)(struct i2c_adapter *adap); struct gpio_desc *scl_gpiod; struct gpio_desc *sda_gpiod; struct pinctrl *pinctrl; struct pinctrl_state *pins_default; struct pinctrl_state *pins_gpio; };”…”�”}”hj~$sbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mvhj]$ubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hj�$h]”hŒMembers”…”�”}”(hj‘$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M†hj]$ubjq)�”}”(hhh]”(jv)�”}”(hŒl``recover_bus`` Recover routine. Either pass driver's recover_bus() routine, or i2c_generic_scl_recovery(). ”h]”(j|)�”}”(hŒ``recover_bus``”h]”j)�”}”(hj®$h]”hŒ recover_bus”…”�”}”(hj°$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mshj¨$ubj–)�”}”(hhh]”hà)�”}”(hŒ[Recover routine. Either pass driver's recover_bus() routine, or i2c_generic_scl_recovery().”h]”hŒ]Recover routine. Either pass driver’s recover_bus() routine, or i2c_generic_scl_recovery().”…”�”}”(hjÇ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MrhjÄ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¨$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÃ$h´Mshj¥$ubjv)�”}”(hŒ…``get_scl`` This gets current value of SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery. ”h]”(j|)�”}”(hŒ ``get_scl``”h]”j)�”}”(hjè$h]”hŒget_scl”…”�”}”(hjê$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjæ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Muhjâ$ubj–)�”}”(hhh]”hà)�”}”(hŒxThis gets current value of SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery.”h]”hŒxThis gets current value of SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mthjþ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjâ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jý$h´Muhj¥$ubjv)�”}”(hŒ``set_scl`` This sets/clears the SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery. ”h]”(j|)�”}”(hŒ ``set_scl``”h]”j)�”}”(hj"%h]”hŒset_scl”…”�”}”(hj$%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mwhj%ubj–)�”}”(hhh]”hà)�”}”(hŒrThis sets/clears the SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery.”h]”hŒrThis sets/clears the SCL line. Mandatory for generic SCL recovery. Populated internally for generic GPIO recovery.”…”�”}”(hj;%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mvhj8%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j7%h´Mwhj¥$ubjv)�”}”(hŒ¸``get_sda`` This gets current value of SDA line. This or set_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery. ”h]”(j|)�”}”(hŒ ``get_sda``”h]”j)�”}”(hj\%h]”hŒget_sda”…”�”}”(hj^%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MzhjV%ubj–)�”}”(hhh]”hà)�”}”(hŒ«This gets current value of SDA line. This or set_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery.”h]”hŒ«This gets current value of SDA line. This or set_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery.”…”�”}”(hju%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mxhjr%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjV%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jq%h´Mzhj¥$ubjv)�”}”(hŒ²``set_sda`` This sets/clears the SDA line. This or get_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery. ”h]”(j|)�”}”(hŒ ``set_sda``”h]”j)�”}”(hj–%h]”hŒset_sda”…”�”}”(hj˜%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M}hj�%ubj–)�”}”(hhh]”hà)�”}”(hŒ¥This sets/clears the SDA line. This or get_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery.”h]”hŒ¥This sets/clears the SDA line. This or get_sda() is mandatory for generic SCL recovery. Populated internally, if sda_gpio is a valid GPIO, for generic GPIO recovery.”…”�”}”(hj¯%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M{hj¬%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj�%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j«%h´M}hj¥$ubjv)�”}”(hŒ“``get_bus_free`` Returns the bus free state as seen from the IP core in case it has a more complex internal logic than just reading SDA. Optional. ”h]”(j|)�”}”(hŒ``get_bus_free``”h]”j)�”}”(hjÐ%h]”hŒ get_bus_free”…”�”}”(hjÒ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÎ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MhjÊ%ubj–)�”}”(hhh]”hà)�”}”(hŒ�Returns the bus free state as seen from the IP core in case it has a more complex internal logic than just reading SDA. Optional.”h]”hŒ�Returns the bus free state as seen from the IP core in case it has a more complex internal logic than just reading SDA. Optional.”…”�”}”(hjé%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M~hjæ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÊ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jå%h´Mhj¥$ubjv)�”}”(hŒ”``prepare_recovery`` This will be called before starting recovery. Platform may configure padmux here for SDA/SCL line or something else they want. ”h]”(j|)�”}”(hŒ``prepare_recovery``”h]”j)�”}”(hj &h]”hŒprepare_recovery”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M�hj&ubj–)�”}”(hhh]”hà)�”}”(hŒ~This will be called before starting recovery. Platform may configure padmux here for SDA/SCL line or something else they want.”h]”hŒ~This will be called before starting recovery. Platform may configure padmux here for SDA/SCL line or something else they want.”…”�”}”(hj#&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M€hj &ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j&h´M�hj¥$ubjv)�”}”(hŒ—``unprepare_recovery`` This will be called after completing recovery. Platform may configure padmux here for SDA/SCL line or something else they want. ”h]”(j|)�”}”(hŒ``unprepare_recovery``”h]”j)�”}”(hjD&h]”hŒunprepare_recovery”…”�”}”(hjF&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mƒhj>&ubj–)�”}”(hhh]”hà)�”}”(hŒThis will be called after completing recovery. Platform may configure padmux here for SDA/SCL line or something else they want.”h]”hŒThis will be called after completing recovery. Platform may configure padmux here for SDA/SCL line or something else they want.”…”�”}”(hj]&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M‚hjZ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj>&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jY&h´Mƒhj¥$ubjv)�”}”(hŒF``scl_gpiod`` gpiod of the SCL line. Only required for GPIO recovery. ”h]”(j|)�”}”(hŒ ``scl_gpiod``”h]”j)�”}”(hj~&h]”hŒ scl_gpiod”…”�”}”(hj€&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj|&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M„hjx&ubj–)�”}”(hhh]”hà)�”}”(hŒ7gpiod of the SCL line. Only required for GPIO recovery.”h]”hŒ7gpiod of the SCL line. Only required for GPIO recovery.”…”�”}”(hj—&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j“&h´M„hj”&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjx&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j“&h´M„hj¥$ubjv)�”}”(hŒF``sda_gpiod`` gpiod of the SDA line. Only required for GPIO recovery. ”h]”(j|)�”}”(hŒ ``sda_gpiod``”h]”j)�”}”(hj·&h]”hŒ sda_gpiod”…”�”}”(hj¹&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M…hj±&ubj–)�”}”(hhh]”hà)�”}”(hŒ7gpiod of the SDA line. Only required for GPIO recovery.”h]”hŒ7gpiod of the SDA line. Only required for GPIO recovery.”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÌ&h´M…hjÍ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj±&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÌ&h´M…hj¥$ubjv)�”}”(hŒY``pinctrl`` pinctrl used by GPIO recovery to change the state of the I2C pins. Optional. ”h]”(j|)�”}”(hŒ ``pinctrl``”h]”j)�”}”(hjð&h]”hŒpinctrl”…”�”}”(hjò&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjî&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M‡hjê&ubj–)�”}”(hhh]”hà)�”}”(hŒLpinctrl used by GPIO recovery to change the state of the I2C pins. Optional.”h]”hŒLpinctrl used by GPIO recovery to change the state of the I2C pins. Optional.”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M†hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjê&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j'h´M‡hj¥$ubjv)�”}”(hŒÞ``pins_default`` default pinctrl state of SCL/SDA lines, when they are assigned to the I2C bus. Optional. Populated internally for GPIO recovery, if state with the name PINCTRL_STATE_DEFAULT is found and pinctrl is valid. ”h]”(j|)�”}”(hŒ``pins_default``”h]”j)�”}”(hj*'h]”hŒ pins_default”…”�”}”(hj,'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj('ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MŠhj$'ubj–)�”}”(hhh]”hà)�”}”(hŒÌdefault pinctrl state of SCL/SDA lines, when they are assigned to the I2C bus. Optional. Populated internally for GPIO recovery, if state with the name PINCTRL_STATE_DEFAULT is found and pinctrl is valid.”h]”hŒÌdefault pinctrl state of SCL/SDA lines, when they are assigned to the I2C bus. Optional. Populated internally for GPIO recovery, if state with the name PINCTRL_STATE_DEFAULT is found and pinctrl is valid.”…”�”}”(hjC'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mˆhj@'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj$'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j?'h´MŠhj¥$ubjv)�”}”(hŒÈ``pins_gpio`` recovery pinctrl state of SCL/SDA lines, when they are used as GPIOs. Optional. Populated internally for GPIO recovery, if this state is called "gpio" or "recovery" and pinctrl is valid.”h]”(j|)�”}”(hŒ ``pins_gpio``”h]”j)�”}”(hjd'h]”hŒ pins_gpio”…”�”}”(hjf'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjb'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MŒhj^'ubj–)�”}”(hhh]”hà)�”}”(hŒºrecovery pinctrl state of SCL/SDA lines, when they are used as GPIOs. Optional. Populated internally for GPIO recovery, if this state is called "gpio" or "recovery" and pinctrl is valid.”h]”hŒÂrecovery pinctrl state of SCL/SDA lines, when they are used as GPIOs. Optional. Populated internally for GPIO recovery, if this state is called “gpioâ€� or “recoveryâ€� and pinctrl is valid.”…”�”}”(hj}'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M‹hjz'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj^'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jy'h´MŒhj¥$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj]$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_adapter_quirks (C struct)”Œc.i2c_adapter_quirks”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒi2c_adapter_quirks”h]”j©)�”}”(hŒstruct i2c_adapter_quirks”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¾'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjº'h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M“ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ'h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjº'h²hh³jË'h´M“ubjÒ)�”}”(hŒi2c_adapter_quirks”h]”jØ)�”}”(hj¸'h]”hŒi2c_adapter_quirks”…”�”}”(hjÞ'h²hh³Nh´Nubah}”(h]”h ]”jäah"]”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ñjˆuh1j¨jjhj¶'h²hh³jË'h´M“ubah}”(h]”j±'ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jË'h´M“hj³'h²hubj*)�”}”(hhh]”hà)�”}”(hŒ describe flaws of an i2c adapter”h]”hŒ describe flaws of an i2c adapter”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¨hjý'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj³'h²hh³jË'h´M“ubeh}”(h]”h ]”(jŒstruct”eh"]”h$]”h&]”jJjjKj(jLj(jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXd**Definition**:: struct i2c_adapter_quirks { u64 flags; int max_num_msgs; u16 max_write_len; u16 max_read_len; u16 max_comb_1st_msg_len; u16 max_comb_2nd_msg_len; }; **Members** ``flags`` see I2C_AQ_* for possible flags and read below ``max_num_msgs`` maximum number of messages per transfer ``max_write_len`` maximum length of a write message ``max_read_len`` maximum length of a read message ``max_comb_1st_msg_len`` maximum length of the first msg in a combined message ``max_comb_2nd_msg_len`` maximum length of the second msg in a combined message”h]”(hà)�”}”(hŒ**Definition**::”h]”(j[)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj$(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj (ubhŒ:”…”�”}”(hj (h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¬hj(ubj¸ )�”}”(hŒ¬struct i2c_adapter_quirks { u64 flags; int max_num_msgs; u16 max_write_len; u16 max_read_len; u16 max_comb_1st_msg_len; u16 max_comb_2nd_msg_len; };”h]”hŒ¬struct i2c_adapter_quirks { u64 flags; int max_num_msgs; u16 max_write_len; u16 max_read_len; u16 max_comb_1st_msg_len; u16 max_comb_2nd_msg_len; };”…”�”}”hj=(sbah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1j· h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M®hj(ubhà)�”}”(hŒ **Members**”h]”j[)�”}”(hjN(h]”hŒMembers”…”�”}”(hjP(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjL(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M·hj(ubjq)�”}”(hhh]”(jv)�”}”(hŒ9``flags`` see I2C_AQ_* for possible flags and read below ”h]”(j|)�”}”(hŒ ``flags``”h]”j)�”}”(hjm(h]”hŒflags”…”�”}”(hjo(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjk(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´Mªhjg(ubj–)�”}”(hhh]”hà)�”}”(hŒ.see I2C_AQ_* for possible flags and read below”h]”hŒ.see I2C_AQ_* for possible flags and read below”…”�”}”(hj†(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‚(h´Mªhjƒ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjg(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‚(h´Mªhjd(ubjv)�”}”(hŒ9``max_num_msgs`` maximum number of messages per transfer ”h]”(j|)�”}”(hŒ``max_num_msgs``”h]”j)�”}”(hj¦(h]”hŒ max_num_msgs”…”�”}”(hj¨(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M«hj (ubj–)�”}”(hhh]”hà)�”}”(hŒ'maximum number of messages per transfer”h]”hŒ'maximum number of messages per transfer”…”�”}”(hj¿(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j»(h´M«hj¼(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj (ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j»(h´M«hjd(ubjv)�”}”(hŒ4``max_write_len`` maximum length of a write message ”h]”(j|)�”}”(hŒ``max_write_len``”h]”j)�”}”(hjß(h]”hŒ max_write_len”…”�”}”(hjá(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¬hjÙ(ubj–)�”}”(hhh]”hà)�”}”(hŒ!maximum length of a write message”h]”hŒ!maximum length of a write message”…”�”}”(hjø(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jô(h´M¬hjõ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÙ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jô(h´M¬hjd(ubjv)�”}”(hŒ2``max_read_len`` maximum length of a read message ”h]”(j|)�”}”(hŒ``max_read_len``”h]”j)�”}”(hj)h]”hŒ max_read_len”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M­hj)ubj–)�”}”(hhh]”hà)�”}”(hŒ maximum length of a read message”h]”hŒ maximum length of a read message”…”�”}”(hj1)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j-)h´M­hj.)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j-)h´M­hjd(ubjv)�”}”(hŒO``max_comb_1st_msg_len`` maximum length of the first msg in a combined message ”h]”(j|)�”}”(hŒ``max_comb_1st_msg_len``”h]”j)�”}”(hjQ)h]”hŒmax_comb_1st_msg_len”…”�”}”(hjS)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M®hjK)ubj–)�”}”(hhh]”hà)�”}”(hŒ5maximum length of the first msg in a combined message”h]”hŒ5maximum length of the first msg in a combined message”…”�”}”(hjj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jf)h´M®hjg)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjK)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jf)h´M®hjd(ubjv)�”}”(hŒO``max_comb_2nd_msg_len`` maximum length of the second msg in a combined message”h]”(j|)�”}”(hŒ``max_comb_2nd_msg_len``”h]”j)�”}”(hjŠ)h]”hŒmax_comb_2nd_msg_len”…”�”}”(hjŒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjˆ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M®hj„)ubj–)�”}”(hhh]”hà)�”}”(hŒ6maximum length of the second msg in a combined message”h]”hŒ6maximum length of the second msg in a combined message”…”�”}”(hj£)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¯hj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj„)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jŸ)h´M®hjd(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjÍ)h]”hŒ Description”…”�”}”(hjÏ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjË)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M²hh·h²hubhà)�”}”(hX¸Note about combined messages: Some I2C controllers can only send one message per transfer, plus something called combined message or write-then-read. This is (usually) a small write message followed by a read message and barely enough to access register based devices like EEPROMs. There is a flag to support this mode. It implies max_num_msg = 2 and does the length checks with max_comb_*_len because combined message mode usually has its own limitations. Because of HW implementations, some controllers can actually do write-then-anything or other variants. To support that, write-then-read has been broken out into smaller bits like write-first and read-second which can be combined as needed.”h]”hX¸Note about combined messages: Some I2C controllers can only send one message per transfer, plus something called combined message or write-then-read. This is (usually) a small write message followed by a read message and barely enough to access register based devices like EEPROMs. There is a flag to support this mode. It implies max_num_msg = 2 and does the length checks with max_comb_*_len because combined message mode usually has its own limitations. Because of HW implementations, some controllers can actually do write-then-anything or other variants. To support that, write-then-read has been broken out into smaller bits like write-first and read-second which can be combined as needed.”…”�”}”(hjã)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¯hh·h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_lock_bus (C function)”Œc.i2c_lock_bus”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒCvoid i2c_lock_bus (struct i2c_adapter *adapter, unsigned int flags)”h]”j©)�”}”(hŒBvoid i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj*h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M!ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj*h²hh³j*h´M!ubjÒ)�”}”(hŒ i2c_lock_bus”h]”jØ)�”}”(hŒ i2c_lock_bus”h]”hŒ i2c_lock_bus”…”�”}”(hj,*h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj(*ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj*h²hh³j*h´M!ubjó)�”}”(hŒ1(struct i2c_adapter *adapter, unsigned int flags)”h]”(jù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjD*ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjD*ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjf*h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjc*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jh*Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj.*sbŒc.i2c_lock_bus”†”asbuh1hhjD*ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†*h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjD*ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj”*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjD*ubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj¡*h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjD*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj@*ubjù)�”}”(hŒunsigned int flags”h]”(j¯)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjº*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¶*ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ*h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¶*ubj¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¶*ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä*h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¶*ubjØ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjò*h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¶*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj@*ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj*h²hh³j*h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj*h²hh³j*h´M!ubah}”(h]”jþ)ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j*h´M!hj*h²hubj*)�”}”(hhh]”hà)�”}”(hŒ*Get exclusive access to an I2C bus segment”h]”hŒ*Get exclusive access to an I2C bus segment”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M!hj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj*h²hh³j*h´M!ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj4+jLj4+jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒÒ**Parameters** ``struct i2c_adapter *adapter`` Target I2C bus segment ``unsigned int flags`` I2C_LOCK_ROOT_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT locks only this branch in the adapter tree”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj>+h]”hŒ Parameters”…”�”}”(hj@+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj<+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M%hj8+ubjq)�”}”(hhh]”(jv)�”}”(hŒ7``struct i2c_adapter *adapter`` Target I2C bus segment ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hj]+h]”hŒstruct i2c_adapter *adapter”…”�”}”(hj_+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M"hjW+ubj–)�”}”(hhh]”hà)�”}”(hŒTarget I2C bus segment”h]”hŒTarget I2C bus segment”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jr+h´M"hjs+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjW+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jr+h´M"hjT+ubjv)�”}”(hŒ„``unsigned int flags`` I2C_LOCK_ROOT_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT locks only this branch in the adapter tree”h]”(j|)�”}”(hŒ``unsigned int flags``”h]”j)�”}”(hj–+h]”hŒunsigned int flags”…”�”}”(hj˜+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M#hj�+ubj–)�”}”(hhh]”hà)�”}”(hŒmI2C_LOCK_ROOT_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT locks only this branch in the adapter tree”h]”hŒmI2C_LOCK_ROOT_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT locks only this branch in the adapter tree”…”�”}”(hj¯+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j«+h´M#hj¬+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj�+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j«+h´M#hjT+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj8+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_trylock_bus (C function)”Œc.i2c_trylock_bus”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒEint i2c_trylock_bus (struct i2c_adapter *adapter, unsigned int flags)”h]”j©)�”}”(hŒDint i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjï+h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjë+h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M-ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ+h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjë+h²hh³jý+h´M-ubjÒ)�”}”(hŒi2c_trylock_bus”h]”jØ)�”}”(hŒi2c_trylock_bus”h]”hŒi2c_trylock_bus”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj ,ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjë+h²hh³jý+h´M-ubjó)�”}”(hŒ1(struct i2c_adapter *adapter, unsigned int flags)”h]”(jù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj,,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj(,ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9,h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj(,ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjJ,h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjG,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jL,Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj,sbŒc.i2c_trylock_bus”†”asbuh1hhj(,ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj,h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj(,ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjx,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj(,ubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj(,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj$,ubjù)�”}”(hŒunsigned int flags”h]”(j¯)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjž,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjš,ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬,h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjš,ubj¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjº,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjš,ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ,h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjš,ubjØ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÖ,h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjš,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj$,ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjë+h²hh³jý+h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjç+h²hh³jý+h´M-ubah}”(h]”jâ+ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jý+h´M-hjä+h²hubj*)�”}”(hhh]”hà)�”}”(hŒ1Try to get exclusive access to an I2C bus segment”h]”hŒ1Try to get exclusive access to an I2C bus segment”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M-hjý,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjä+h²hh³jý+h´M-ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj-jLj-jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX'**Parameters** ``struct i2c_adapter *adapter`` Target I2C bus segment ``unsigned int flags`` I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter, I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree **Return** true if the I2C bus segment is locked, false otherwise”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj"-h]”hŒ Parameters”…”�”}”(hj$-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M1hj-ubjq)�”}”(hhh]”(jv)�”}”(hŒ7``struct i2c_adapter *adapter`` Target I2C bus segment ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hjA-h]”hŒstruct i2c_adapter *adapter”…”�”}”(hjC-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M.hj;-ubj–)�”}”(hhh]”hà)�”}”(hŒTarget I2C bus segment”h]”hŒTarget I2C bus segment”…”�”}”(hjZ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jV-h´M.hjW-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj;-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jV-h´M.hj8-ubjv)�”}”(hŒ–``unsigned int flags`` I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter, I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree ”h]”(j|)�”}”(hŒ``unsigned int flags``”h]”j)�”}”(hjz-h]”hŒunsigned int flags”…”�”}”(hj|-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M0hjt-ubj–)�”}”(hhh]”hà)�”}”(hŒ~I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter, I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree”h]”hŒ~I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter, I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree”…”�”}”(hj“-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M/hj�-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjt-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�-h´M0hj8-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj-ubhà)�”}”(hŒ **Return**”h]”j[)�”}”(hj¶-h]”hŒReturn”…”�”}”(hj¸-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj´-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M2hj-ubhà)�”}”(hŒ6true if the I2C bus segment is locked, false otherwise”h]”hŒ6true if the I2C bus segment is locked, false otherwise”…”�”}”(hjÌ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M2hj-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_unlock_bus (C function)”Œc.i2c_unlock_bus”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒEvoid i2c_unlock_bus (struct i2c_adapter *adapter, unsigned int flags)”h]”j©)�”}”(hŒDvoid i2c_unlock_bus(struct i2c_adapter *adapter, unsigned int flags)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjû-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷-h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M;ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷-h²hh³j .h´M;ubjÒ)�”}”(hŒi2c_unlock_bus”h]”jØ)�”}”(hŒi2c_unlock_bus”h]”hŒi2c_unlock_bus”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj.ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj÷-h²hh³j .h´M;ubjó)�”}”(hŒ1(struct i2c_adapter *adapter, unsigned int flags)”h]”(jù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj4.ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE.h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj4.ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjV.h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjS.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jX.Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj.sbŒc.i2c_unlock_bus”†”asbuh1hhj4.ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv.h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj4.ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj„.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj4.ubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj‘.h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj4.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj0.ubjù)�”}”(hŒunsigned int flags”h]”(j¯)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjª.h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦.ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸.h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¦.ubj¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆ.h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦.ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ.h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¦.ubjØ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjâ.h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¦.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj0.ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj÷-h²hh³j .h´M;ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjó-h²hh³j .h´M;ubah}”(h]”jî-ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j .h´M;hjð-h²hubj*)�”}”(hhh]”hà)�”}”(hŒ.Release exclusive access to an I2C bus segment”h]”hŒ.Release exclusive access to an I2C bus segment”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M;hj /h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjð-h²hh³j .h´M;ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj$/jLj$/jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒÖ**Parameters** ``struct i2c_adapter *adapter`` Target I2C bus segment ``unsigned int flags`` I2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT unlocks only this branch in the adapter tree”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj./h]”hŒ Parameters”…”�”}”(hj0/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj,/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M?hj(/ubjq)�”}”(hhh]”(jv)�”}”(hŒ7``struct i2c_adapter *adapter`` Target I2C bus segment ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hjM/h]”hŒstruct i2c_adapter *adapter”…”�”}”(hjO/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjK/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M<hjG/ubj–)�”}”(hhh]”hà)�”}”(hŒTarget I2C bus segment”h]”hŒTarget I2C bus segment”…”�”}”(hjf/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jb/h´M<hjc/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjG/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jb/h´M<hjD/ubjv)�”}”(hŒˆ``unsigned int flags`` I2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT unlocks only this branch in the adapter tree”h]”(j|)�”}”(hŒ``unsigned int flags``”h]”j)�”}”(hj†/h]”hŒunsigned int flags”…”�”}”(hjˆ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj„/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M=hj€/ubj–)�”}”(hhh]”hà)�”}”(hŒqI2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT unlocks only this branch in the adapter tree”h]”hŒqI2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT unlocks only this branch in the adapter tree”…”�”}”(hjŸ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j›/h´M=hjœ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj€/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j›/h´M=hjD/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj(/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ'i2c_mark_adapter_suspended (C function)”Œc.i2c_mark_adapter_suspended”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ:void i2c_mark_adapter_suspended (struct i2c_adapter *adap)”h]”j©)�”}”(hŒ9void i2c_mark_adapter_suspended(struct i2c_adapter *adap)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjß/h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÛ/h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MGubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî/h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÛ/h²hh³jí/h´MGubjÒ)�”}”(hŒi2c_mark_adapter_suspended”h]”jØ)�”}”(hŒi2c_mark_adapter_suspended”h]”hŒi2c_mark_adapter_suspended”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjü/ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjÛ/h²hh³jí/h´MGubjó)�”}”(hŒ(struct i2c_adapter *adap)”h]”jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj0ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj0ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj:0h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj70ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j<0Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj0sbŒc.i2c_mark_adapter_suspended”†”asbuh1hhj0ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ0h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj0ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjh0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj0ubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hju0h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj0ubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjÛ/h²hh³jí/h´MGubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj×/h²hh³jí/h´MGubah}”(h]”jÒ/ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jí/h´MGhjÔ/h²hubj*)�”}”(hhh]”hà)�”}”(hŒ1Report suspended state of the adapter to the core”h]”hŒ1Report suspended state of the adapter to the core”…”�”}”(hjŸ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MGhjœ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÔ/h²hh³jí/h´MGubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj·0jLj·0jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX¯**Parameters** ``struct i2c_adapter *adap`` Adapter to mark as suspended **Description** When using this helper to mark an adapter as suspended, the core will reject further transfers to this adapter. The usage of this helper is optional but recommended for devices having distinct handlers for system suspend and runtime suspend. More complex devices are free to implement custom solutions to reject transfers when suspended.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjÁ0h]”hŒ Parameters”…”�”}”(hjÃ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¿0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MKhj»0ubjq)�”}”(hhh]”jv)�”}”(hŒ:``struct i2c_adapter *adap`` Adapter to mark as suspended ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hjà0h]”hŒstruct i2c_adapter *adap”…”�”}”(hjâ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MHhjÚ0ubj–)�”}”(hhh]”hà)�”}”(hŒAdapter to mark as suspended”h]”hŒAdapter to mark as suspended”…”�”}”(hjù0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jõ0h´MHhjö0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÚ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jõ0h´MHhj×0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj»0ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj1h]”hŒ Description”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MJhj»0ubhà)�”}”(hXQWhen using this helper to mark an adapter as suspended, the core will reject further transfers to this adapter. The usage of this helper is optional but recommended for devices having distinct handlers for system suspend and runtime suspend. More complex devices are free to implement custom solutions to reject transfers when suspended.”h]”hXQWhen using this helper to mark an adapter as suspended, the core will reject further transfers to this adapter. The usage of this helper is optional but recommended for devices having distinct handlers for system suspend and runtime suspend. More complex devices are free to implement custom solutions to reject transfers when suspended.”…”�”}”(hj11h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MIhj»0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_mark_adapter_resumed (C function)”Œc.i2c_mark_adapter_resumed”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ8void i2c_mark_adapter_resumed (struct i2c_adapter *adap)”h]”j©)�”}”(hŒ7void i2c_mark_adapter_resumed(struct i2c_adapter *adap)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`1h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj\1h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MXubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj\1h²hh³jn1h´MXubjÒ)�”}”(hŒi2c_mark_adapter_resumed”h]”jØ)�”}”(hŒi2c_mark_adapter_resumed”h]”hŒi2c_mark_adapter_resumed”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj}1ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj\1h²hh³jn1h´MXubjó)�”}”(hŒ(struct i2c_adapter *adap)”h]”jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj™1ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª1h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj™1ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¸1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j½1Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjƒ1sbŒc.i2c_mark_adapter_resumed”†”asbuh1hhj™1ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ1h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj™1ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjé1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj™1ubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hjö1h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj™1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj•1ubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj\1h²hh³jn1h´MXubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjX1h²hh³jn1h´MXubah}”(h]”jS1ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jn1h´MXhjU1h²hubj*)�”}”(hhh]”hà)�”}”(hŒ/Report resumed state of the adapter to the core”h]”hŒ/Report resumed state of the adapter to the core”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MXhj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjU1h²hh³jn1h´MXubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj82jLj82jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX**Parameters** ``struct i2c_adapter *adap`` Adapter to mark as resumed **Description** When using this helper to mark an adapter as resumed, the core will allow further transfers to this adapter. See also further notes to **i2c_mark_adapter_suspended\(\)**.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjB2h]”hŒ Parameters”…”�”}”(hjD2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj@2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M\hj<2ubjq)�”}”(hhh]”jv)�”}”(hŒ8``struct i2c_adapter *adap`` Adapter to mark as resumed ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hja2h]”hŒstruct i2c_adapter *adap”…”�”}”(hjc2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj_2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MYhj[2ubj–)�”}”(hhh]”hà)�”}”(hŒAdapter to mark as resumed”h]”hŒAdapter to mark as resumed”…”�”}”(hjz2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jv2h´MYhjw2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj[2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jv2h´MYhjX2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj<2ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjœ2h]”hŒ Description”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjš2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M[hj<2ubhà)�”}”(hŒªWhen using this helper to mark an adapter as resumed, the core will allow further transfers to this adapter. See also further notes to **i2c_mark_adapter_suspended\(\)**.”h]”(hŒ‡When using this helper to mark an adapter as resumed, the core will allow further transfers to this adapter. See also further notes to ”…”�”}”(hj²2h²hh³Nh´Nubj[)�”}”(hŒ"**i2c_mark_adapter_suspended\(\)**”h]”hŒi2c_mark_adapter_suspended()”…”�”}”(hjº2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj²2ubhŒ.”…”�”}”(hj²2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MZhj<2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_check_quirks (C function)”Œc.i2c_check_quirks”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¢hj64ubj–)�”}”(hhh]”hà)�”}”(hŒ i2c adapter”h]”hŒ i2c adapter”…”�”}”(hjU4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jQ4h´M¢hjR4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj64ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jQ4h´M¢hj34ubjv)�”}”(hŒ``u64 quirks`` quirk flags ”h]”(j|)�”}”(hŒ``u64 quirks``”h]”j)�”}”(hju4h]”hŒ u64 quirks”…”�”}”(hjw4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjs4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M£hjo4ubj–)�”}”(hhh]”hà)�”}”(hŒ quirk flags”h]”hŒ quirk flags”…”�”}”(hjŽ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jŠ4h´M£hj‹4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjo4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jŠ4h´M£hj34ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj4ubhà)�”}”(hŒ **Return**”h]”j[)�”}”(hj°4h]”hŒReturn”…”�”}”(hj²4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj®4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¥hj4ubhà)�”}”(hŒCtrue if the adapter has all the specified quirk flags, false if not”h]”hŒCtrue if the adapter has all the specified quirk flags, false if not”…”�”}”(hjÆ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´M¥hj4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œmodule_i2c_driver (C macro)”Œc.module_i2c_driver”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒmodule_i2c_driver”h]”j©)�”}”(hŒmodule_i2c_driver”h]”jÒ)�”}”(hŒmodule_i2c_driver”h]”jØ)�”}”(hjï4h]”hŒmodule_i2c_driver”…”�”}”(hjù4h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjõ4ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjñ4h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÍubah}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjí4h²hh³j 5h´MÍubah}”(h]”jè4ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j 5h´MÍhjê4h²hubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j)hjê4h²hh³j 5h´MÍubeh}”(h]”h ]”(jŒmacro”eh"]”h$]”h&]”jJjjKj%5jLj%5jM‰jN‰jO‰uh1j�h²hhh·h³Nh´Nubhà)�”}”(hŒ$``module_i2c_driver (__i2c_driver)``”h]”j)�”}”(hj+5h]”hŒ module_i2c_driver (__i2c_driver)”…”�”}”(hj-5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÏhh·h²hubjë)�”}”(hŒ2Helper macro for registering a modular I2C driver ”h]”hà)�”}”(hŒ1Helper macro for registering a modular I2C driver”h]”hŒ1Helper macro for registering a modular I2C driver”…”�”}”(hjE5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÍhjA5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jêh³jS5h´MÍhh·h²hubjQ)�”}”(hX!**Parameters** ``__i2c_driver`` i2c_driver struct **Description** Helper macro for I2C drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit()”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj`5h]”hŒ Parameters”…”�”}”(hjb5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj^5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÑhjZ5ubjq)�”}”(hhh]”jv)�”}”(hŒ#``__i2c_driver`` i2c_driver struct ”h]”(j|)�”}”(hŒ``__i2c_driver``”h]”j)�”}”(hj5h]”hŒ __i2c_driver”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÎhjy5ubj–)�”}”(hhh]”hà)�”}”(hŒi2c_driver struct”h]”hŒi2c_driver struct”…”�”}”(hj˜5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j”5h´MÎhj•5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjy5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j”5h´MÎhjv5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjZ5ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjº5h]”hŒ Description”…”�”}”(hj¼5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¸5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÐhjZ5ubhà)�”}”(hŒÚHelper macro for I2C drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit()”h]”hŒÚHelper macro for I2C drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit()”…”�”}”(hjÐ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÏhjZ5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œbuiltin_i2c_driver (C macro)”Œc.builtin_i2c_driver”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒbuiltin_i2c_driver”h]”j©)�”}”(hŒbuiltin_i2c_driver”h]”jÒ)�”}”(hŒbuiltin_i2c_driver”h]”jØ)�”}”(hjù5h]”hŒbuiltin_i2c_driver”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÿ5ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjû5h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”•h´MÙubah}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj÷5h²hh³j6h´MÙubah}”(h]”jò5ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j6h´MÙhjô5h²hubj*)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j)hjô5h²hh³j6h´MÙubeh}”(h]”h ]”(jŒmacro”eh"]”h$]”h&]”jJjjKj/6jLj/6jM‰jN‰jO‰uh1j�h²hhh·h³Nh´Nubhà)�”}”(hŒ%``builtin_i2c_driver (__i2c_driver)``”h]”j)�”}”(hj56h]”hŒ!builtin_i2c_driver (__i2c_driver)”…”�”}”(hj76h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj36ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÛhh·h²hubjë)�”}”(hŒ2Helper macro for registering a builtin I2C driver ”h]”hà)�”}”(hŒ1Helper macro for registering a builtin I2C driver”h]”hŒ1Helper macro for registering a builtin I2C driver”…”�”}”(hjO6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÙhjK6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jêh³j]6h´MÙhh·h²hubjQ)�”}”(hX**Parameters** ``__i2c_driver`` i2c_driver struct **Description** Helper macro for I2C drivers which do not do anything special in their init. This eliminates a lot of boilerplate. Each driver may only use this macro once, and calling it replaces device_initcall().”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjj6h]”hŒ Parameters”…”�”}”(hjl6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjh6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÝhjd6ubjq)�”}”(hhh]”jv)�”}”(hŒ#``__i2c_driver`` i2c_driver struct ”h]”(j|)�”}”(hŒ``__i2c_driver``”h]”j)�”}”(hj‰6h]”hŒ __i2c_driver”…”�”}”(hj‹6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÚhjƒ6ubj–)�”}”(hhh]”hà)�”}”(hŒi2c_driver struct”h]”hŒi2c_driver struct”…”�”}”(hj¢6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jž6h´MÚhjŸ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjƒ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jž6h´MÚhj€6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjd6ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjÄ6h]”hŒ Description”…”�”}”(hjÆ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÂ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÜhjd6ubhà)�”}”(hŒÇHelper macro for I2C drivers which do not do anything special in their init. This eliminates a lot of boilerplate. Each driver may only use this macro once, and calling it replaces device_initcall().”h]”hŒÇHelper macro for I2C drivers which do not do anything special in their init. This eliminates a lot of boilerplate. Each driver may only use this macro once, and calling it replaces device_initcall().”…”�”}”(hjÚ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:38: ./include/linux/i2c.h”h´MÛhjd6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ$i2c_register_board_info (C function)”Œc.i2c_register_board_info”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒYint i2c_register_board_info (int busnum, struct i2c_board_info const *info, unsigned len)”h]”j©)�”}”(hŒXint i2c_register_board_info(int busnum, struct i2c_board_info const *info, unsigned len)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´KubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj7h²hh³j7h´KubjÒ)�”}”(hŒi2c_register_board_info”h]”jØ)�”}”(hŒi2c_register_board_info”h]”hŒi2c_register_board_info”…”�”}”(hj*7h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj&7ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj7h²hh³j7h´Kubjó)�”}”(hŒ=(int busnum, struct i2c_board_info const *info, unsigned len)”h]”(jù)�”}”(hŒ int busnum”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjF7h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjB7ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT7h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjB7ubjØ)�”}”(hŒbusnum”h]”hŒbusnum”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjB7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj>7ubjù)�”}”(hŒ!struct i2c_board_info const *info”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj{7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjw7ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ7h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjw7ubh)�”}”(hhh]”jØ)�”}”(hŒi2c_board_info”h]”hŒi2c_board_info”…”�”}”(hj™7h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj–7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j›7Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj,7sbŒc.i2c_register_board_info”†”asbuh1hhjw7ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹7h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjw7ubjÿ)�”}”(hjh]”hŒconst”…”�”}”(hjÇ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjw7ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ7h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjw7ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjâ7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjw7ubjØ)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjï7h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjw7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj>7ubjù)�”}”(hŒ unsigned len”h]”(j¯)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj8ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj8ubjØ)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj$8h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj>7ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj7h²hh³j7h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj7h²hh³j7h´Kubah}”(h]”jü6ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j7h´Khjþ6h²hubj*)�”}”(hhh]”hà)�”}”(hŒstatically declare I2C devices”h]”hŒstatically declare I2C devices”…”�”}”(hjN8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´KhjK8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjþ6h²hh³j7h´Kubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjf8jLjf8jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXF**Parameters** ``int busnum`` identifies the bus to which these devices belong ``struct i2c_board_info const *info`` vector of i2c device descriptors ``unsigned len`` how many descriptors in the vector; may be zero to reserve the specified bus number. **Description** Systems using the Linux I2C driver stack can declare tables of board info while they initialize. This should be done in board-specific init code near arch_initcall() time, or equivalent, before any I2C adapter driver is registered. For example, mainboard init code could define several devices, as could the init code for each daughtercard in a board stack. The I2C devices will be created later, after the adapter for the relevant bus has been registered. After that moment, standard driver model tools are used to bind "new style" I2C drivers to the devices. The bus number for any device declared using this routine is not available for dynamic allocation. The board info passed can safely be __initdata, but be careful of embedded pointers (for platform_data, functions, etc) since that won't be copied.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjp8h]”hŒ Parameters”…”�”}”(hjr8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjn8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K"hjj8ubjq)�”}”(hhh]”(jv)�”}”(hŒ@``int busnum`` identifies the bus to which these devices belong ”h]”(j|)�”}”(hŒ``int busnum``”h]”j)�”}”(hj�8h]”hŒ int busnum”…”�”}”(hj‘8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´Khj‰8ubj–)�”}”(hhh]”hà)�”}”(hŒ0identifies the bus to which these devices belong”h]”hŒ0identifies the bus to which these devices belong”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j¤8h´Khj¥8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj‰8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¤8h´Khj†8ubjv)�”}”(hŒG``struct i2c_board_info const *info`` vector of i2c device descriptors ”h]”(j|)�”}”(hŒ%``struct i2c_board_info const *info``”h]”j)�”}”(hjÈ8h]”hŒ!struct i2c_board_info const *info”…”�”}”(hjÊ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K hjÂ8ubj–)�”}”(hhh]”hà)�”}”(hŒ vector of i2c device descriptors”h]”hŒ vector of i2c device descriptors”…”�”}”(hjá8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÝ8h´K hjÞ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÂ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÝ8h´K hj†8ubjv)�”}”(hŒf``unsigned len`` how many descriptors in the vector; may be zero to reserve the specified bus number. ”h]”(j|)�”}”(hŒ``unsigned len``”h]”j)�”}”(hj9h]”hŒ unsigned len”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K"hjû8ubj–)�”}”(hhh]”hà)�”}”(hŒThow many descriptors in the vector; may be zero to reserve the specified bus number.”h]”hŒThow many descriptors in the vector; may be zero to reserve the specified bus number.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K!hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjû8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j9h´K"hj†8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjj8ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj=9h]”hŒ Description”…”�”}”(hj?9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj;9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K$hjj8ubhà)�”}”(hXgSystems using the Linux I2C driver stack can declare tables of board info while they initialize. This should be done in board-specific init code near arch_initcall() time, or equivalent, before any I2C adapter driver is registered. For example, mainboard init code could define several devices, as could the init code for each daughtercard in a board stack.”h]”hXgSystems using the Linux I2C driver stack can declare tables of board info while they initialize. This should be done in board-specific init code near arch_initcall() time, or equivalent, before any I2C adapter driver is registered. For example, mainboard init code could define several devices, as could the init code for each daughtercard in a board stack.”…”�”}”(hjS9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K#hjj8ubhà)�”}”(hX/The I2C devices will be created later, after the adapter for the relevant bus has been registered. After that moment, standard driver model tools are used to bind "new style" I2C drivers to the devices. The bus number for any device declared using this routine is not available for dynamic allocation.”h]”hX3The I2C devices will be created later, after the adapter for the relevant bus has been registered. After that moment, standard driver model tools are used to bind “new styleâ€� I2C drivers to the devices. The bus number for any device declared using this routine is not available for dynamic allocation.”…”�”}”(hjb9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K)hjj8ubhà)�”}”(hŒ“The board info passed can safely be __initdata, but be careful of embedded pointers (for platform_data, functions, etc) since that won't be copied.”h]”hŒ•The board info passed can safely be __initdata, but be careful of embedded pointers (for platform_data, functions, etc) since that won’t be copied.”…”�”}”(hjq9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:41: ./drivers/i2c/i2c-boardinfo.c”h´K/hjj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_verify_client (C function)”Œc.i2c_verify_client”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ:struct i2c_client * i2c_verify_client (struct device *dev)”h]”j©)�”}”(hŒ8struct i2c_client *i2c_verify_client(struct device *dev)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjœ9h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÎubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®9h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjœ9h²hh³j­9h´MÎubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj¿9h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¼9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÁ9Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_verify_client”sbŒc.i2c_verify_client”†”asbuh1hhjœ9h²hh³j­9h´MÎubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà9h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjœ9h²hh³j­9h´MÎubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjî9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjœ9h²hh³j­9h´MÎubjÒ)�”}”(hŒi2c_verify_client”h]”jØ)�”}”(hjÝ9h]”hŒi2c_verify_client”…”�”}”(hjÿ9h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjû9ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjœ9h²hh³j­9h´MÎubjó)�”}”(hŒ(struct device *dev)”h]”jù)�”}”(hŒstruct device *dev”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj:ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj':h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj:ubh)�”}”(hhh]”jØ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj8:h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj5:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j::Œmodname”NŒ classname”NjVjY)�”}”j\]”jÛ9Œc.i2c_verify_client”†”asbuh1hhj:ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV:h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj:ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjd:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj:ubjØ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjq:h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj:ubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjœ9h²hh³j­9h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj˜9h²hh³j­9h´MÎubah}”(h]”j“9ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j­9h´MÎhj•9h²hubj*)�”}”(hhh]”hà)�”}”(hŒ'return parameter as i2c_client, or NULL”h]”hŒ'return parameter as i2c_client, or NULL”…”�”}”(hj›:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÎhj˜:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj•9h²hh³j­9h´MÎubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj³:jLj³:jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXt**Parameters** ``struct device *dev`` device, probably from some driver model iterator **Description** When traversing the driver model tree, perhaps using driver model iterators like **device_for_each_child\(\)**, you can't assume very much about the nodes you find. Use this function to avoid oopses caused by wrongly treating some non-I2C device as an i2c_client.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj½:h]”hŒ Parameters”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj»:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÒhj·:ubjq)�”}”(hhh]”jv)�”}”(hŒH``struct device *dev`` device, probably from some driver model iterator ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÏhjÖ:ubj–)�”}”(hhh]”hà)�”}”(hŒ0device, probably from some driver model iterator”h]”hŒ0device, probably from some driver model iterator”…”�”}”(hjõ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jñ:h´MÏhjò:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÖ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jñ:h´MÏhjÓ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj·:ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj;h]”hŒ Description”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÑhj·:ubhà)�”}”(hXWhen traversing the driver model tree, perhaps using driver model iterators like **device_for_each_child\(\)**, you can't assume very much about the nodes you find. Use this function to avoid oopses caused by wrongly treating some non-I2C device as an i2c_client.”h]”(hŒQWhen traversing the driver model tree, perhaps using driver model iterators like ”…”�”}”(hj-;h²hh³Nh´Nubj[)�”}”(hŒ**device_for_each_child\(\)**”h]”hŒdevice_for_each_child()”…”�”}”(hj5;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj-;ubhŒœ, you can’t assume very much about the nodes you find. Use this function to avoid oopses caused by wrongly treating some non-I2C device as an i2c_client.”…”�”}”(hj-;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÐhj·:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ"i2c_new_client_device (C function)”Œc.i2c_new_client_device”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒgstruct i2c_client * i2c_new_client_device (struct i2c_adapter *adap, struct i2c_board_info const *info)”h]”j©)�”}”(hŒestruct i2c_client *i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjn;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjj;h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M±ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|;h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjj;h²hh³j{;h´M±ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjŠ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j�;Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_new_client_device”sbŒc.i2c_new_client_device”†”asbuh1hhjj;h²hh³j{;h´M±ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®;h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjj;h²hh³j{;h´M±ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj¼;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjj;h²hh³j{;h´M±ubjÒ)�”}”(hŒi2c_new_client_device”h]”jØ)�”}”(hj«;h]”hŒi2c_new_client_device”…”�”}”(hjÍ;h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÉ;ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjj;h²hh³j{;h´M±ubjó)�”}”(hŒ=(struct i2c_adapter *adap, struct i2c_board_info const *info)”h]”(jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjè;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjä;ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ;h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjä;ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j<Œmodname”NŒ classname”NjVjY)�”}”j\]”j©;Œc.i2c_new_client_device”†”asbuh1hhjä;ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$<h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjä;ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj2<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjä;ubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hj?<h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjä;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjà;ubjù)�”}”(hŒ!struct i2c_board_info const *info”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjX<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjT<ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje<h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjT<ubh)�”}”(hhh]”jØ)�”}”(hŒi2c_board_info”h]”hŒi2c_board_info”…”�”}”(hjv<h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjs<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jx<Œmodname”NŒ classname”NjVjY)�”}”j\]”j©;Œc.i2c_new_client_device”†”asbuh1hhjT<ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”<h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjT<ubjÿ)�”}”(hjh]”hŒconst”…”�”}”(hj¢<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjT<ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯<h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjT<ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj½<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjT<ubjØ)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjÊ<h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjT<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjà;ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjj;h²hh³j{;h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjf;h²hh³j{;h´M±ubah}”(h]”ja;ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j{;h´M±hjc;h²hubj*)�”}”(hhh]”hà)�”}”(hŒinstantiate an i2c device”h]”hŒinstantiate an i2c device”…”�”}”(hjô<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M±hjñ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjc;h²hh³j{;h´M±ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj =jLj =jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXÞ**Parameters** ``struct i2c_adapter *adap`` the adapter managing the device ``struct i2c_board_info const *info`` describes one I2C device; bus_num is ignored **Context** can sleep **Description** Create an i2c device. Binding is handled through driver model probe()/remove() methods. A driver may be bound to this device when we return from this function, or any later moment (e.g. maybe hotplugging will load the driver module). This call is not appropriate for use by mainboard initialization logic, which usually runs during an arch_initcall() long before any i2c_adapter could exist. This returns the new i2c client, which may be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj=h]”hŒ Parameters”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mµhj=ubjq)�”}”(hhh]”(jv)�”}”(hŒ=``struct i2c_adapter *adap`` the adapter managing the device ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hj5=h]”hŒstruct i2c_adapter *adap”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M²hj/=ubj–)�”}”(hhh]”hà)�”}”(hŒthe adapter managing the device”h]”hŒthe adapter managing the device”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jJ=h´M²hjK=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj/=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jJ=h´M²hj,=ubjv)�”}”(hŒS``struct i2c_board_info const *info`` describes one I2C device; bus_num is ignored ”h]”(j|)�”}”(hŒ%``struct i2c_board_info const *info``”h]”j)�”}”(hjn=h]”hŒ!struct i2c_board_info const *info”…”�”}”(hjp=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M³hjh=ubj–)�”}”(hhh]”hà)�”}”(hŒ,describes one I2C device; bus_num is ignored”h]”hŒ,describes one I2C device; bus_num is ignored”…”�”}”(hj‡=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jƒ=h´M³hj„=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjh=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jƒ=h´M³hj,=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj=ubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hj©=h]”hŒContext”…”�”}”(hj«=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj§=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mµhj=ubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj¿=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M´hj=ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjÐ=h]”hŒ Description”…”�”}”(hjÒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÎ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¶hj=ubhà)�”}”(hX‰Create an i2c device. Binding is handled through driver model probe()/remove() methods. A driver may be bound to this device when we return from this function, or any later moment (e.g. maybe hotplugging will load the driver module). This call is not appropriate for use by mainboard initialization logic, which usually runs during an arch_initcall() long before any i2c_adapter could exist.”h]”hX‰Create an i2c device. Binding is handled through driver model probe()/remove() methods. A driver may be bound to this device when we return from this function, or any later moment (e.g. maybe hotplugging will load the driver module). This call is not appropriate for use by mainboard initialization logic, which usually runs during an arch_initcall() long before any i2c_adapter could exist.”…”�”}”(hjæ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mµhj=ubhà)�”}”(hŒ„This returns the new i2c client, which may be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”h]”hŒ„This returns the new i2c client, which may be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”…”�”}”(hjõ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¼hj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ"i2c_unregister_device (C function)”Œc.i2c_unregister_device”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ6void i2c_unregister_device (struct i2c_client *client)”h]”j©)�”}”(hŒ5void i2c_unregister_device(struct i2c_client *client)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$>h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj >h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3>h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj >h²hh³j2>h´MubjÒ)�”}”(hŒi2c_unregister_device”h]”jØ)�”}”(hŒi2c_unregister_device”h]”hŒi2c_unregister_device”…”�”}”(hjE>h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjA>ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj >h²hh³j2>h´Mubjó)�”}”(hŒ(struct i2c_client *client)”h]”jù)�”}”(hŒstruct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj]>ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn>h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj]>ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj|>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j�>Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjG>sbŒc.i2c_unregister_device”†”asbuh1hhj]>ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ>h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj]>ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj­>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj]>ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjº>h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj]>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjY>ubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj >h²hh³j2>h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj>h²hh³j2>h´Mubah}”(h]”j>ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j2>h´Mhj>h²hubj*)�”}”(hhh]”hà)�”}”(hŒ$reverse effect of i2c_new_*_device()”h]”hŒ$reverse effect of i2c_new_*_device()”…”�”}”(hjä>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhjá>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj>h²hh³j2>h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjü>jLjü>jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒn**Parameters** ``struct i2c_client *client`` value returned from i2c_new_*_device() **Context** can sleep”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj?h]”hŒ Parameters”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhj?ubjq)�”}”(hhh]”jv)�”}”(hŒE``struct i2c_client *client`` value returned from i2c_new_*_device() ”h]”(j|)�”}”(hŒ``struct i2c_client *client``”h]”j)�”}”(hj%?h]”hŒstruct i2c_client *client”…”�”}”(hj'?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhj?ubj–)�”}”(hhh]”hà)�”}”(hŒ&value returned from i2c_new_*_device()”h]”hŒ&value returned from i2c_new_*_device()”…”�”}”(hj>?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j:?h´Mhj;?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j:?h´Mhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj?ubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hj`?h]”hŒContext”…”�”}”(hjb?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj^?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhj?ubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhj?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&i2c_find_device_by_fwnode (C function)”Œc.i2c_find_device_by_fwnode”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒLstruct i2c_client * i2c_find_device_by_fwnode (struct fwnode_handle *fwnode)”h]”j©)�”}”(hŒJstruct i2c_client *i2c_find_device_by_fwnode(struct fwnode_handle *fwnode)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¥?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¡?h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M9ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³?h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¡?h²hh³j²?h´M9ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjÄ?h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÁ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÆ?Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_find_device_by_fwnode”sbŒc.i2c_find_device_by_fwnode”†”asbuh1hhj¡?h²hh³j²?h´M9ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå?h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¡?h²hh³j²?h´M9ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjó?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¡?h²hh³j²?h´M9ubjÒ)�”}”(hŒi2c_find_device_by_fwnode”h]”jØ)�”}”(hjâ?h]”hŒi2c_find_device_by_fwnode”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj@ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj¡?h²hh³j²?h´M9ubjó)�”}”(hŒ(struct fwnode_handle *fwnode)”h]”jù)�”}”(hŒstruct fwnode_handle *fwnode”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj@ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,@h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj@ubh)�”}”(hhh]”jØ)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj=@h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj:@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j?@Œmodname”NŒ classname”NjVjY)�”}”j\]”jà?Œc.i2c_find_device_by_fwnode”†”asbuh1hhj@ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[@h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj@ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hji@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj@ubjØ)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjv@h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj@ubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj¡?h²hh³j²?h´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj�?h²hh³j²?h´M9ubah}”(h]”j˜?ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j²?h´M9hjš?h²hubj*)�”}”(hhh]”hà)�”}”(hŒ!find an i2c_client for the fwnode”h]”hŒ!find an i2c_client for the fwnode”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M9hj�@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjš?h²hh³j²?h´M9ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj¸@jLj¸@jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXµ**Parameters** ``struct fwnode_handle *fwnode`` :c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_client ` **Description** Look up and return the :c:type:`struct i2c_client ` corresponding to the **fwnode**. If no client can be found, or **fwnode** is NULL, this returns NULL. The user must call put_device(:c:type:`client->dev `) once done with the i2c client.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjÂ@h]”hŒ Parameters”…”�”}”(hjÄ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÀ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M=hj¼@ubjq)�”}”(hhh]”jv)�”}”(hŒŽ``struct fwnode_handle *fwnode`` :c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_client ` ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M:hjÛ@ubj–)�”}”(hhh]”hà)�”}”(hŒl:c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_client `”h]”(h)�”}”(hŒ.:c:type:`struct fwnode_handle `”h]”j)�”}”(hjAh]”hŒstruct fwnode_handle”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjþ@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ fwnode_handle”uh1hh³jö@h´M:hjú@ubhŒ corresponding to the ”…”�”}”(hjú@h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct i2c_client `”h]”j)�”}”(hj#Ah]”hŒstruct i2c_client”…”�”}”(hj%Ah²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hj!Aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ i2c_client”uh1hh³jö@h´M:hjú@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jö@h´M:hj÷@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÛ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jö@h´M:hjØ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj¼@ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjZAh]”hŒ Description”…”�”}”(hj\Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjXAubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M<hj¼@ubhà)�”}”(hŒ¥Look up and return the :c:type:`struct i2c_client ` corresponding to the **fwnode**. If no client can be found, or **fwnode** is NULL, this returns NULL.”h]”(hŒLook up and return the ”…”�”}”(hjpAh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct i2c_client `”h]”j)�”}”(hjzAh]”hŒstruct i2c_client”…”�”}”(hj|Ah²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjxAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ i2c_client”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M;hjpAubhŒ corresponding to the ”…”�”}”(hjpAh²hh³Nh´Nubj[)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hjœAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjpAubhŒ . If no client can be found, or ”…”�”}”(hjpAh²hh³Nh´Nubj[)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hj®Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjpAubhŒ is NULL, this returns NULL.”…”�”}”(hjpAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j—Ah´M;hj¼@ubhà)�”}”(hŒ\The user must call put_device(:c:type:`client->dev `) once done with the i2c client.”h]”(hŒThe user must call put_device(”…”�”}”(hjÆAh²hh³Nh´Nubh)�”}”(hŒ:c:type:`client->dev `”h]”j)�”}”(hjÐAh]”hŒ client->dev”…”�”}”(hjÒAh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjÎAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œclient”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M>hjÆAubhŒ ) once done with the i2c client.”…”�”}”(hjÆAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jíAh´M>hj¼@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ!i2c_new_dummy_device (C function)”Œc.i2c_new_dummy_device”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒSstruct i2c_client * i2c_new_dummy_device (struct i2c_adapter *adapter, u16 address)”h]”j©)�”}”(hŒQstruct i2c_client *i2c_new_dummy_device(struct i2c_adapter *adapter, u16 address)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjBh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Bh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBh²hh³j%Bh´Mhubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj7Bh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj4Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j9BŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_new_dummy_device”sbŒc.i2c_new_dummy_device”†”asbuh1hhjBh²hh³j%Bh´MhubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXBh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBh²hh³j%Bh´Mhubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjfBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjBh²hh³j%Bh´MhubjÒ)�”}”(hŒi2c_new_dummy_device”h]”jØ)�”}”(hjUBh]”hŒi2c_new_dummy_device”…”�”}”(hjwBh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjsBubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjBh²hh³j%Bh´Mhubjó)�”}”(hŒ*(struct i2c_adapter *adapter, u16 address)”h]”(jù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj’Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjŽBubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸBh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjŽBubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj°Bh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj­Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j²BŒmodname”NŒ classname”NjVjY)�”}”j\]”jSBŒc.i2c_new_dummy_device”†”asbuh1hhjŽBubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎBh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjŽBubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÜBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjŽBubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hjéBh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjŽBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjŠBubjù)�”}”(hŒ u16 address”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jCŒmodname”NŒ classname”NjVjY)�”}”j\]”jSBŒc.i2c_new_dummy_device”†”asbuh1hhjþBubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Ch²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjþBubjØ)�”}”(hŒaddress”h]”hŒaddress”…”�”}”(hj1Ch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjþBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjŠBubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjBh²hh³j%Bh´Mhubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjBh²hh³j%Bh´Mhubah}”(h]”j Bah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j%Bh´Mhhj Bh²hubj*)�”}”(hhh]”hà)�”}”(hŒ/return a new i2c device bound to a dummy driver”h]”hŒ/return a new i2c device bound to a dummy driver”…”�”}”(hj[Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhhjXCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj Bh²hh³j%Bh´Mhubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjsCjLjsCjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXç**Parameters** ``struct i2c_adapter *adapter`` the adapter managing the device ``u16 address`` seven bit address to be used **Context** can sleep **Description** This returns an I2C client bound to the "dummy" driver, intended for use with devices that consume multiple addresses. Examples of such chips include various EEPROMS (like 24c04 and 24c08 models). These dummy devices have two main uses. First, most I2C and SMBus calls except i2c_transfer() need a client handle; the dummy will be that handle. And second, this prevents the specified address from being bound to a different driver. This returns the new i2c client, which should be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj}Ch]”hŒ Parameters”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj{Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MlhjwCubjq)�”}”(hhh]”(jv)�”}”(hŒ@``struct i2c_adapter *adapter`` the adapter managing the device ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hjœCh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjžCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjšCubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mihj–Cubj–)�”}”(hhh]”hà)�”}”(hŒthe adapter managing the device”h]”hŒthe adapter managing the device”…”�”}”(hjµCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j±Ch´Mihj²Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj–Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j±Ch´Mihj“Cubjv)�”}”(hŒ-``u16 address`` seven bit address to be used ”h]”(j|)�”}”(hŒ``u16 address``”h]”j)�”}”(hjÕCh]”hŒ u16 address”…”�”}”(hj×Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓCubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MjhjÏCubj–)�”}”(hhh]”hà)�”}”(hŒseven bit address to be used”h]”hŒseven bit address to be used”…”�”}”(hjîCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jêCh´MjhjëCubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÏCubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jêCh´Mjhj“Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjwCubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjDh]”hŒContext”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MlhjwCubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj&Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MkhjwCubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj7Dh]”hŒ Description”…”�”}”(hj9Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj5Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MmhjwCubhà)�”}”(hŒÅThis returns an I2C client bound to the "dummy" driver, intended for use with devices that consume multiple addresses. Examples of such chips include various EEPROMS (like 24c04 and 24c08 models).”h]”hŒÉThis returns an I2C client bound to the “dummyâ€� driver, intended for use with devices that consume multiple addresses. Examples of such chips include various EEPROMS (like 24c04 and 24c08 models).”…”�”}”(hjMDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MlhjwCubhà)�”}”(hŒëThese dummy devices have two main uses. First, most I2C and SMBus calls except i2c_transfer() need a client handle; the dummy will be that handle. And second, this prevents the specified address from being bound to a different driver.”h]”hŒëThese dummy devices have two main uses. First, most I2C and SMBus calls except i2c_transfer() need a client handle; the dummy will be that handle. And second, this prevents the specified address from being bound to a different driver.”…”�”}”(hj\Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MphjwCubhà)�”}”(hŒ‡This returns the new i2c client, which should be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”h]”hŒ‡This returns the new i2c client, which should be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”…”�”}”(hjkDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MuhjwCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&devm_i2c_new_dummy_device (C function)”Œc.devm_i2c_new_dummy_device”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒlstruct i2c_client * devm_i2c_new_dummy_device (struct device *dev, struct i2c_adapter *adapter, u16 address)”h]”j©)�”}”(hŒjstruct i2c_client *devm_i2c_new_dummy_device(struct device *dev, struct i2c_adapter *adapter, u16 address)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjšDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj–Dh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‰ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Dh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj–Dh²hh³j§Dh´M‰ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj¹Dh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¶Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j»DŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒdevm_i2c_new_dummy_device”sbŒc.devm_i2c_new_dummy_device”†”asbuh1hhj–Dh²hh³j§Dh´M‰ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚDh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj–Dh²hh³j§Dh´M‰ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjèDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj–Dh²hh³j§Dh´M‰ubjÒ)�”}”(hŒdevm_i2c_new_dummy_device”h]”jØ)�”}”(hj×Dh]”hŒdevm_i2c_new_dummy_device”…”�”}”(hjùDh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjõDubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj–Dh²hh³j§Dh´M‰ubjó)�”}”(hŒ>(struct device *dev, struct i2c_adapter *adapter, u16 address)”h]”(jù)�”}”(hŒstruct device *dev”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjEubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Eh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjEubh)�”}”(hhh]”jØ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj2Eh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj/Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j4EŒmodname”NŒ classname”NjVjY)�”}”j\]”jÕDŒc.devm_i2c_new_dummy_device”†”asbuh1hhjEubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPEh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjEubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj^Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjEubjØ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjkEh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj Eubjù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj„Eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj€EubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Eh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj€Eubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj¢Eh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjŸEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j¤EŒmodname”NŒ classname”NjVjY)�”}”j\]”jÕDŒc.devm_i2c_new_dummy_device”†”asbuh1hhj€EubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀEh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj€Eubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÎEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj€EubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hjÛEh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj€Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj Eubjù)�”}”(hŒ u16 address”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj÷Eh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjôEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jùEŒmodname”NŒ classname”NjVjY)�”}”j\]”jÕDŒc.devm_i2c_new_dummy_device”†”asbuh1hhjðEubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjðEubjØ)�”}”(hŒaddress”h]”hŒaddress”…”�”}”(hj#Fh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjðEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj Eubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj–Dh²hh³j§Dh´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj’Dh²hh³j§Dh´M‰ubah}”(h]”j�Dah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j§Dh´M‰hj�Dh²hubj*)�”}”(hhh]”hà)�”}”(hŒ/return a new i2c device bound to a dummy driver”h]”hŒ/return a new i2c device bound to a dummy driver”…”�”}”(hjMFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‰hjJFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj�Dh²hh³j§Dh´M‰ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjeFjLjeFjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXn**Parameters** ``struct device *dev`` device the managed resource is bound to ``struct i2c_adapter *adapter`` the adapter managing the device ``u16 address`` seven bit address to be used **Context** can sleep **Description** This is the device-managed version of **i2c_new_dummy_device**. It returns the new i2c client or an ERR_PTR in case of an error.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjoFh]”hŒ Parameters”…”�”}”(hjqFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjmFubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M�hjiFubjq)�”}”(hhh]”(jv)�”}”(hŒ?``struct device *dev`` device the managed resource is bound to ”h]”(j|)�”}”(hŒ``struct device *dev``”h]”j)�”}”(hjŽFh]”hŒstruct device *dev”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒFubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŠhjˆFubj–)�”}”(hhh]”hà)�”}”(hŒ'device the managed resource is bound to”h]”hŒ'device the managed resource is bound to”…”�”}”(hj§Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j£Fh´MŠhj¤Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjˆFubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j£Fh´MŠhj…Fubjv)�”}”(hŒ@``struct i2c_adapter *adapter`` the adapter managing the device ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hjÇFh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjÉFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅFubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‹hjÁFubj–)�”}”(hhh]”hà)�”}”(hŒthe adapter managing the device”h]”hŒthe adapter managing the device”…”�”}”(hjàFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÜFh´M‹hjÝFubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÁFubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÜFh´M‹hj…Fubjv)�”}”(hŒ-``u16 address`` seven bit address to be used ”h]”(j|)�”}”(hŒ``u16 address``”h]”j)�”}”(hjGh]”hŒ u16 address”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþFubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŒhjúFubj–)�”}”(hhh]”hà)�”}”(hŒseven bit address to be used”h]”hŒseven bit address to be used”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jGh´MŒhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjúFubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jGh´MŒhj…Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjiFubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hj;Gh]”hŒContext”…”�”}”(hj=Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj9Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŽhjiFubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hjQGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M�hjiFubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjbGh]”hŒ Description”…”�”}”(hjdGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj`Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M�hjiFubhà)�”}”(hŒ€This is the device-managed version of **i2c_new_dummy_device**. It returns the new i2c client or an ERR_PTR in case of an error.”h]”(hŒ&This is the device-managed version of ”…”�”}”(hjxGh²hh³Nh´Nubj[)�”}”(hŒ**i2c_new_dummy_device**”h]”hŒi2c_new_dummy_device”…”�”}”(hj€Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjxGubhŒB. It returns the new i2c client or an ERR_PTR in case of an error.”…”�”}”(hjxGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŽhjiFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_new_ancillary_device (C function)”Œc.i2c_new_ancillary_device”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒlstruct i2c_client * i2c_new_ancillary_device (struct i2c_client *client, const char *name, u16 default_addr)”h]”j©)�”}”(hŒjstruct i2c_client *i2c_new_ancillary_device(struct i2c_client *client, const char *name, u16 default_addr)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¹Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjµGh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¦ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇGh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjµGh²hh³jÆGh´M¦ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjØGh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÕGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÚGŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_new_ancillary_device”sbŒc.i2c_new_ancillary_device”†”asbuh1hhjµGh²hh³jÆGh´M¦ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùGh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjµGh²hh³jÆGh´M¦ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjµGh²hh³jÆGh´M¦ubjÒ)�”}”(hŒi2c_new_ancillary_device”h]”jØ)�”}”(hjöGh]”hŒi2c_new_ancillary_device”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjHubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjµGh²hh³jÆGh´M¦ubjó)�”}”(hŒ?(struct i2c_client *client, const char *name, u16 default_addr)”h]”(jù)�”}”(hŒstruct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj3Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj/HubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Hh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj/Hubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjQHh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjNHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jSHŒmodname”NŒ classname”NjVjY)�”}”j\]”jôGŒc.i2c_new_ancillary_device”†”asbuh1hhj/HubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoHh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj/Hubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj}Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj/HubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjŠHh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj/Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj+Hubjù)�”}”(hŒconst char *name”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hj£Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjŸHubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Hh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjŸHubj¯)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¾Hh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŸHubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌHh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjŸHubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÚHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjŸHubjØ)�”}”(hŒname”h]”hŒname”…”�”}”(hjçHh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjŸHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj+Hubjù)�”}”(hŒu16 default_addr”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jIŒmodname”NŒ classname”NjVjY)�”}”j\]”jôGŒc.i2c_new_ancillary_device”†”asbuh1hhjüHubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Ih²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjüHubjØ)�”}”(hŒ default_addr”h]”hŒ default_addr”…”�”}”(hj/Ih²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjüHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj+Hubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjµGh²hh³jÆGh´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj±Gh²hh³jÆGh´M¦ubah}”(h]”j¬Gah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jÆGh´M¦hj®Gh²hubj*)�”}”(hhh]”hà)�”}”(hŒQHelper to get the instantiated secondary address and create the associated device”h]”hŒQHelper to get the instantiated secondary address and create the associated device”…”�”}”(hjYIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¦hjVIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj®Gh²hh³jÆGh´M¦ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjqIjLjqIjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXÏ**Parameters** ``struct i2c_client *client`` Handle to the primary client ``const char *name`` Handle to specify which secondary address to get ``u16 default_addr`` Used as a fallback if no secondary address was specified **Context** can sleep **Description** I2C clients can be composed of multiple I2C slaves bound together in a single component. The I2C client driver then binds to the master I2C slave and needs to create I2C dummy clients to communicate with all the other slaves. This function creates and returns an I2C dummy client whose I2C address is retrieved from the platform firmware based on the given slave name. If no address is specified by the firmware default_addr is used. On DT-based platforms the address is retrieved from the "reg" property entry cell whose "reg-names" value matches the slave name. This returns the new i2c client, which should be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj{Ih]”hŒ Parameters”…”�”}”(hj}Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjyIubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MªhjuIubjq)�”}”(hhh]”(jv)�”}”(hŒ;``struct i2c_client *client`` Handle to the primary client ”h]”(j|)�”}”(hŒ``struct i2c_client *client``”h]”j)�”}”(hjšIh]”hŒstruct i2c_client *client”…”�”}”(hjœIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¨hj”Iubj–)�”}”(hhh]”hà)�”}”(hŒHandle to the primary client”h]”hŒHandle to the primary client”…”�”}”(hj³Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j¯Ih´M¨hj°Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj”Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¯Ih´M¨hj‘Iubjv)�”}”(hŒF``const char *name`` Handle to specify which secondary address to get ”h]”(j|)�”}”(hŒ``const char *name``”h]”j)�”}”(hjÓIh]”hŒconst char *name”…”�”}”(hjÕIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑIubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M©hjÍIubj–)�”}”(hhh]”hà)�”}”(hŒ0Handle to specify which secondary address to get”h]”hŒ0Handle to specify which secondary address to get”…”�”•}”(hjìIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jèIh´M©hjéIubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÍIubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jèIh´M©hj‘Iubjv)�”}”(hŒN``u16 default_addr`` Used as a fallback if no secondary address was specified ”h]”(j|)�”}”(hŒ``u16 default_addr``”h]”j)�”}”(hj Jh]”hŒu16 default_addr”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MªhjJubj–)�”}”(hhh]”hà)�”}”(hŒ8Used as a fallback if no secondary address was specified”h]”hŒ8Used as a fallback if no secondary address was specified”…”�”}”(hj%Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j!Jh´Mªhj"Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j!Jh´Mªhj‘Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjuIubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjGJh]”hŒContext”…”�”}”(hjIJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjEJubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¬hjuIubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj]Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M«hjuIubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjnJh]”hŒ Description”…”�”}”(hjpJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjlJubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M­hjuIubhà)�”}”(hŒáI2C clients can be composed of multiple I2C slaves bound together in a single component. The I2C client driver then binds to the master I2C slave and needs to create I2C dummy clients to communicate with all the other slaves.”h]”hŒáI2C clients can be composed of multiple I2C slaves bound together in a single component. The I2C client driver then binds to the master I2C slave and needs to create I2C dummy clients to communicate with all the other slaves.”…”�”}”(hj„Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¬hjuIubhà)�”}”(hŒÏThis function creates and returns an I2C dummy client whose I2C address is retrieved from the platform firmware based on the given slave name. If no address is specified by the firmware default_addr is used.”h]”hŒÏThis function creates and returns an I2C dummy client whose I2C address is retrieved from the platform firmware based on the given slave name. If no address is specified by the firmware default_addr is used.”…”�”}”(hj“Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M°hjuIubhà)�”}”(hŒ�On DT-based platforms the address is retrieved from the "reg" property entry cell whose "reg-names" value matches the slave name.”h]”hŒ‰On DT-based platforms the address is retrieved from the “regâ€� property entry cell whose “reg-namesâ€� value matches the slave name.”…”�”}”(hj¢Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M´hjuIubhà)�”}”(hŒ‡This returns the new i2c client, which should be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”h]”hŒ‡This returns the new i2c client, which should be saved for later use with i2c_unregister_device(); or an ERR_PTR to describe the error.”…”�”}”(hj±Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M·hjuIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_verify_adapter (C function)”Œc.i2c_verify_adapter”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒnr, and the specified adapter became available for clients. Otherwise, a negative errno value is returned.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjÂOh]”hŒ Parameters”…”�”}”(hjÄOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÀOubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‡hj¼Oubjq)�”}”(hhh]”jv)�”}”(hŒ3``struct i2c_adapter *adapter`` the adapter to add ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hjáOh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjãOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjßOubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M„hjÛOubj–)�”}”(hhh]”hà)�”}”(hŒthe adapter to add”h]”hŒthe adapter to add”…”�”}”(hjúOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jöOh´M„hj÷Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÛOubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jöOh´M„hjØOubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj¼Oubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjPh]”hŒContext”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M†hj¼Oubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj2Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M…hj¼Oubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjCPh]”hŒ Description”…”�”}”(hjEPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjAPubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‡hj¼Oubhà)�”}”(hŒüThis routine is used to declare an I2C adapter when its bus number doesn't matter or when its bus number is specified by an dt alias. Examples of bases when the bus number doesn't matter: I2C adapters dynamically added by USB links or PCI plugin cards.”h]”hXThis routine is used to declare an I2C adapter when its bus number doesn’t matter or when its bus number is specified by an dt alias. Examples of bases when the bus number doesn’t matter: I2C adapters dynamically added by USB links or PCI plugin cards.”…”�”}”(hjYPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M†hj¼Oubhà)�”}”(hŒµWhen this returns zero, a new bus number was allocated and stored in adap->nr, and the specified adapter became available for clients. Otherwise, a negative errno value is returned.”h]”hŒµWhen this returns zero, a new bus number was allocated and stored in adap->nr, and the specified adapter became available for clients. Otherwise, a negative errno value is returned.”…”�”}”(hjhPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‹hj¼Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_add_numbered_adapter (C function)”Œc.i2c_add_numbered_adapter”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ7int i2c_add_numbered_adapter (struct i2c_adapter *adap)”h]”j©)�”}”(hŒ6int i2c_add_numbered_adapter(struct i2c_adapter *adap)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj—Ph²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj“Ph²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Ph²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj“Ph²hh³j¥Ph´M ubjÒ)�”}”(hŒi2c_add_numbered_adapter”h]”jØ)�”}”(hŒi2c_add_numbered_adapter”h]”hŒi2c_add_numbered_adapter”…”�”}”(hj¸Ph²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj´Pubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj“Ph²hh³j¥Ph´M ubjó)�”}”(hŒ(struct i2c_adapter *adap)”h]”jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÔPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÐPubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáPh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÐPubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjòPh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjïPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jôPŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjºPsbŒc.i2c_add_numbered_adapter”†”asbuh1hhjÐPubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÐPubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÐPubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hj-Qh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÐPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjÌPubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj“Ph²hh³j¥Ph´M ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj�Ph²hh³j¥Ph´M ubah}”(h]”jŠPah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j¥Ph´M hjŒPh²hubj*)�”}”(hhh]”hà)�”}”(hŒ*declare i2c adapter, use static bus number”h]”hŒ*declare i2c adapter, use static bus number”…”�”}”(hjWQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjTQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjŒPh²hh³j¥Ph´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjoQjLjoQjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX**Parameters** ``struct i2c_adapter *adap`` the adapter to register (with adap->nr initialized) **Context** can sleep **Description** This routine is used to declare an I2C adapter when its bus number matters. For example, use it for I2C adapters from system-on-chip CPUs, or otherwise built in to the system's mainboard, and where i2c_board_info is used to properly configure I2C devices. If the requested bus number is set to -1, then this function will behave identically to i2c_add_adapter, and will dynamically assign a bus number. If no devices have pre-been declared for this bus, then be sure to register the adapter before any dynamically allocated ones. Otherwise the required bus ID may not be available. When this returns zero, the specified adapter became available for clients using the bus number provided in adap->nr. Also, the table of I2C devices pre-declared using i2c_register_board_info() is scanned, and the appropriate driver model device nodes are created. Otherwise, a negative errno value is returned.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjyQh]”hŒ Parameters”…”�”}”(hj{Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjwQubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¤hjsQubjq)�”}”(hhh]”jv)�”}”(hŒQ``struct i2c_adapter *adap`` the adapter to register (with adap->nr initialized) ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hj˜Qh]”hŒstruct i2c_adapter *adap”…”�”}”(hjšQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj–Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¡hj’Qubj–)�”}”(hhh]”hà)�”}”(hŒ3the adapter to register (with adap->nr initialized)”h]”hŒ3the adapter to register (with adap->nr initialized)”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j­Qh´M¡hj®Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj’Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j­Qh´M¡hj�Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjsQubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjÓQh]”hŒContext”…”�”}”(hjÕQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÑQubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M£hjsQubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hjéQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¢hjsQubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjúQh]”hŒ Description”…”�”}”(hjüQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjøQubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¤hjsQubhà)�”}”(hXThis routine is used to declare an I2C adapter when its bus number matters. For example, use it for I2C adapters from system-on-chip CPUs, or otherwise built in to the system's mainboard, and where i2c_board_info is used to properly configure I2C devices.”h]”hXThis routine is used to declare an I2C adapter when its bus number matters. For example, use it for I2C adapters from system-on-chip CPUs, or otherwise built in to the system’s mainboard, and where i2c_board_info is used to properly configure I2C devices.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M£hjsQubhà)�”}”(hŒ’If the requested bus number is set to -1, then this function will behave identically to i2c_add_adapter, and will dynamically assign a bus number.”h]”hŒ’If the requested bus number is set to -1, then this function will behave identically to i2c_add_adapter, and will dynamically assign a bus number.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¨hjsQubhà)�”}”(hŒ³If no devices have pre-been declared for this bus, then be sure to register the adapter before any dynamically allocated ones. Otherwise the required bus ID may not be available.”h]”hŒ³If no devices have pre-been declared for this bus, then be sure to register the adapter before any dynamically allocated ones. Otherwise the required bus ID may not be available.”…”�”}”(hj.Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M«hjsQubhà)�”}”(hX9When this returns zero, the specified adapter became available for clients using the bus number provided in adap->nr. Also, the table of I2C devices pre-declared using i2c_register_board_info() is scanned, and the appropriate driver model device nodes are created. Otherwise, a negative errno value is returned.”h]”hX9When this returns zero, the specified adapter became available for clients using the bus number provided in adap->nr. Also, the table of I2C devices pre-declared using i2c_register_board_info() is scanned, and the appropriate driver model device nodes are created. Otherwise, a negative errno value is returned.”…”�”}”(hj=Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¯hjsQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_del_adapter (C function)”Œc.i2c_del_adapter”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ/void i2c_del_adapter (struct i2c_adapter *adap)”h]”j©)�”}”(hŒ.void i2c_del_adapter(struct i2c_adapter *adap)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjlRh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjhRh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Rh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjhRh²hh³jzRh´MubjÒ)�”}”(hŒi2c_del_adapter”h]”jØ)�”}”(hŒi2c_del_adapter”h]”hŒi2c_del_adapter”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‰Rubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjhRh²hh³jzRh´Mubjó)�”}”(hŒ(struct i2c_adapter *adap)”h]”jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj©Rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¥RubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Rh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¥Rubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjÇRh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÄRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÉRŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj�RsbŒc.i2c_del_adapter”†”asbuh1hhj¥RubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçRh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¥Rubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjõRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¥RubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¥Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj¡Rubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjhRh²hh³jzRh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjdRh²hh³jzRh´Mubah}”(h]”j_Rah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jzRh´MhjaRh²hubj*)�”}”(hhh]”hà)�”}”(hŒunregister I2C adapter”h]”hŒunregister I2C adapter”…”�”}”(hj,Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhj)Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjaRh²hh³jzRh´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjDSjLjDSjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒï**Parameters** ``struct i2c_adapter *adap`` the adapter being unregistered **Context** can sleep **Description** This unregisters an I2C adapter which was previously registered by **i2c_add_adapter** or **i2c_add_numbered_adapter**.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjNSh]”hŒ Parameters”…”�”}”(hjPSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjLSubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjHSubjq)�”}”(hhh]”jv)�”}”(hŒ<``struct i2c_adapter *adap`` the adapter being unregistered ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hjmSh]”hŒstruct i2c_adapter *adap”…”�”}”(hjoSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjkSubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjgSubj–)�”}”(hhh]”hà)�”}”(hŒthe adapter being unregistered”h]”hŒthe adapter being unregistered”…”�”}”(hj†Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‚Sh´MhjƒSubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjgSubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‚Sh´MhjdSubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjHSubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hj¨Sh]”hŒContext”…”�”}”(hjªSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¦Subah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjHSubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj¾Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjHSubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjÏSh]”hŒ Description”…”�”}”(hjÑSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÍSubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjHSubhà)�”}”(hŒwThis unregisters an I2C adapter which was previously registered by **i2c_add_adapter** or **i2c_add_numbered_adapter**.”h]”(hŒCThis unregisters an I2C adapter which was previously registered by ”…”�”}”(hjåSh²hh³Nh´Nubj[)�”}”(hŒ**i2c_add_adapter**”h]”hŒi2c_add_adapter”…”�”}”(hjíSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjåSubhŒ or ”…”�”}”(hjåSh²hh³Nh´Nubj[)�”}”(hŒ**i2c_add_numbered_adapter**”h]”hŒi2c_add_numbered_adapter”…”�”}”(hjÿSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjåSubhŒ.”…”�”}”(hjåSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjHSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ!devm_i2c_add_adapter (C function)”Œc.devm_i2c_add_adapter”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒJint devm_i2c_add_adapter (struct device *dev, struct i2c_adapter *adapter)”h]”j©)�”}”(hŒIint devm_i2c_add_adapter(struct device *dev, struct i2c_adapter *adapter)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj8Th²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4Th²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MJubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGTh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj4Th²hh³jFTh´MJubjÒ)�”}”(hŒdevm_i2c_add_adapter”h]”jØ)�”}”(hŒdevm_i2c_add_adapter”h]”hŒdevm_i2c_add_adapter”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjUTubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj4Th²hh³jFTh´MJubjó)�”}”(hŒ1(struct device *dev, struct i2c_adapter *adapter)”h]”(jù)�”}”(hŒstruct device *dev”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjuTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjqTubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Th²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjqTubh)�”}”(hhh]”jØ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj“Th²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j•TŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj[TsbŒc.devm_i2c_add_adapter”†”asbuh1hhjqTubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Th²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjqTubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÁTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjqTubjØ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÎTh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjqTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjmTubjù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjçTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjãTubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôTh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjãTubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jUŒmodname”NŒ classname”NjVjY)�”}”j\]”j¯TŒc.devm_i2c_add_adapter”†”asbuh1hhjãTubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjãTubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj1Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjãTubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj>Uh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjãTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjmTubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj4Th²hh³jFTh´MJubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj0Th²hh³jFTh´MJubah}”(h]”j+Tah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jFTh´MJhj-Th²hubj*)�”}”(hhh]”hà)�”}”(hŒ+device-managed variant of i2c_add_adapter()”h]”hŒ+device-managed variant of i2c_add_adapter()”…”�”}”(hjhUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MJhjeUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj-Th²hh³jFTh´MJubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj€UjLj€UjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX,**Parameters** ``struct device *dev`` managing device for adding this I2C adapter ``struct i2c_adapter *adapter`` the adapter to add **Context** can sleep **Description** Add adapter with dynamic bus number, same with i2c_add_adapter() but the adapter will be auto deleted on driver detach.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjŠUh]”hŒ Parameters”…”�”}”(hjŒUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjˆUubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MNhj„Uubjq)�”}”(hhh]”(jv)�”}”(hŒC``struct device *dev`` managing device for adding this I2C adapter ”h]”(j|)�”}”(hŒ``struct device *dev``”h]”j)�”}”(hj©Uh]”hŒstruct device *dev”…”�”}”(hj«Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MKhj£Uubj–)�”}”(hhh]”hà)�”}”(hŒ+managing device for adding this I2C adapter”h]”hŒ+managing device for adding this I2C adapter”…”�”}”(hjÂUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j¾Uh´MKhj¿Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj£Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¾Uh´MKhj Uubjv)�”}”(hŒ3``struct i2c_adapter *adapter`` the adapter to add ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hjâUh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjäUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjàUubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MLhjÜUubj–)�”}”(hhh]”hà)�”}”(hŒthe adapter to add”h]”hŒthe adapter to add”…”�”}”(hjûUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j÷Uh´MLhjøUubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÜUubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j÷Uh´MLhj Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj„Uubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjVh]”hŒContext”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MNhj„Uubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj3Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MMhj„Uubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjDVh]”hŒ Description”…”�”}”(hjFVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjBVubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MOhj„Uubhà)�”}”(hŒwAdd adapter with dynamic bus number, same with i2c_add_adapter() but the adapter will be auto deleted on driver detach.”h]”hŒwAdd adapter with dynamic bus number, same with i2c_add_adapter() but the adapter will be auto deleted on driver detach.”…”�”}”(hjZVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MNhj„Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ'i2c_find_adapter_by_fwnode (C function)”Œc.i2c_find_adapter_by_fwnode”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒNstruct i2c_adapter * i2c_find_adapter_by_fwnode (struct fwnode_handle *fwnode)”h]”j©)�”}”(hŒLstruct i2c_adapter *i2c_find_adapter_by_fwnode(struct fwnode_handle *fwnode)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‰Vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj…Vh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MjubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Vh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…Vh²hh³j–Vh´Mjubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj¨Vh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¥Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jªVŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_find_adapter_by_fwnode”sbŒc.i2c_find_adapter_by_fwnode”†”asbuh1hhj…Vh²hh³j–Vh´MjubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉVh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…Vh²hh³j–Vh´Mjubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj×Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj…Vh²hh³j–Vh´MjubjÒ)�”}”(hŒi2c_find_adapter_by_fwnode”h]”jØ)�”}”(hjÆVh]”hŒi2c_find_adapter_by_fwnode”…”�”}”(hjèVh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjäVubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj…Vh²hh³j–Vh´Mjubjó)�”}”(hŒ(struct fwnode_handle *fwnode)”h]”jù)�”}”(hŒstruct fwnode_handle *fwnode”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÿVubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÿVubh)�”}”(hhh]”jØ)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj!Wh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j#WŒmodname”NŒ classname”NjVjY)�”}”j\]”jÄVŒc.i2c_find_adapter_by_fwnode”†”asbuh1hhjÿVubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Wh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÿVubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjMWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÿVubjØ)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjZWh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÿVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjûVubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj…Vh²hh³j–Vh´Mjubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj�Vh²hh³j–Vh´Mjubah}”(h]”j|Vah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j–Vh´Mjhj~Vh²hubj*)�”}”(hhh]”hà)�”}”(hŒ"find an i2c_adapter for the fwnode”h]”hŒ"find an i2c_adapter for the fwnode”…”�”}”(hj„Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mjhj�Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj~Vh²hh³j–Vh´Mjubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjœWjLjœWjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX½**Parameters** ``struct fwnode_handle *fwnode`` :c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_adapter ` **Description** Look up and return the :c:type:`struct i2c_adapter ` corresponding to the **fwnode**. If no adapter can be found, or **fwnode** is NULL, this returns NULL. The user must call put_device(:c:type:`adapter->dev `) once done with the i2c adapter.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj¦Wh]”hŒ Parameters”…”�”}”(hj¨Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¤Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mnhj Wubjq)�”}”(hhh]”jv)�”}”(hŒ�``struct fwnode_handle *fwnode`` :c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_adapter ` ”h]”(j|)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”j)�”}”(hjÅWh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hjÇWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÃWubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mkhj¿Wubj–)�”}”(hhh]”hà)�”}”(hŒn:c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_adapter `”h]”(h)�”}”(hŒ.:c:type:`struct fwnode_handle `”h]”j)�”}”(hjäWh]”hŒstruct fwnode_handle”…”�”}”(hjæWh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjâWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ fwnode_handle”uh1hh³jÚWh´MkhjÞWubhŒ corresponding to the ”…”�”}”(hjÞWh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct i2c_adapter `”h]”j)�”}”(hjXh]”hŒstruct i2c_adapter”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ i2c_adapter”uh1hh³jÚWh´MkhjÞWubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÚWh´MkhjÛWubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¿Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÚWh´Mkhj¼Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj Wubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj>Xh]”hŒ Description”…”�”}”(hj@Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj` corresponding to the **fwnode**. If no adapter can be found, or **fwnode** is NULL, this returns NULL.”h]”(hŒLook up and return the ”…”�”}”(hjTXh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct i2c_adapter `”h]”j)�”}”(hj^Xh]”hŒstruct i2c_adapter”…”�”}”(hj`Xh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hj\Xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ i2c_adapter”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MlhjTXubhŒ corresponding to the ”…”�”}”(hjTXh²hh³Nh´Nubj[)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hj€Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjTXubhŒ!. If no adapter can be found, or ”…”�”}”(hjTXh²hh³Nh´Nubj[)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hj’Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjTXubhŒ is NULL, this returns NULL.”…”�”}”(hjTXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j{Xh´Mlhj Wubhà)�”}”(hŒ_The user must call put_device(:c:type:`adapter->dev `) once done with the i2c adapter.”h]”(hŒThe user must call put_device(”…”�”}”(hjªXh²hh³Nh´Nubh)�”}”(hŒ :c:type:`adapter->dev `”h]”j)�”}”(hj´Xh]”hŒ adapter->dev”…”�”}”(hj¶Xh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hj²Xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œadapter”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MohjªXubhŒ!) once done with the i2c adapter.”…”�”}”(hjªXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÑXh´Mohj Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&i2c_get_adapter_by_fwnode (C function)”Œc.i2c_get_adapter_by_fwnode”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒMstruct i2c_adapter * i2c_get_adapter_by_fwnode (struct fwnode_handle *fwnode)”h]”j©)�”}”(hŒKstruct i2c_adapter *i2c_get_adapter_by_fwnode(struct fwnode_handle *fwnode)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjüXh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjøXh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjøXh²hh³j Yh´Mˆubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jYŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_get_adapter_by_fwnode”sbŒc.i2c_get_adapter_by_fwnode”†”asbuh1hhjøXh²hh³j Yh´MˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` corresponding to the :c:type:`struct i2c_adapter ` **Description** Look up and return the :c:type:`struct i2c_adapter ` corresponding to the **fwnode**, and increment the adapter module's use count. If no adapter can be found, or **fwnode** is NULL, this returns NULL. The user must call i2c_put_adapter(adapter) once done with the i2c adapter. Note that this is different from i2c_find_adapter_by_node().”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjZh]”hŒ Parameters”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŒhjZubjq)�”}”(hhh]”jv)�”}”(hŒ�``struct fwnode_handle *fwnode`` :c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_adapter ` ”h]”(j|)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”j)�”}”(hj8Zh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hj:Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‰hj2Zubj–)�”}”(hhh]”hà)�”}”(hŒn:c:type:`struct fwnode_handle ` corresponding to the :c:type:`struct i2c_adapter `”h]”(h)�”}”(hŒ.:c:type:`struct fwnode_handle `”h]”j)�”}”(hjWZh]”hŒstruct fwnode_handle”…”�”}”(hjYZh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjUZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ fwnode_handle”uh1hh³jMZh´M‰hjQZubhŒ corresponding to the ”…”�”}”(hjQZh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct i2c_adapter `”h]”j)�”}”(hjzZh]”hŒstruct i2c_adapter”…”�”}”(hj|Zh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjxZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ i2c_adapter”uh1hh³jMZh´M‰hjQZubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jMZh´M‰hjNZubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj2Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jMZh´M‰hj/Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjZubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj±Zh]”hŒ Description”…”�”}”(hj³Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¯Zubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‹hjZubhà)�”}”(hŒÖLook up and return the :c:type:`struct i2c_adapter ` corresponding to the **fwnode**, and increment the adapter module's use count. If no adapter can be found, or **fwnode** is NULL, this returns NULL.”h]”(hŒLook up and return the ”…”�”}”(hjÇZh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct i2c_adapter `”h]”j)�”}”(hjÑZh]”hŒstruct i2c_adapter”…”�”}”(hjÓZh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjÏZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ i2c_adapter”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŠhjÇZubhŒ corresponding to the ”…”�”}”(hjÇZh²hh³Nh´Nubj[)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hjóZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÇZubhŒQ, and increment the adapter module’s use count. If no adapter can be found, or ”…”�”}”(hjÇZh²hh³Nh´Nubj[)�”}”(hŒ **fwnode**”h]”hŒfwnode”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÇZubhŒ is NULL, this returns NULL.”…”�”}”(hjÇZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jîZh´MŠhjZubhà)�”}”(hŒˆThe user must call i2c_put_adapter(adapter) once done with the i2c adapter. Note that this is different from i2c_find_adapter_by_node().”h]”hŒˆThe user must call i2c_put_adapter(adapter) once done with the i2c adapter. Note that this is different from i2c_find_adapter_by_node().”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŽhjZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ!i2c_parse_fw_timings (C function)”Œc.i2c_parse_fw_timings”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒXvoid i2c_parse_fw_timings (struct device *dev, struct i2c_timings *t, bool use_defaults)”h]”j©)�”}”(hŒWvoid i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_defaults)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjL[h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjH[h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M°ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[[h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjH[h²hh³jZ[h´M°ubjÒ)�”}”(hŒi2c_parse_fw_timings”h]”jØ)�”}”(hŒi2c_parse_fw_timings”h]”hŒi2c_parse_fw_timings”…”�”}”(hjm[h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hji[ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjH[h²hh³jZ[h´M°ubjó)�”}”(hŒ>(struct device *dev, struct i2c_timings *t, bool use_defaults)”h]”(jù)�”}”(hŒstruct device *dev”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‰[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj…[ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–[h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…[ubh)�”}”(hhh]”jØ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj§[h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¤[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j©[Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjo[sbŒc.i2c_parse_fw_timings”†”asbuh1hhj…[ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ[h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…[ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÕ[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj…[ubjØ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjâ[h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj…[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�[ubjù)�”}”(hŒstruct i2c_timings *t”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjû[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj÷[ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷[ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_timings”h]”hŒ i2c_timings”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j\Œmodname”NŒ classname”NjVjY)�”}”j\]”jÃ[Œc.i2c_parse_fw_timings”†”asbuh1hhj÷[ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7\h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷[ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjE\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj÷[ubjØ)�”}”(hŒt”h]”hŒt”…”�”}”(hjR\h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj÷[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�[ubjù)�”}”(hŒbool use_defaults”h]”(j¯)�”}”(hjõ2h]”hŒbool”…”�”}”(hjk\h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjg\ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx\h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjg\ubjØ)�”}”(hŒ use_defaults”h]”hŒ use_defaults”…”�”}”(hj†\h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjg\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�[ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjH[h²hh³jZ[h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjD[h²hh³jZ[h´M°ubah}”(h]”j?[ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jZ[h´M°hjA[h²hubj*)�”}”(hhh]”hà)�”}”(hŒ/get I2C related timing parameters from firmware”h]”hŒ/get I2C related timing parameters from firmware”…”�”}”(hj°\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M°hj­\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjA[h²hh³jZ[h´M°ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjÈ\jLjÈ\jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXt**Parameters** ``struct device *dev`` The device to scan for I2C timing properties ``struct i2c_timings *t`` the i2c_timings struct to be filled with values ``bool use_defaults`` bool to use sane defaults derived from the I2C specification when properties are not found, otherwise don't update **Description** Scan the device for the generic I2C properties describing timing parameters for the signal and fill the given struct with the results. If a property was not found and use_defaults was true, then maximum timings are assumed which are derived from the I2C specification. If use_defaults is not used, the results will be as before, so drivers can apply their own defaults before calling this helper. The latter is mainly intended for avoiding regressions of existing drivers which want to switch to this function. New drivers almost always should use the defaults.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjÒ\h]”hŒ Parameters”…”�”}”(hjÔ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÐ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M´hjÌ\ubjq)�”}”(hhh]”(jv)�”}”(hŒD``struct device *dev`` The device to scan for I2C timing properties ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M±hjë\ubj–)�”}”(hhh]”hà)�”}”(hŒ,The device to scan for I2C timing properties”h]”hŒ,The device to scan for I2C timing properties”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j]h´M±hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjë\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j]h´M±hjè\ubjv)�”}”(hŒJ``struct i2c_timings *t`` the i2c_timings struct to be filled with values ”h]”(j|)�”}”(hŒ``struct i2c_timings *t``”h]”j)�”}”(hj*]h]”hŒstruct i2c_timings *t”…”�”}”(hj,]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M²hj$]ubj–)�”}”(hhh]”hà)�”}”(hŒ/the i2c_timings struct to be filled with values”h]”hŒ/the i2c_timings struct to be filled with values”…”�”}”(hjC]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j?]h´M²hj@]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj$]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j?]h´M²hjè\ubjv)�”}”(hŒ‰``bool use_defaults`` bool to use sane defaults derived from the I2C specification when properties are not found, otherwise don't update ”h]”(j|)�”}”(hŒ``bool use_defaults``”h]”j)�”}”(hjc]h]”hŒbool use_defaults”…”�”}”(hje]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja]ubah}”(h]”h ]”h"]”h$]”h&•]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M´hj]]ubj–)�”}”(hhh]”hà)�”}”(hŒrbool to use sane defaults derived from the I2C specification when properties are not found, otherwise don't update”h]”hŒtbool to use sane defaults derived from the I2C specification when properties are not found, otherwise don’t update”…”�”}”(hj|]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M³hjy]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj]]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jx]h´M´hjè\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjÌ\ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjŸ]h]”hŒ Description”…”�”}”(hj¡]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj�]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M¶hjÌ\ubhà)�”}”(hX1Scan the device for the generic I2C properties describing timing parameters for the signal and fill the given struct with the results. If a property was not found and use_defaults was true, then maximum timings are assumed which are derived from the I2C specification. If use_defaults is not used, the results will be as before, so drivers can apply their own defaults before calling this helper. The latter is mainly intended for avoiding regressions of existing drivers which want to switch to this function. New drivers almost always should use the defaults.”h]”hX1Scan the device for the generic I2C properties describing timing parameters for the signal and fill the given struct with the results. If a property was not found and use_defaults was true, then maximum timings are assumed which are derived from the I2C specification. If use_defaults is not used, the results will be as before, so drivers can apply their own defaults before calling this helper. The latter is mainly intended for avoiding regressions of existing drivers which want to switch to this function. New drivers almost always should use the defaults.”…”�”}”(hjµ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MµhjÌ\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_del_driver (C function)”Œc.i2c_del_driver”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ/void i2c_del_driver (struct i2c_driver *driver)”h]”j©)�”}”(hŒ.void i2c_del_driver(struct i2c_driver *driver)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjä]h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjà]h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó]h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjà]h²hh³jò]h´MubjÒ)�”}”(hŒi2c_del_driver”h]”jØ)�”}”(hŒi2c_del_driver”h]”hŒi2c_del_driver”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj^ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjà]h²hh³jò]h´Mubjó)�”}”(hŒ(struct i2c_driver *driver)”h]”jù)�”}”(hŒstruct i2c_driver *driver”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj!^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj^ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.^h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj^ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_driver”h]”hŒ i2c_driver”…”�”}”(hj?^h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj<^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jA^Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj^sbŒc.i2c_del_driver”†”asbuh1hhj^ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_^h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj^ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjm^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj^ubjØ)�”}”(hŒdriver”h]”hŒdriver”…”�”}”(hjz^h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj^ubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjà]h²hh³jò]h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjÜ]h²hh³jò]h´Mubah}”(h]”j×]ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jò]h´MhjÙ]h²hubj*)�”}”(hhh]”hà)�”}”(hŒunregister I2C driver”h]”hŒunregister I2C driver”…”�”}”(hj¤^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhj¡^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÙ]h²hh³jò]h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj¼^jLj¼^jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒe**Parameters** ``struct i2c_driver *driver`` the driver being unregistered **Context** can sleep”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjÆ^h]”hŒ Parameters”…”�”}”(hjÈ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÄ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjÀ^ubjq)�”}”(hhh]”jv)�”}”(hŒ<``struct i2c_driver *driver`` the driver being unregistered ”h]”(j|)�”}”(hŒ``struct i2c_driver *driver``”h]”j)�”}”(hjå^h]”hŒstruct i2c_driver *driver”…”�”}”(hjç^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjã^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mhjß^ubj–)�”}”(hhh]”hà)�”}”(hŒthe driver being unregistered”h]”hŒthe driver being unregistered”…”�”}”(hjþ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jú^h´Mhjû^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjß^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jú^h´MhjÜ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjÀ^ubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hj _h]”hŒContext”…”�”}”(hj"_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjÀ^ubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj6_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MhjÀ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ__i2c_transfer (C function)”Œc.__i2c_transfer”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒLint __i2c_transfer (struct i2c_adapter *adap, struct i2c_msg *msgs, int num)”h]”j©)�”}”(hŒKint __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hje_h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hja_h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÃubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt_h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhja_h²hh³js_h´MÃubjÒ)�”}”(hŒ__i2c_transfer”h]”jØ)�”}”(hŒ__i2c_transfer”h]”hŒ__i2c_transfer”…”�”}”(hj†_h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‚_ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhja_h²hh³js_h´MÃubjó)�”}”(hŒ9(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)”h]”(jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¢_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjž_ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯_h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjž_ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjÀ_h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj½_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÂ_Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjˆ_sbŒc.__i2c_transfer”†”asbuh1hhjž_ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà_h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjž_ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjî_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjž_ubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hjû_h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjž_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjš_ubjù)�”}”(hŒstruct i2c_msg *msgs”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj`ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!`h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj`ubh)�”}”(hhh]”jØ)�”}”(hŒi2c_msg”h]”hŒi2c_msg”…”�”}”(hj2`h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj/`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j4`Œmodname”NŒ classname”NjVjY)�”}”j\]”jÜ_Œc.__i2c_transfer”†”asbuh1hhj`ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP`h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj`ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj^`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj`ubjØ)�”}”(hŒmsgs”h]”hŒmsgs”…”�”}”(hjk`h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjš_ubjù)�”}”(hŒint num”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj„`h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj€`ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’`h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj€`ubjØ)�”}”(hŒnum”h]”hŒnum”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj€`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjš_ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhja_h²hh³js_h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj]_h²hh³js_h´MÃubah}”(h]”jX_ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³js_h´MÃhjZ_h²hubj*)�”}”(hhh]”hà)�”}”(hŒunlocked flavor of i2c_transfer”h]”hŒunlocked flavor of i2c_transfer”…”�”}”(hjÊ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÃhjÇ`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjZ_h²hh³js_h´MÃubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjâ`jLjâ`jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX©**Parameters** ``struct i2c_adapter *adap`` Handle to I2C bus ``struct i2c_msg *msgs`` One or more messages to execute before STOP is issued to terminate the operation; each message begins with a START. ``int num`` Number of messages to be executed. **Description** Returns negative errno, else the number of messages executed. Adapter lock must be held when calling this function. No debug logging takes place.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjì`h]”hŒ Parameters”…”�”}”(hjî`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjê`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÇhjæ`ubjq)�”}”(hhh]”(jv)�”}”(hŒ/``struct i2c_adapter *adap`` Handle to I2C bus ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hj ah]”hŒstruct i2c_adapter *adap”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj aubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÄhjaubj–)�”}”(hhh]”hà)�”}”(hŒHandle to I2C bus”h]”hŒHandle to I2C bus”…”�”}”(hj$ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j ah´MÄhj!aubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j ah´MÄhjaubjv)�”}”(hŒ�``struct i2c_msg *msgs`` One or more messages to execute before STOP is issued to terminate the operation; each message begins with a START. ”h]”(j|)�”}”(hŒ``struct i2c_msg *msgs``”h]”j)�”}”(hjDah]”hŒstruct i2c_msg *msgs”…”�”}”(hjFah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBaubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÆhj>aubj–)�”}”(hhh]”hà)�”}”(hŒsOne or more messages to execute before STOP is issued to terminate the operation; each message begins with a START.”h]”hŒsOne or more messages to execute before STOP is issued to terminate the operation; each message begins with a START.”…”�”}”(hj]ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÅhjZaubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj>aubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jYah´MÆhjaubjv)�”}”(hŒ/``int num`` Number of messages to be executed. ”h]”(j|)�”}”(hŒ ``int num``”h]”j)�”}”(hj~ah]”hŒint num”…”�”}”(hj€ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj|aubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÇhjxaubj–)�”}”(hhh]”hà)�”}”(hŒ"Number of messages to be executed.”h]”hŒ"Number of messages to be executed.”…”�”}”(hj—ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j“ah´MÇhj”aubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjxaubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j“ah´MÇhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjæ`ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj¹ah]”hŒ Description”…”�”}”(hj»ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj·aubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÉhjæ`ubhà)�”}”(hŒ=Returns negative errno, else the number of messages executed.”h]”hŒ=Returns negative errno, else the number of messages executed.”…”�”}”(hjÏah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÈhjæ`ubhà)�”}”(hŒSAdapter lock must be held when calling this function. No debug logging takes place.”h]”hŒSAdapter lock must be held when calling this function. No debug logging takes place.”…”�”}”(hjÞah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MÊhjæ`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_transfer (C function)”Œc.i2c_transfer”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒJint i2c_transfer (struct i2c_adapter *adap, struct i2c_msg *msgs, int num)”h]”j©)�”}”(hŒIint i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj bh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj bh²hh³jbh´M ubjÒ)�”}”(hŒ i2c_transfer”h]”jØ)�”}”(hŒ i2c_transfer”h]”hŒ i2c_transfer”…”�”}”(hj.bh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj*bubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj bh²hh³jbh´M ubjó)�”}”(hŒ9(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)”h]”(jù)�”}”(hŒstruct i2c_adapter *adap”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjJbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjFbubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWbh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjFbubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjhbh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjebubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jjbŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj0bsbŒc.i2c_transfer”†”asbuh1hhjFbubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆbh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjFbubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj–bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjFbubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hj£bh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjFbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjBbubjù)�”}”(hŒstruct i2c_msg *msgs”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj¼bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¸bubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉbh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¸bubh)�”}”(hhh]”jØ)�”}”(hŒi2c_msg”h]”hŒi2c_msg”…”�”}”(hjÚbh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj×bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÜbŒmodname”NŒ classname”NjVjY)�”}”j\]”j„bŒc.i2c_transfer”†”asbuh1hhj¸bubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøbh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¸bubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¸bubjØ)�”}”(hŒmsgs”h]”hŒmsgs”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¸bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjBbubjù)�”}”(hŒint num”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj,ch²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj(cubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:ch²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj(cubjØ)�”}”(hŒnum”h]”hŒnum”…”�”}”(hjHch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj(cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjBbubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj bh²hh³jbh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjbh²hh³jbh´M ubah}”(h]”jbah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jbh´M hjbh²hubj*)�”}”(hhh]”hà)�”}”(hŒ(execute a single or combined I2C message”h]”hŒ(execute a single or combined I2C message”…”�”}”(hjrch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjoch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjbh²hh³jbh´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjŠcjLjŠcjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXÔ**Parameters** ``struct i2c_adapter *adap`` Handle to I2C bus ``struct i2c_msg *msgs`` One or more messages to execute before STOP is issued to terminate the operation; each message begins with a START. ``int num`` Number of messages to be executed. **Description** Returns negative errno, else the number of messages executed. Note that there is no requirement that each message be sent to the same slave address, although that is the most common model.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj”ch]”hŒ Parameters”…”�”}”(hj–ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj’cubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjŽcubjq)�”}”(hhh]”(jv)�”}”(hŒ/``struct i2c_adapter *adap`` Handle to I2C bus ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hj³ch]”hŒstruct i2c_adapter *adap”…”�”}”(hjµch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±cubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hj­cubj–)�”}”(hhh]”hà)�”}”(hŒHandle to I2C bus”h]”hŒHandle to I2C bus”…”�”}”(hjÌch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÈch´M hjÉcubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj­cubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÈch´M hjªcubjv)�”}”(hŒ�``struct i2c_msg *msgs`` One or more messages to execute before STOP is issued to terminate the operation; each message begins with a START. ”h]”(j|)�”}”(hŒ``struct i2c_msg *msgs``”h]”j)�”}”(hjìch]”hŒstruct i2c_msg *msgs”…”�”}”(hjîch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjêcubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjæcubj–)�”}”(hhh]”hà)�”}”(hŒsOne or more messages to execute before STOP is issued to terminate the operation; each message begins with a START.”h]”hŒsOne or more messages to execute before STOP is issued to terminate the operation; each message begins with a START.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjæcubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jdh´M hjªcubjv)�”}”(hŒ/``int num`` Number of messages to be executed. ”h]”(j|)�”}”(hŒ ``int num``”h]”j)�”}”(hj&dh]”hŒint num”…”�”}”(hj(dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$dubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M hj dubj–)�”}”(hhh]”hà)�”}”(hŒ"Number of messages to be executed.”h]”hŒ"Number of messages to be executed.”…”�”}”(hj?dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j;dh´M hjiubjv)�”}”(hŒ;``struct i2c_device_identity *id`` The queried information ”h]”(j|)�”}”(hŒ"``struct i2c_device_identity *id``”h]”j)�”}”(hj€ih]”hŒstruct i2c_device_identity *id”…”�”}”(hj‚ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~iubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MW hjziubj–)�”}”(hhh]”hà)�”}”(hŒThe queried information”h]”hŒThe queried information”…”�”}”(hj™ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j•ih´MW hj–iubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjziubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j•ih´MW hj>iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj"iubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj»ih]”hŒ Description”…”�”}”(hj½ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¹iubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MY hj"iubhà)�”}”(hŒ1Returns negative errno on error, zero on success.”h]”hŒ1Returns negative errno on error, zero on success.”…”�”}”(hjÑih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MX hj"iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_client_get_device_id (C function)”Œc.i2c_client_get_device_id”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒWconst struct i2c_device_id * i2c_client_get_device_id (const struct i2c_client *client)”h]”j©)�”}”(hŒUconst struct i2c_device_id *i2c_client_get_device_id(const struct i2c_client *client)”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjüih²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mt ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjüih²hh³j jh´Mt ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjüih²hh³j jh´Mt ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)jh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjüih²hh³j jh´Mt ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_device_id”h]”hŒ i2c_device_id”…”�”}”(hj:jh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj7jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jbuf with PIO. Or a valid pointer to be used with DMA. After use, release it by calling i2c_put_dma_safe_msg_buf(). **Description** This function must only be called from process context!”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjEmh]”hŒ Parameters”…”�”}”(hjGmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjCmubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mo hj?mubjq)�”}”(hhh]”(jv)�”}”(hŒ2``struct i2c_msg *msg`` the message to be checked ”h]”(j|)�”}”(hŒ``struct i2c_msg *msg``”h]”j)�”}”(hjdmh]”hŒstruct i2c_msg *msg”…”�”}”(hjfmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjbmubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Ml hj^mubj–)�”}”(hhh]”hà)�”}”(hŒthe message to be checked”h]”hŒthe message to be checked”…”�”}”(hj}mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jymh´Ml hjzmubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj^mubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jymh´Ml hj[mubjv)�”}”(hŒn``unsigned int threshold`` the minimum number of bytes for which using DMA makes sense. Should at least be 1. ”h]”(j|)�”}”(hŒ``unsigned int threshold``”h]”j)�”}”(hj�mh]”hŒunsigned int threshold”…”�”}”(hjŸmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›mubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mn hj—mubj–)�”}”(hhh]”hà)�”}”(hŒRthe minimum number of bytes for which using DMA makes sense. Should at least be 1.”h]”hŒRthe minimum number of bytes for which using DMA makes sense. Should at least be 1.”…”�”}”(hj¶mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mm hj³mubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj—mubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j²mh´Mn hj[mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj?mubhà)�”}”(hŒ **Return**”h]”j[)�”}”(hjÙmh]”hŒReturn”…”�”}”(hjÛmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj×mubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mp hj?mubhà)�”}”(hŒ§NULL if a DMA safe buffer was not obtained. Use msg->buf with PIO. Or a valid pointer to be used with DMA. After use, release it by calling i2c_put_dma_safe_msg_buf().”h]”hŒ§NULL if a DMA safe buffer was not obtained. Use msg->buf with PIO. Or a valid pointer to be used with DMA. After use, release it by calling i2c_put_dma_safe_msg_buf().”…”�”}”(hjïmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mp hj?mubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjnh]”hŒ Description”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjþmubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Mt hj?mubhà)�”}”(hŒ7This function must only be called from process context!”h]”hŒ7This function must only be called from process context!”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Ms hj?mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_put_dma_safe_msg_buf (C function)”Œc.i2c_put_dma_safe_msg_buf”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒJvoid i2c_put_dma_safe_msg_buf (u8 *buf, struct i2c_msg *msg, bool xferred)”h]”j©)�”}”(hŒIvoid i2c_put_dma_safe_msg_buf(u8 *buf, struct i2c_msg *msg, bool xferred)”h]”(j¯)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEnh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjAnh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M� ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTnh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjAnh²hh³jSnh´M� ubjÒ)�”}”(hŒi2c_put_dma_safe_msg_buf”h]”jØ)�”}”(hŒi2c_put_dma_safe_msg_buf”h]”hŒi2c_put_dma_safe_msg_buf”…”�”}”(hjfnh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjbnubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjAnh²hh³jSnh´M� ubjó)�”}”(hŒ,(u8 *buf, struct i2c_msg *msg, bool xferred)”h]”(jù)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj…nh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‚nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j‡nŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjhnsbŒc.i2c_put_dma_safe_msg_buf”†”asbuh1hhj~nubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥nh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj~nubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj³nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj~nubjØ)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÀnh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj~nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjznubjù)�”}”(hŒstruct i2c_msg *msg”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÙnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÕnubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjænh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÕnubh)�”}”(hhh]”jØ)�”}”(hŒi2c_msg”h]”hŒi2c_msg”…”�”}”(hj÷nh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjônubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jùnŒmodname”NŒ classname”NjVjY)�”}”j\]”j¡nŒc.i2c_put_dma_safe_msg_buf”†”asbuh1hhjÕnubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÕnubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj#oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÕnubjØ)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj0oh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÕnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjznubjù)�”}”(hŒ bool xferred”h]”(j¯)�”}”(hjõ2h]”hŒbool”…”�”}”(hjIoh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjEoubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVoh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjEoubjØ)�”}”(hŒxferred”h]”hŒxferred”…”�”}”(hjdoh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjEoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjznubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjAnh²hh³jSnh´M� ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj=nh²hh³jSnh´M� ubah}”(h]”j8nah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jSnh´M� hj:nh²hubj*)�”}”(hhh]”hà)�”}”(hŒ-release DMA safe buffer and sync with i2c_msg”h]”hŒ-release DMA safe buffer and sync with i2c_msg”…”�”}”(hjŽoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M� hj‹oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj:nh²hh³jSnh´M� ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj¦ojLj¦ojM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒå**Parameters** ``u8 *buf`` the buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL. ``struct i2c_msg *msg`` the message which the buffer corresponds to ``bool xferred`` bool saying if the message was transferred”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj°oh]”hŒ Parameters”…”�”}”(hj²oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj®oubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‘ hjªoubjq)�”}”(hhh]”(jv)�”}”(hŒN``u8 *buf`` the buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL. ”h]”(j|)�”}”(hŒ ``u8 *buf``”h]”j)�”}”(hjÏoh]”hŒu8 *buf”…”�”}”(hjÑoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍoubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŽ hjÉoubj–)�”}”(hhh]”hà)�”}”(hŒAthe buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL.”h]”hŒAthe buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL.”…”�”}”(hjèoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jäoh´MŽ hjåoubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÉoubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jäoh´MŽ hjÆoubjv)�”}”(hŒD``struct i2c_msg *msg`` the message which the buffer corresponds to ”h]”(j|)�”}”(hŒ``struct i2c_msg *msg``”h]”j)�”}”(hjph]”hŒstruct i2c_msg *msg”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M� hjpubj–)�”}”(hhh]”hà)�”}”(hŒ+the message which the buffer corresponds to”h]”hŒ+the message which the buffer corresponds to”…”�”}”(hj!ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jph´M� hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jph´M� hjÆoubjv)�”}”(hŒ;``bool xferred`` bool saying if the message was transferred”h]”(j|)�”}”(hŒ``bool xferred``”h]”j)�”}”(hjAph]”hŒ bool xferred”…”�”}”(hjCph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?pubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M‘ hj;pubj–)�”}”(hhh]”hà)�”}”(hŒ*bool saying if the message was transferred”h]”hŒ*bool saying if the message was transferred”…”�”}”(hjZph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M� hjWpubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj;pubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jVph´M‘ hjÆoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjªoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_smbus_pec (C function)”Œc.i2c_smbus_pec”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ.u8 i2c_smbus_pec (u8 crc, u8 *p, size_t count)”h]”j©)�”}”(hŒ-u8 i2c_smbus_pec(u8 crc, u8 *p, size_t count)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjžph²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj›pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j pŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒ i2c_smbus_pec”sbŒc.i2c_smbus_pec”†”asbuh1hhj—ph²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K+ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀph²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj—ph²hh³j¿ph´K+ubjÒ)�”}”(hŒ i2c_smbus_pec”h]”jØ)�”}”(hj¼ph]”hŒ i2c_smbus_pec”…”�”}”(hjÒph²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÎpubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj—ph²hh³j¿ph´K+ubjó)�”}”(hŒ(u8 crc, u8 *p, size_t count)”h]”(jù)�”}”(hŒu8 crc”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjðph²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjípubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jòpŒmodname”NŒ classname”NjVjY)�”}”j\]”jºpŒc.i2c_smbus_pec”†”asbuh1hhjépubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjépubjØ)�”}”(hŒcrc”h]”hŒcrc”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjépubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjåpubjù)�”}”(hŒu8 *p”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj8qh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj5qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j:qŒmodname”NŒ classname”NjVjY)�”}”j\]”jºpŒc.i2c_smbus_pec”†”asbuh1hhj1qubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVqh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj1qubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjdqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj1qubjØ)�”}”(hjh]”hŒp”…”�”}”(hjqqh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj1qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjåpubjù)�”}”(hŒ size_t count”h]”(h)�”}”(hhh]”jØ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjŒqh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‰qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jŽqŒmodname”NŒ classname”NjVjY)�”}”j\]”jºpŒc.i2c_smbus_pec”†”asbuh1hhj…qubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªqh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…qubjØ)�”}”(hŒcount”h]”hŒcount”…”�”}”(hj¸qh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj…qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjåpubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj—ph²hh³j¿ph´K+ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj“ph²hh³j¿ph´K+ubah}”(h]”jŽpah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j¿ph´K+hj�ph²hubj*)�”}”(hhh]”hà)�”}”(hŒ0Incremental CRC8 over the given input data array”h]”hŒ0Incremental CRC8 over the given input data array”…”�”}”(hjâqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K+hjßqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj�ph²hh³j¿ph´K+ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjúqjLjúqjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒá**Parameters** ``u8 crc`` previous return crc8 value ``u8 *p`` pointer to data buffer. ``size_t count`` number of bytes in data buffer. **Description** Incremental CRC8 over count bytes in the array pointed to by p”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjrh]”hŒ Parameters”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K/hjþqubjq)�”}”(hhh]”(jv)�”}”(hŒ&``u8 crc`` previous return crc8 value ”h]”(j|)�”}”(hŒ ``u8 crc``”h]”j)�”}”(hj#rh]”hŒu8 crc”…”�”}”(hj%rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!rubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K,hjrubj–)�”}”(hhh]”hà)�”}”(hŒprevious return crc8 value”h]”hŒprevious return crc8 value”…”�”}”(hjIncremental CRC8 over count bytes in the array pointed to by p”h]”hŒ>Incremental CRC8 over count bytes in the array pointed to by p”…”�”}”(hjærh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K/hjþqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ i2c_smbus_read_byte (C function)”Œc.i2c_smbus_read_byte”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ9s32 i2c_smbus_read_byte (const struct i2c_client *client)”h]”j©)�”}”(hŒ8s32 i2c_smbus_read_byte(const struct i2c_client *client)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jsŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_read_byte”sbŒc.i2c_smbus_read_byte”†”asbuh1hhjsh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KaubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:sh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjsh²hh³j9sh´KaubjÒ)�”}”(hŒi2c_smbus_read_byte”h]”jØ)�”}”(hj6sh]”hŒi2c_smbus_read_byte”…”�”}”(hjLsh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjHsubah}”(•h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjsh²hh³j9sh´Kaubjó)�”}”(hŒ!(const struct i2c_client *client)”h]”jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjgsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjcsubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtsh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjcsubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‚sh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjcsubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjcsubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j¢sŒmodname”NŒ classname”NjVjY)�”}”j\]”j4sŒc.i2c_smbus_read_byte”†”asbuh1hhjcsubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾sh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjcsubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÌsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjcsubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjÙsh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjcsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj_subah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjsh²hh³j9sh´Kaubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj sh²hh³j9sh´Kaubah}”(h]”jsah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j9sh´Kahj sh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "receive byte" protocol”h]”hŒ!SMBus “receive byteâ€� protocol”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kahjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj sh²hh³j9sh´Kaubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjtjLjtjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒÐ**Parameters** ``const struct i2c_client *client`` Handle to slave device **Description** This executes the SMBus "receive byte" protocol, returning negative errno else the byte received from the device.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj%th]”hŒ Parameters”…”�”}”(hj'th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj#tubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kehjtubjq)�”}”(hhh]”jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjDth]”hŒconst struct i2c_client *client”…”�”}”(hjFth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBtubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kbhj>tubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hj]th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jYth´KbhjZtubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj>tubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jYth´Kbhj;tubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjtubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjth]”hŒ Description”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj}tubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kdhjtubhà)�”}”(hŒqThis executes the SMBus "receive byte" protocol, returning negative errno else the byte received from the device.”h]”hŒuThis executes the SMBus “receive byteâ€� protocol, returning negative errno else the byte received from the device.”…”�”}”(hj•th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kchjtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ!i2c_smbus_write_byte (C function)”Œc.i2c_smbus_write_byte”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒDs32 i2c_smbus_write_byte (const struct i2c_client *client, u8 value)”h]”j©)�”}”(hŒCs32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hjÇth²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÄtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÉtŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_write_byte”sbŒc.i2c_smbus_write_byte”†”asbuh1hhjÀth²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KtubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéth²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÀth²hh³jèth´KtubjÒ)�”}”(hŒi2c_smbus_write_byte”h]”jØ)�”}”(hjåth]”hŒi2c_smbus_write_byte”…”�”}”(hjûth²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj÷tubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjÀth²hh³jèth´Ktubjó)�”}”(hŒ+(const struct i2c_client *client, u8 value)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjuubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#uh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjuubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj1uh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjuubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>uh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjuubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjOuh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjLuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jQuŒmodname”NŒ classname”NjVjY)�”}”j\]”jãtŒc.i2c_smbus_write_byte”†”asbuh1hhjuubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmuh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjuubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj{uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjuubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjˆuh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjuubjù)�”}”(hŒu8 value”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¤uh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¡uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j¦uŒmodname”NŒ classname”NjVjY)�”}”j\]”jãtŒc.i2c_smbus_write_byte”†”asbuh1hhj�uubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂuh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�uubjØ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjÐuh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjuubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjÀth²hh³jèth´Ktubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj¼th²hh³jèth´Ktubah}”(h]”j·tah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jèth´Kthj¹th²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "send byte" protocol”h]”hŒSMBus “send byteâ€� protocol”…”�”}”(hjúuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kthj÷uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj¹th²hh³jèth´Ktubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjvjLjvjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒÛ**Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 value`` Byte to be sent **Description** This executes the SMBus "send byte" protocol, returning negative errno else zero on success.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kxhjvubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hj;vh]”hŒconst struct i2c_client *client”…”�”}”(hj=vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9vubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kuhj5vubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjTvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jPvh´KuhjQvubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj5vubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jPvh´Kuhj2vubjv)�”}”(hŒ``u8 value`` Byte to be sent ”h]”(j|)�”}”(hŒ ``u8 value``”h]”j)�”}”(hjtvh]”hŒu8 value”…”�”}”(hjvvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjrvubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kvhjnvubj–)�”}”(hhh]”hà)�”}”(hŒByte to be sent”h]”hŒByte to be sent”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‰vh´KvhjŠvubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjnvubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‰vh´Kvhj2vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjvubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj¯vh]”hŒ Description”…”�”}”(hj±vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj­vubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kxhjvubhà)�”}”(hŒ\This executes the SMBus "send byte" protocol, returning negative errno else zero on success.”h]”hŒ`This executes the SMBus “send byteâ€� protocol, returning negative errno else zero on success.”…”�”}”(hjÅvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kwhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_smbus_read_byte_data (C function)”Œc.i2c_smbus_read_byte_data”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒJs32 i2c_smbus_read_byte_data (const struct i2c_client *client, u8 command)”h]”j©)�”}”(hŒIs32 i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj÷vh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjôvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jùvŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_read_byte_data”sbŒc.i2c_smbus_read_byte_data”†”asbuh1hhjðvh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KƒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjðvh²hh³jwh´KƒubjÒ)�”}”(hŒi2c_smbus_read_byte_data”h]”jØ)�”}”(hjwh]”hŒi2c_smbus_read_byte_data”…”�”}”(hj+wh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj'wubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjðvh²hh³jwh´Kƒubjó)�”}”(hŒ-(const struct i2c_client *client, u8 command)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjFwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjBwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSwh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBwubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjawh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjBwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnwh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBwubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj|wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j�wŒmodname”NŒ classname”NjVjY)�”}”j\]”jwŒc.i2c_smbus_read_byte_data”†”asbuh1hhjBwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBwubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj«wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjBwubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hj¸wh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjBwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj>wubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÔwh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÑwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÖwŒmodname”NŒ classname”NjVjY)�”}”j\]”jwŒc.i2c_smbus_read_byte_data”†”asbuh1hhjÍwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòwh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÍwubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÍwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj>wubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjðvh²hh³jwh´Kƒubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjìvh²hh³jwh´Kƒubah}”(h]”jçvah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jwh´Kƒhjévh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "read byte" protocol”h]”hŒSMBus “read byteâ€� protocol”…”�”}”(hj*xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kƒhj'xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjévh²hh³jwh´Kƒubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjBxjLjBxjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hŒü**Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave **Description** This executes the SMBus "read byte" protocol, returning negative errno else a data byte received from the device.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjLxh]”hŒ Parameters”…”�”}”(hjNxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjJxubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K‡hjFxubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjkxh]”hŒconst struct i2c_client *client”…”�”}”(hjmxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjixubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K„hjexubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hj„xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j€xh´K„hj�xubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjexubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j€xh´K„hjbxubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hj¤xh]”hŒ u8 command”…”�”}”(hj¦xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¢xubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K…hjžxubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hj½xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j¹xh´K…hjºxubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjžxubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¹xh´K…hjbxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjFxubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjßxh]”hŒ Description”…”�”}”(hjáxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÝxubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K‡hjFxubhà)�”}”(hŒqThis executes the SMBus "read byte" protocol, returning negative errno else a data byte received from the device.”h]”hŒuThis executes the SMBus “read byteâ€� protocol, returning negative errno else a data byte received from the device.”…”�”}”(hjõxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K†hjFxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&i2c_smbus_write_byte_data (C function)”Œc.i2c_smbus_write_byte_data”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒUs32 i2c_smbus_write_byte_data (const struct i2c_client *client, u8 command, u8 value)”h]”j©)�”}”(hŒTs32 i2c_smbus_write_byte_data(const struct i2c_client *client, u8 command, u8 value)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj'yh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj$yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j)yŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_write_byte_data”sbŒc.i2c_smbus_write_byte_data”†”asbuh1hhj yh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K—ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIyh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj yh²hh³jHyh´K—ubjÒ)�”}”(hŒi2c_smbus_write_byte_data”h]”jØ)�”}”(hjEyh]”hŒi2c_smbus_write_byte_data”…”�”}”(hj[yh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjWyubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj yh²hh³jHyh´K—ubjó)�”}”(hŒ7(const struct i2c_client *client, u8 command, u8 value)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjvyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjryubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒyh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjryubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj‘yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjryubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžyh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjryubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj¯yh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¬yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j±yŒmodname”NŒ classname”NjVjY)�”}”j\]”jCyŒc.i2c_smbus_write_byte_data”†”asbuh1hhjryubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍyh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjryubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÛyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjryubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjèyh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjryubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjnyubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jzŒmodname”NŒ classname”NjVjY)�”}”j\]”jCyŒc.i2c_smbus_write_byte_data”†”asbuh1hhjýyubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"zh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjýyubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hj0zh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjýyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjnyubjù)�”}”(hŒu8 value”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjLzh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjIzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jNzŒmodname”NŒ classname”NjVjY)�”}”j\]”jCyŒc.i2c_smbus_write_byte_data”†”asbuh1hhjEzubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjzh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjEzubjØ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjxzh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjEzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjnyubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj yh²hh³jHyh´K—ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjyh²hh³jHyh´K—ubah}”(h]”jyah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jHyh´K—hjyh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "write byte" protocol”h]”hŒSMBus “write byteâ€� protocol”…”�”}”(hj¢zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K—hjŸzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjyh²hh³jHyh´K—ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjºzjLjºzjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX **Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave ``u8 value`` Byte being written **Description** This executes the SMBus "write byte" protocol, returning negative errno else zero on success.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjÄzh]”hŒ Parameters”…”�”}”(hjÆzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÂzubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K›hj¾zubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjãzh]”hŒconst struct i2c_client *client”…”�”}”(hjåzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjázubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K˜hjÝzubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjüzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jøzh´K˜hjùzubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÝzubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jøzh´K˜hjÚzubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hj{h]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K™hj{ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hj5{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j1{h´K™hj2{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j1{h´K™hjÚzubjv)�”}”(hŒ ``u8 value`` Byte being written ”h]”(j|)�”}”(hŒ ``u8 value``”h]”j)�”}”(hjU{h]”hŒu8 value”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KšhjO{ubj–)�”}”(hhh]”hà)�”}”(hŒByte being written”h]”hŒByte being written”…”�”}”(hjn{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jj{h´Kšhjk{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjO{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jj{h´KšhjÚzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj¾zubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj�{h]”hŒ Description”…”�”}”(hj’{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjŽ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kœhj¾zubhà)�”}”(hŒ]This executes the SMBus "write byte" protocol, returning negative errno else zero on success.”h]”hŒaThis executes the SMBus “write byteâ€� protocol, returning negative errno else zero on success.”…”�”}”(hj¦{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K›hj¾zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ%i2c_smbus_read_word_data (C function)”Œc.i2c_smbus_read_word_data”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒJs32 i2c_smbus_read_word_data (const struct i2c_client *client, u8 command)”h]”j©)�”}”(hŒIs32 i2c_smbus_read_word_data(const struct i2c_client *client, u8 command)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hjØ{h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÕ{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÚ{Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_read_word_data”sbŒc.i2c_smbus_read_word_data”†”asbuh1hhjÑ{h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K«ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú{h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÑ{h²hh³jù{h´K«ubjÒ)�”}”(hŒi2c_smbus_read_word_data”h]”jØ)�”}”(hjö{h]”hŒi2c_smbus_read_word_data”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj|ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjÑ{h²hh³jù{h´K«ubjó)�”}”(hŒ-(const struct i2c_client *client, u8 command)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hj'|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj#|ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4|h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj#|ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjB|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj#|ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO|h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj#|ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj`|h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj]|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jb|Œmodname”NŒ classname”NjVjY)�”}”j\]”jô{Œc.i2c_smbus_read_word_data”†”asbuh1hhj#|ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~|h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj#|ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjŒ|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj#|ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hj™|h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj#|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj|ubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjµ|h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj²|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j·|Œmodname”NŒ classname”NjVjY)�”}”j\]”jô{Œc.i2c_smbus_read_word_data”†”asbuh1hhj®|ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ|h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj®|ubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjá|h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj®|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj|ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjÑ{h²hh³jù{h´K«ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjÍ{h²hh³jù{h´K«ubah}”(h]”jÈ{ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jù{h´K«hjÊ{h²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "read word" protocol”h]”hŒSMBus “read wordâ€� protocol”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K«hj}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÊ{h²hh³jù{h´K«ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj#}jLj#}jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX **Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave **Description** This executes the SMBus "read word" protocol, returning negative errno else a 16-bit unsigned "word" received from the device.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj-}h]”hŒ Parameters”…”�”}”(hj/}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj+}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K¯hj'}ubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjL}h]”hŒconst struct i2c_client *client”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K¬hjF}ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hje}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³ja}h´K¬hjb}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjF}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³ja}h´K¬hjC}ubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hj…}h]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K­hj}ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hjž}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jš}h´K­hj›}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jš}h´K­hjC}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj'}ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjÀ}h]”hŒ Description”…”�”}”(hjÂ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj¾}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K¯hj'}ubhà)�”}”(hŒ~This executes the SMBus "read word" protocol, returning negative errno else a 16-bit unsigned "word" received from the device.”h]”hŒ†This executes the SMBus “read wordâ€� protocol, returning negative errno else a 16-bit unsigned “wordâ€� received from the device.”…”�”}”(hjÖ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K®hj'}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&i2c_smbus_write_word_data (C function)”Œc.i2c_smbus_write_word_data”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒVs32 i2c_smbus_write_word_data (const struct i2c_client *client, u8 command, u16 value)”h]”j©)�”}”(hŒUs32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command, u16 value)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j ~Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_write_word_data”sbŒc.i2c_smbus_write_word_data”†”asbuh1hhj~h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K¿ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*~h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj~h²hh³j)~h´K¿ubjÒ)�”}”(hŒi2c_smbus_write_word_data”h]”jØ)�”}”(hj&~h]”hŒi2c_smbus_write_word_data”…”�”}”(hj<~h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj8~ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj~h²hh³j)~h´K¿ubjó)�”}”(hŒ8(const struct i2c_client *client, u8 command, u16 value)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjW~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjS~ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd~h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjS~ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjr~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjS~ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjS~ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j’~Œmodname”NŒ classname”NjVjY)�”}”j\]”j$~Œc.i2c_smbus_write_word_data”†”asbuh1hhjS~ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®~h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjS~ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj¼~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjS~ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjÉ~h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjS~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjO~ubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjå~h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjâ~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jç~Œmodname”NŒ classname”NjVjY)�”}”j\]”j$~Œc.i2c_smbus_write_word_data”†”asbuh1hhjÞ~ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÞ~ubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÞ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjO~ubjù)�”}”(hŒ u16 value”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j/Œmodname”NŒ classname”NjVjY)�”}”j\]”j$~Œc.i2c_smbus_write_word_data”†”asbuh1hhj&ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj&ubjØ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjO~ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj~h²hh³j)~h´K¿ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjý}h²hh³j)~h´K¿ubah}”(h]”jø}ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j)~h´K¿hjú}h²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "write word" protocol”h]”hŒSMBus “write wordâ€� protocol”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K¿hj€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjú}h²hh³j)~h´K¿ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj›jLj›jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX**Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave ``u16 value`` 16-bit "word" being written **Description** This executes the SMBus "write word" protocol, returning negative errno else zero on success.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj¥h]”hŒ Parameters”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÃhjŸubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjÄh]”hŒconst struct i2c_client *client”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÀhj¾ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÙh´KÀhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÙh´KÀhj»ubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hjýh]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÁhj÷ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j€h´KÁhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j€h´KÁhj»ubjv)�”}”(hŒ*``u16 value`` 16-bit "word" being written ”h]”(j|)�”}”(hŒ ``u16 value``”h]”j)�”}”(hj6€h]”hŒ u16 value”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÂhj0€ubj–)�”}”(hhh]”hà)�”}”(hŒ16-bit "word" being written”h]”hŒ16-bit “wordâ€� being written”…”�”}”(hjO€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jK€h´KÂhjL€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj0€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jK€h´KÂhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjŸubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjq€h]”hŒ Description”…”�”}”(hjs€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjo€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÄhjŸubhà)�”}”(hŒ]This executes the SMBus "write word" protocol, returning negative errno else zero on success.”h]”hŒaThis executes the SMBus “write wordâ€� protocol, returning negative errno else zero on success.”…”�”}”(hj‡€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÃhjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&i2c_smbus_read_block_data (C function)”Œc.i2c_smbus_read_block_data”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒWs32 i2c_smbus_read_block_data (const struct i2c_client *client, u8 command, u8 *values)”h]”j©)�”}”(hŒVs32 i2c_smbus_read_block_data(const struct i2c_client *client, u8 command, u8 *values)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj¹€h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¶€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j»€Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_read_block_data”sbŒc.i2c_smbus_read_block_data”†”asbuh1hhj²€h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÓubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ€h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj²€h²hh³jÚ€h´KÓubjÒ)�”}”(hŒi2c_smbus_read_block_data”h]”jØ)�”}”(hj×€h]”hŒi2c_smbus_read_block_data”…”�”}”(hjí€h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjé€ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj²€h²hh³jÚ€h´KÓubjó)�”}”(hŒ9(const struct i2c_client *client, u8 command, u8 *values)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj>�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jC�Œmodname”NŒ classname”NjVjY)�”}”j\]”jÕ€Œc.i2c_smbus_read_block_data”†”asbuh1hhj�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj�ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�ubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj“�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j˜�Œmodname”NŒ classname”NjVjY)�”}”j\]”jÕ€Œc.i2c_smbus_read_block_data”†”asbuh1hhj��ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj��ubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjÂ�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj��ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�ubjù)�”}”(hŒ u8 *values”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÞ�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÛ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jà�Œmodname”NŒ classname”NjVjY)�”}”j\]”jÕ€Œc.i2c_smbus_read_block_data”†”asbuh1hhj×�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj×�ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj×�ubjØ)�”}”(hŒvalues”h]”hŒvalues”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj×�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj²€h²hh³jÚ€h´KÓubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj®€h²hh³jÚ€h´KÓubah}”(h]”j©€ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jÚ€h´KÓhj«€h²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "block read" protocol”h]”hŒSMBus “block readâ€� protocol”…”�”}”(hjA‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÓhj>‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj«€h²hh³jÚ€h´KÓubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjY‚jLjY‚jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX®**Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave ``u8 *values`` Byte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most 32 bytes. **Description** This executes the SMBus "block read" protocol, returning negative errno else the number of data bytes in the slave's response. Note that using this function requires that the client's adapter support the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality. Not all adapter drivers support this; its emulation through I2C messaging relies on a specific mechanism (I2C_M_RECV_LEN) which may not be implemented.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjc‚h]”hŒ Parameters”…”�”}”(hje‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhja‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K×hj]‚ubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hj‚‚h]”hŒconst struct i2c_client *client”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÔhj|‚ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hj›‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j—‚h´KÔhj˜‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj|‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j—‚h´KÔhjy‚ubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hj»‚h]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÕhjµ‚ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hjÔ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jЂh´KÕhjÑ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjµ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jЂh´KÕhjy‚ubjv)�”}”(hŒ‹``u8 *values`` Byte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most 32 bytes. ”h]”(j|)�”}”(hŒ``u8 *values``”h]”j)�”}”(hjô‚h]”hŒ u8 *values”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K×hjî‚ubj–)�”}”(hhh]”hà)�”}”(hŒ{Byte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most 32 bytes.”h]”hŒ{Byte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most 32 bytes.”…”�”}”(hj ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÖhj ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjî‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j ƒh´K×hjy‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj]‚ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj0ƒh]”hŒ Description”…”�”}”(hj2ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj.ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÙhj]‚ubhà)�”}”(hŒ~This executes the SMBus "block read" protocol, returning negative errno else the number of data bytes in the slave's response.”h]”hŒ„This executes the SMBus “block readâ€� protocol, returning negative errno else the number of data bytes in the slave’s response.”…”�”}”(hjFƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KØhj]‚ubhà)�”}”(hXNote that using this function requires that the client's adapter support the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality. Not all adapter drivers support this; its emulation through I2C messaging relies on a specific mechanism (I2C_M_RECV_LEN) which may not be implemented.”h]”hXNote that using this function requires that the client’s adapter support the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality. Not all adapter drivers support this; its emulation through I2C messaging relies on a specific mechanism (I2C_M_RECV_LEN) which may not be implemented.”…”�”}”(hjUƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KÛhj]‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ'i2c_smbus_write_block_data (C function)”Œc.i2c_smbus_write_block_data”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒis32 i2c_smbus_write_block_data (const struct i2c_client *client, u8 command, u8 length, const u8 *values)”h]”j©)�”}”(hŒhs32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command, u8 length, const u8 *values)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj‡ƒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj„ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j‰ƒŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_write_block_data”sbŒc.i2c_smbus_write_block_data”†”asbuh1hhj€ƒh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KóubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©ƒh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj€ƒh²hh³j¨ƒh´KóubjÒ)�”}”(hŒi2c_smbus_write_block_data”h]”jØ)�”}”(hj¥ƒh]”hŒi2c_smbus_write_block_data”…”�”}”(hj»ƒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj·ƒubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj€ƒh²hh³j¨ƒh´Kóubjó)�”}”(hŒJ(const struct i2c_client *client, u8 command, u8 length, const u8 *values)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjÖƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÒƒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãƒh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒƒubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjñƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÒƒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþƒh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒƒubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj „ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j„Œmodname”NŒ classname”NjVjY)�”}”j\]”j£ƒŒc.i2c_smbus_write_block_data”†”asbuh1hhjÒƒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-„h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒƒubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj;„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÒƒubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjH„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÒƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΃ubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjd„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hja„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jf„Œmodname”NŒ classname”NjVjY)�”}”j\]”j£ƒŒc.i2c_smbus_write_block_data”†”asbuh1hhj]„ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚„h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj]„ubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj]„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΃ubjù)�”}”(hŒ u8 length”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¬„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj©„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j®„Œmodname”NŒ classname”NjVjY)�”}”j\]”j£ƒŒc.i2c_smbus_write_block_data”†”asbuh1hhj¥„ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ„h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¥„ubjØ)�”}”(hŒlength”h]”hŒlength”…”�”}”(hjØ„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¥„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΃ubjù)�”}”(hŒconst u8 *values”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjñ„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjí„ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ„h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjí„ubh)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj …ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j…Œmodname”NŒ classname”NjVjY)�”}”j\]”j£ƒŒc.i2c_smbus_write_block_data”†”asbuh1hhjí„ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-…h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjí„ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj;…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjí„ubjØ)�”}”(hŒvalues”h]”hŒvalues”…”�”}”(hjH…h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjí„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΃ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj€ƒh²hh³j¨ƒh´Kóubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj|ƒh²hh³j¨ƒh´Kóubah}”(h]”jwƒah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j¨ƒh´Kóhjyƒh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "block write" protocol”h]”hŒ SMBus “block writeâ€� protocol”…”�”}”(hjr…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kóhjo…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjyƒh²hh³j¨ƒh´Kóubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjŠ…jLjŠ…jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXf**Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave ``u8 length`` Size of data block; SMBus allows at most 32 bytes ``const u8 *values`` Byte array which will be written. **Description** This executes the SMBus "block write" protocol, returning negative errno else zero on success.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj”…h]”hŒ Parameters”…”�”}”(hj–…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj’…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K÷hjŽ…ubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hj³…h]”hŒconst struct i2c_client *client”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kôhj­…ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjÌ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÈ…h´KôhjÉ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj­…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÈ…h´Kôhjª…ubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hjì…h]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kõhjæ…ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j†h´Kõhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjæ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j†h´Kõhjª…ubjv)�”}”(hŒ@``u8 length`` Size of data block; SMBus allows at most 32 bytes ”h]”(j|)�”}”(hŒ ``u8 length``”h]”j)�”}”(hj%†h]”hŒ u8 length”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Köhj†ubj–)�”}”(hhh]”hà)�”}”(hŒ1Size of data block; SMBus allows at most 32 bytes”h]”hŒ1Size of data block; SMBus allows at most 32 bytes”…”�”}”(hj>†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j:†h´Köhj;†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j:†h´Köhjª…ubjv)�”}”(hŒ7``const u8 *values`` Byte array which will be written. ”h]”(j|)�”}”(hŒ``const u8 *values``”h]”j)�”}”(hj^†h]”hŒconst u8 *values”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K÷hjX†ubj–)�”}”(hhh]”hà)�”}”(hŒ!Byte array which will be written.”h]”hŒ!Byte array which will be written.”…”�”}”(hjw†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³js†h´K÷hjt†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjX†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³js†h´K÷hjª…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjŽ…ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj™†h]”hŒ Description”…”�”}”(hj›†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj—†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KùhjŽ…ubhà)�”}”(hŒ^This executes the SMBus "block write" protocol, returning negative errno else zero on success.”h]”hŒbThis executes the SMBus “block writeâ€� protocol, returning negative errno else zero on success.”…”�”}”(hj¯†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KøhjŽ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œi2c_smbus_xfer (C function)”Œc.i2c_smbus_xfer”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ—s32 i2c_smbus_xfer (struct i2c_adapter *adapter, u16 addr, unsigned short flags, char read_write, u8 command, int protocol, union i2c_smbus_data *data)”h]”j©)�”}”(hŒ–s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr, unsigned short flags, char read_write, u8 command, int protocol, union i2c_smbus_data *data)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hjá†h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÞ†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jㆌmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_xfer”sbŒc.i2c_smbus_xfer”†”asbuh1hhjÚ†h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÚ†h²hh³j‡h´M ubjÒ)�”}”(hŒi2c_smbus_xfer”h]”jØ)�”}”(hjÿ†h]”hŒi2c_smbus_xfer”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‡ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjÚ†h²hh³j‡h´M ubjó)�”}”(hŒ„(struct i2c_adapter *adapter, u16 addr, unsigned short flags, char read_write, u8 command, int protocol, union i2c_smbus_data *data)”h]”(jù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj0‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj,‡ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=‡h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj,‡ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjN‡h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjK‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jP‡Œmodname”NŒ classname”NjVjY)�”}”j\]”jý†Œc.i2c_smbus_xfer”†”asbuh1hhj,‡ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl‡h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj,‡ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjz‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj,‡ubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj‡‡h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj,‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubjù)�”}”(hŒu16 addr”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj£‡h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj ‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j¥‡Œmodname”NŒ classname”NjVjY)�”}”j\]”jý†Œc.i2c_smbus_xfer”†”asbuh1hhjœ‡ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ‡h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjœ‡ubjØ)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjχh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjœ‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubjù)�”}”(hŒunsigned short flags”h]”(j¯)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjè‡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjä‡ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö‡h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjä‡ubj¯)�”}”(hŒshort”h]”hŒshort”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjä‡ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjä‡ubjØ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjä‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubjù)�”}”(hŒchar read_write”h]”(j¯)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj9ˆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5ˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGˆh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj5ˆubjØ)�”}”(hŒ read_write”h]”hŒ read_write”…”�”}”(hjUˆh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj5ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjqˆh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjnˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jsˆŒmodname”NŒ classname”NjVjY)�”}”j\]”jý†Œc.i2c_smbus_xfer”†”asbuh1hhjjˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ˆh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjjˆubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hj�ˆh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjjˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubjù)�”}”(hŒ int protocol”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶ˆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj²ˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjĈh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj²ˆubjØ)�”}”(hŒprotocol”h]”hŒprotocol”…”�”}”(hjÒˆh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj²ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubjù)�”}”(hŒunion i2c_smbus_data *data”h]”(jÿ)�”}”(hŒunion”h]”hŒunion”…”�”}”(hjëˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjçˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùˆh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjçˆubh)�”}”(hhh]”jØ)�”}”(hŒi2c_smbus_data”h]”hŒi2c_smbus_data”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j ‰Œmodname”NŒ classname”NjVjY)�”}”j\]”jý†Œc.i2c_smbus_xfer”†”asbuh1hhjçˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(‰h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjçˆubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj6‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjçˆubjØ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjC‰h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjçˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj(‡ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjÚ†h²hh³j‡h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjÖ†h²hh³j‡h´M ubah}”(h]”jцah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j‡h´M hjÓ†h²hubj*)�”}”(hhh]”hà)�”}”(hŒ!execute SMBus protocol operations”h]”hŒ!execute SMBus protocol operations”…”�”}”(hjm‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M hjj‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÓ†h²hh³j‡h´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj…‰jLj…‰jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXV**Parameters** ``struct i2c_adapter *adapter`` Handle to I2C bus ``u16 addr`` Address of SMBus slave on that bus ``unsigned short flags`` I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC) ``char read_write`` I2C_SMBUS_READ or I2C_SMBUS_WRITE ``u8 command`` Byte interpreted by slave, for protocols which use such bytes ``int protocol`` SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL ``union i2c_smbus_data *data`` Data to be read or written **Description** This executes an SMBus protocol operation, and returns a negative errno code else zero on success.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj�‰h]”hŒ Parameters”…”�”}”(hj‘‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj�‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mhj‰‰ubjq)�”}”(hhh]”(jv)�”}”(hŒ2``struct i2c_adapter *adapter`` Handle to I2C bus ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hj®‰h]”hŒstruct i2c_adapter *adapter”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mhj¨‰ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to I2C bus”h]”hŒHandle to I2C bus”…”�”}”(hjljh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÉh´Mhjĉubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¨‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÉh´Mhj¥‰ubjv)�”}”(hŒ0``u16 addr`` Address of SMBus slave on that bus ”h]”(j|)�”}”(hŒ ``u16 addr``”h]”j)�”}”(hjç‰h]”hŒu16 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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mhjá‰ubj–)�”}”(hhh]”hà)�”}”(hŒ"Address of SMBus slave on that bus”h]”hŒ"Address of SMBus slave on that bus”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jü‰h´Mhjý‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjá‰ube•³ih}”(h]”h ]”h"]”h$]”h&]”uh1juh³jü‰h´Mhj¥‰ubjv)�”}”(hŒM``unsigned short flags`` I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC) ”h]”(j|)�”}”(hŒ``unsigned short flags``”h]”j)�”}”(hj Šh]”hŒunsigned short flags”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjŠubj–)�”}”(hhh]”hà)�”}”(hŒ3I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)”h]”hŒ3I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)”…”�”}”(hj9Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j5Šh´Mhj6Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j5Šh´Mhj¥‰ubjv)�”}”(hŒ6``char read_write`` I2C_SMBUS_READ or I2C_SMBUS_WRITE ”h]”(j|)�”}”(hŒ``char read_write``”h]”j)�”}”(hjYŠh]”hŒchar read_write”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjSŠubj–)�”}”(hhh]”hà)�”}”(hŒ!I2C_SMBUS_READ or I2C_SMBUS_WRITE”h]”hŒ!I2C_SMBUS_READ or I2C_SMBUS_WRITE”…”�”}”(hjrŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jnŠh´MhjoŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjSŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jnŠh´Mhj¥‰ubjv)�”}”(hŒM``u8 command`` Byte interpreted by slave, for protocols which use such bytes ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hj’Šh]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjŒŠubj–)�”}”(hhh]”hà)�”}”(hŒ=Byte interpreted by slave, for protocols which use such bytes”h]”hŒ=Byte interpreted by slave, for protocols which use such bytes”…”�”}”(hj«Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j§Šh´Mhj¨Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjŒŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j§Šh´Mhj¥‰ubjv)�”}”(hŒR``int protocol`` SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL ”h]”(j|)�”}”(hŒ``int protocol``”h]”j)�”}”(hjËŠh]”hŒ int 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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjÅŠubj–)�”}”(hhh]”hà)�”}”(hŒ@SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL”h]”hŒ@SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL”…”�”}”(hjäŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jàŠh´MhjáŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÅŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jàŠh´Mhj¥‰ubjv)�”}”(hŒ:``union i2c_smbus_data *data`` Data to be read or written ”h]”(j|)�”}”(hŒ``union i2c_smbus_data *data``”h]”j)�”}”(hj‹h]”hŒunion i2c_smbus_data *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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjþŠubj–)�”}”(hhh]”hà)�”}”(hŒData to be read or written”h]”hŒData to be read or written”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j‹h´Mhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjþŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‹h´Mhj¥‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj‰‰ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj?‹h]”hŒ Description”…”�”}”(hjA‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj=‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mhj‰‰ubhà)�”}”(hŒbThis executes an SMBus protocol operation, and returns a negative errno code else zero on success.”h]”hŒbThis executes an SMBus protocol operation, and returns a negative errno code else zero on success.”…”�”}”(hjU‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mhj‰‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ6i2c_smbus_read_i2c_block_data_or_emulated (C function)”Œ+c.i2c_smbus_read_i2c_block_data_or_emulated”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒrs32 i2c_smbus_read_i2c_block_data_or_emulated (const struct i2c_client *client, u8 command, u8 length, u8 *values)”h]”j©)�”}”(hŒqs32 i2c_smbus_read_i2c_block_data_or_emulated(const struct i2c_client *client, u8 command, u8 length, u8 *values)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj‡‹h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj„‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j‰‹Œmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒ)i2c_smbus_read_i2c_block_data_or_emulated”sbŒ+c.i2c_smbus_read_i2c_block_data_or_emulated”†”asbuh1hhj€‹h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M|ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©‹h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj€‹h²hh³j¨‹h´M|ubjÒ)�”}”(hŒ)i2c_smbus_read_i2c_block_data_or_emulated”h]”jØ)�”}”(hj¥‹h]”hŒ)i2c_smbus_read_i2c_block_data_or_emulated”…”�”}”(hj»‹h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj·‹ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj€‹h²hh³j¨‹h´M|ubjó)�”}”(hŒD(const struct i2c_client *client, u8 command, u8 length, u8 *values)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjÖ‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÒ‹ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã‹h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒ‹ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjñ‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÒ‹ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ‹h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒ‹ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jŒŒmodname”NŒ classname”NjVjY)�”}”j\]”j£‹Œ+c.i2c_smbus_read_i2c_block_data_or_emulated”†”asbuh1hhjÒ‹ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Œh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒ‹ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj;Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÒ‹ubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjHŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÒ‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΋ubjù)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjdŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjaŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jfŒŒmodname”NŒ classname”NjVjY)�”}”j\]”j£‹Œ+c.i2c_smbus_read_i2c_block_data_or_emulated”†”asbuh1hhj]ŒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Œh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj]ŒubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj]Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΋ubjù)�”}”(hŒ u8 length”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¬Œh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj©Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j®ŒŒmodname”NŒ classname”NjVjY)�”}”j\]”j£‹Œ+c.i2c_smbus_read_i2c_block_data_or_emulated”†”asbuh1hhj¥ŒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊŒh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¥ŒubjØ)�”}”(hŒlength”h]”hŒlength”…”�”}”(hjØŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¥Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΋ubjù)�”}”(hŒ u8 *values”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjôŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjñŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jöŒŒmodname”NŒ classname”NjVjY)�”}”j\]”j£‹Œ+c.i2c_smbus_read_i2c_block_data_or_emulated”†”asbuh1hhjíŒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjíŒubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjíŒubjØ)�”}”(hŒvalues”h]”hŒvalues”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjíŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj΋ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj€‹h²hh³j¨‹h´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj|‹h²hh³j¨‹h´M|ubah}”(h]”jw‹ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j¨‹h´M|hjy‹h²hubj*)�”}”(hhh]”hà)�”}”(hŒread block or emulate”h]”hŒread block or emulate”…”�”}”(hjW�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M|hjT�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjy‹h²hh³j¨‹h´M|ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjo�jLjo�jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXn**Parameters** ``const struct i2c_client *client`` Handle to slave device ``u8 command`` Byte interpreted by slave ``u8 length`` Size of data block; SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes ``u8 *values`` Byte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes. **Description** This executes the SMBus "block read" protocol if supported by the adapter. If block read is not supported, it emulates it using either word or byte read protocols depending on availability. The addresses of the I2C slave device that are accessed with this function must be mapped to a linear region, so that a block read will have the same effect as a byte read. Before using this function you must double-check if the I2C slave does support exchanging a block transfer with a byte transfer.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hjy�h]”hŒ Parameters”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjw�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M€hjs�ubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hj˜�h]”hŒconst struct i2c_client *client”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M}hj’�ubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j­�h´M}hj®�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj’�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j­�h´M}hj��ubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hjÑ�h]”hŒ u8 command”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M~hjË�ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jæ�h´M~hjç�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjË�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jæ�h´M~hj��ubjv)�”}”(hŒQ``u8 length`` Size of data block; SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes ”h]”(j|)�”}”(hŒ ``u8 length``”h]”j)�”}”(hj Žh]”hŒ u8 length”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjŽubj–)�”}”(hhh]”hà)�”}”(hŒBSize of data block; SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes”h]”hŒBSize of data block; SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes”…”�”}”(hj#Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jŽh´Mhj Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jŽh´Mhj��ubjv)�”}”(hŒœ``u8 *values`` Byte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes. ”h]”(j|)�”}”(hŒ``u8 *values``”h]”j)�”}”(hjCŽh]”hŒ u8 *values”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M‚hj=Žubj–)�”}”(hhh]”hà)�”}”(hŒŒByte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes.”h]”hŒŒByte array into which data will be read; big enough to hold the data returned by the slave. SMBus allows at most I2C_SMBUS_BLOCK_MAX bytes.”…”�”}”(hj\Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M€hjYŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj=Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jXŽh´M‚hj��ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjs�ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjŽh]”hŒ Description”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj}Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M„hjs�ubhà)�”}”(hŒ½This executes the SMBus "block read" protocol if supported by the adapter. If block read is not supported, it emulates it using either word or byte read protocols depending on availability.”h]”hŒÁThis executes the SMBus “block readâ€� protocol if supported by the adapter. If block read is not supported, it emulates it using either word or byte read protocols depending on availability.”…”�”}”(hj•Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mƒhjs�ubhà)�”}”(hX-The addresses of the I2C slave device that are accessed with this function must be mapped to a linear region, so that a block read will have the same effect as a byte read. Before using this function you must double-check if the I2C slave does support exchanging a block transfer with a byte transfer.”h]”hX-The addresses of the I2C slave device that are accessed with this function must be mapped to a linear region, so that a block read will have the same effect as a byte read. Before using this function you must double-check if the I2C slave does support exchanging a block transfer with a byte transfer.”…”�”}”(hj¤Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M‡hjs�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ'i2c_new_smbus_alert_device (C function)”Œc.i2c_new_smbus_alert_device”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒqstruct i2c_client * i2c_new_smbus_alert_device (struct i2c_adapter *adapter, struct i2c_smbus_alert_setup *setup)”h]”j©)�”}”(hŒostruct i2c_client *i2c_new_smbus_alert_device(struct i2c_adapter *adapter, struct i2c_smbus_alert_setup *setup)”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÓŽh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÏŽh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MµubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáŽh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÏŽh²hh³jàŽh´Mµubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjòŽh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjïŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jôŽŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_new_smbus_alert_device”sbŒc.i2c_new_smbus_alert_device”†”asbuh1hhjÏŽh²hh³jàŽh´MµubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÏŽh²hh³jàŽh´Mµubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÏŽh²hh³jàŽh´MµubjÒ)�”}”(hŒi2c_new_smbus_alert_device”h]”jØ)�”}”(hj�h]”hŒi2c_new_smbus_alert_device”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj.�ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjÏŽh²hh³jàŽh´Mµubjó)�”}”(hŒB(struct i2c_adapter *adapter, struct i2c_smbus_alert_setup *setup)”h]”(jù)�”}”(hŒstruct i2c_adapter *adapter”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjI�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjI�ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjh�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jm�Œmodname”NŒ classname”NjVjY)�”}”j\]”j�Œc.i2c_new_smbus_alert_device”†”asbuh1hhjI�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjI�ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjI�ubjØ)�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjI�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjE�ubjù)�”}”(hŒ#struct i2c_smbus_alert_setup *setup”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj¹�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¹�ubh)�”}”(hhh]”jØ)�”}”(hŒi2c_smbus_alert_setup”h]”hŒi2c_smbus_alert_setup”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjØ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jÝ�Œmodname”NŒ classname”NjVjY)�”}”j\]”j�Œc.i2c_new_smbus_alert_device”†”asbuh1hhj¹�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¹�ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¹�ubjØ)�”}”(hŒsetup”h]”hŒsetup”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¹�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjE�ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjÏŽh²hh³jàŽh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjËŽh²hh³jàŽh´Mµubah}”(h]”jÆŽah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jàŽh´MµhjÈŽh²hubj*)�”}”(hhh]”hà)�”}”(hŒ&get ara client for SMBus alert support”h]”hŒ&get ara client for SMBus alert support”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Mµhj;�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÈŽh²hh³jàŽh´Mµubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjV�jLjV�jM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hX-**Parameters** ``struct i2c_adapter *adapter`` the target adapter ``struct i2c_smbus_alert_setup *setup`` setup data for the SMBus alert handler **Context** can sleep **Description** Setup handling of the SMBus alert protocol on a given I2C bus segment. Handling can be done either through our IRQ handler, or by the adapter (from its handler, periodic polling, or whatever). This returns the ara client, which should be saved for later use with i2c_handle_smbus_alert() and ultimately i2c_unregister_device(); or an ERRPTR to indicate an error.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj`�h]”hŒ Parameters”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj^�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M¹hjZ�ubjq)�”}”(hhh]”(jv)�”}”(hŒ3``struct i2c_adapter *adapter`` the target adapter ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adapter``”h]”j)�”}”(hj�h]”hŒstruct i2c_adapter *adapter”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M¶hjy�ubj–)�”}”(hhh]”hà)�”}”(hŒthe target adapter”h]”hŒthe target adapter”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j”�h´M¶hj•�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjy�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j”�h´M¶hjv�ubjv)�”}”(hŒO``struct i2c_smbus_alert_setup *setup`` setup data for the SMBus alert handler ”h]”(j|)�”}”(hŒ'``struct i2c_smbus_alert_setup *setup``”h]”j)�”}”(hj¸�h]”hŒ#struct i2c_smbus_alert_setup *setup”…”�”}”(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/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M·hj²�ubj–)�”}”(hhh]”hà)�”}”(hŒ&setup data for the SMBus alert handler”h]”hŒ&setup data for the SMBus alert handler”…”�”}”(hjÑ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÍ�h´M·hjÎ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj²�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÍ�h´M·hjv�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjZ�ubhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjó�h]”hŒContext”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjñ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M¹hjZ�ubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hj ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M¸hjZ�ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj‘h]”hŒ Description”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MºhjZ�ubhà)�”}”(hŒFSetup handling of the SMBus alert protocol on a given I2C bus segment.”h]”hŒFSetup handling of the SMBus alert protocol on a given I2C bus segment.”…”�”}”(hj0‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M¹hjZ�ubhà)�”}”(hŒyHandling can be done either through our IRQ handler, or by the adapter (from its handler, periodic polling, or whatever).”h]”hŒyHandling can be done either through our IRQ handler, or by the adapter (from its handler, periodic polling, or whatever).”…”�”}”(hj?‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M»hjZ�ubhà)�”}”(hŒ©This returns the ara client, which should be saved for later use with i2c_handle_smbus_alert() and ultimately i2c_unregister_device(); or an ERRPTR to indicate an error.”h]”hŒ©This returns the ara client, which should be saved for later use with i2c_handle_smbus_alert() and ultimately i2c_unregister_device(); or an ERRPTR to indicate an error.”…”�”}”(hjN‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M¾hjZ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubeh}”(h]”Œi2c-and-smbus-subsystem”ah ]”h"]”Œi2c and smbus subsystem”ah$]”h&]”uh1hµhhh²hh³hÞh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÞuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j�‘Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÞŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”ji‘jf‘sŒ nametypes”}”ji‘‰sh}”(jf‘h·j›j¤jfjkjëjðj‹ j� j+ j0 j¨ j­ j†j‹jÒj×j?jDj‘j–jÖjÛj¸j½jZ!j_!jò#j÷#j±'j¶'jþ)j*jâ+jç+jî-jó-jÒ/j×/jS1jX1jæ2jë2jè4jí4jò5j÷5jü6j7j“9j˜9ja;jf;j>j>j˜?j�?j BjBj�Dj’Dj¬Gj±GjÓJjØJj¡Lj¦LjÓNjØNjŠPj�Pj_RjdRj+Tj0Tj|Vj�VjïXjôXj?[jD[j×]jÜ]jX_j]_jbjbj¨dj­dj®gj³gjóijøijåkjêkj8nj=njŽpj“pjsj sj·tj¼tjçvjìvjyjyjÈ{jÍ{jø}jý}j©€j®€jwƒj|ƒjцjÖ†jw‹j|‹jÆŽjËŽuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.