€•Œ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´Mhjñ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´Mhjç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´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´Mhj9ubjv)�”}”(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´Mhj 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´Mhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j;h´Mhj9ubjv)�”}”(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´MhjYubj–)�”}”(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´Mhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jth´Mhj9ubjv)�”}”(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´Mhj’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´Mhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j­h´Mhj9ubjv)�”}”(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´MhjË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´Mhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jæh´Mhj9ubjv)�”}”(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´Mhjubj–)�”}”(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´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´Mhj9ubjv)�”}”(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´Mhj=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´MhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jXh´Mhj9ubjv)�”}”(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´Mhjvubj–)�”}”(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´Mhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‘h´Mhj9ubjv)�”}”(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´Mhj¯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´MhjÎ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´Mhj9ubeh}”(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´M 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´Mhh·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´M 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´MDhjh²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´MHhj=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´MJhj=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´M`hj=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´MFhjˆ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´MFhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j£h´MFhj…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´MGhjÁubj–)�”}”(hhh]”hà)�”}”(hŒ
- 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´MhjAubhà)�”}”(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´M0hjAubjq)�”}”(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´M"hjÿ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´M"hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jh´M"hj‰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´M#hjË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´M#hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jæh´M#hj‰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´Mhjubj–)�”}”(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´Mhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j-h´Mhj‰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´MhjLubj–)�”}”(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´Mhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jgh´Mhj‰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´M$hjVubj–)�”}”(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´M$hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jqh´M$hj‰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´M hjÖ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´M hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jñh´M hj‰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´M$hjubj–)�”}”(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´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&]”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´M(hh·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´M%hh·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´M)hh·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´M1ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÁh²hh³jÒh´M1ubjÒ)�”}”(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´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj½h²hh³jÒh´M1ubah}”(h]”j¸ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jÒh´M1hjº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´MYhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjºh²hh³jÒh´M1ubeh}”(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´M]hj# 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´M_hj# 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´Mehj# 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´M[hjn 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´M[hjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjn ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‰ h´M[hjk 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´M\hj§ 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´M\hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj§ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j h´M\hjk 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´M\hjà 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´M]hjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jû h´M\hjk 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à)�”}”(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´M]hh·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´MbubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju!h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjc!h²hh³jt!h´MbubjÒ)�”}”(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´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj_!h²hh³jt!h´Mbubah}”(h]”jZ!ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jt!h´Mbhj\!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´Mghj¦!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj\!h²hh³jt!h´Mbubeh}”(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´MkhjÅ!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´MmhjÅ!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´MxhjÅ!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´Mihj"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´Mihj,"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j+"h´Mihj "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´MjhjI"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´Mjhje"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjI"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jd"h´Mjhj "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´Mkhj‚"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´Mkhjž"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj‚"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�"h´Mkhj "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´Mlhj»"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´Mlhj×"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj»"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÖ"h´Mlhj "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´Mmhjô"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´Mmhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjô"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j#h´Mmhj "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´Mnhj-#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´MnhjI#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj-#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jH#h´Mnhj "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´Mphjf#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´Mohj‚#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjf#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�#h´Mphj "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´Mqhj #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 ]”h"]”h$]”h&]”uh1hßh³j»#h´Mqhj¼#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j»#h´Mqhj "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´MxubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjû#h²hh³j $h´MxubjÒ)�”}”(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´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj÷#h²hh³j $h´Mxubah}”(h]”jò#ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j $h´Mxhjô#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´Mhj>$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjô#h²hh³j $h´Mxubeh}”(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´Mƒhj]$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´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Œ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´M‚hj¨$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´M�hjÄ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¨$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÃ$h´M‚hj¥$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´M„hjâ$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´Mƒhjþ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjâ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jý$h´M„hj¥$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´M†hj%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´M…hj8%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j7%h´M†hj¥$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´M‰hjV%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´M‡hjr%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjV%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jq%h´M‰hj¥$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´MŽhjÊ%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´MŽhj¥$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´M3ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj*h²hh³j*h´M3ubjÒ)�”}”(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´M3ubjó)�”}”(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´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj*h²hh³j*h´M3ubah}”(h]”jþ)ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j*h´M3hj*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´M3hj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj*h²hh³j*h´M3ubeh}”(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´M7hj8+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´M4hjW+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´M4hjs+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjW+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jr+h´M4hjT+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´M5hj�+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´M5hj¬+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj�+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j«+h´M5hjT+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´MChj-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´MBhjt-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´MAhj�-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjt-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j�-h´MBhj8-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´MDhj-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´MDhj-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´MMubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷-h²hh³j .h´MMubjÒ)�”}”(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´MMubjó)�”}”(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´MMubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjó-h²hh³j .h´MMubah}”(h]”jî-ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j .h´MMhjð-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´MMhj /h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjð-h²hh³j .h´MMubeh}”(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´MQhj(/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´MNhjG/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´MNhjc/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjG/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jb/h´MNhjD/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´MOhj€/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´MOhjœ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj€/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j›/h´MOhjD/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´MYubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî/h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÛ/h²hh³jí/h´MYubjÒ)�”}”(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´MYubjó)�”}”(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´MYubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj×/h²hh³jí/h´MYubah}”(h]”jÒ/ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jí/h´MYhjÔ/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´MYhjœ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÔ/h²hh³jí/h´MYubeh}”(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´M]hj»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´MZhjÚ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´MZhjö0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÚ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jõ0h´MZhj×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´M\hj»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´M[hj»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´MjubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj\1h²hh³jn1h´MjubjÒ)�”}”(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´Mjubjó)�”}”(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´Mjubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjX1h²hh³jn1h´Mjubah}”(h]”jS1ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jn1h´MjhjU1h²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´Mjhj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjU1h²hh³jn1h´Mjubeh}”(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´Mnhj<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´Mkhj[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´Mkhjw2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj[2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jv2h´MkhjX2ubah}”(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´Mmhj<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´Mlhj<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ñu•h1jÑ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´M hj?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´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_find_device_by_fwnode”sbŒc.i2c_find_device_by_fwnode”†”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_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´M:ubjó)�”}”(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´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Œ!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´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 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´MiubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Bh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBh²hh³j%Bh´Miubh)�”}”(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´MiubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXBh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjBh²hh³j%Bh´Miubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjfBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjBh²hh³j%Bh´MiubjÒ)�”}”(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´Miubjó)�”}”(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´Miubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjBh²hh³j%Bh´Miubah}”(h]”j Bah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j%Bh´Mihj 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´MihjXCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj Bh²hh³j%Bh´Miubeh}”(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´MmhjwCubjq)�”}”(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´Mjhj–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´Mjhj²Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj–Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j±Ch´Mjhj“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´MkhjÏ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´MkhjëCubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÏCubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jêCh´Mkhj“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´MmhjwCubhà)�”}”(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´MlhjwCubhà)�”}”(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´MnhjwCubhà)�”}”(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´MmhjwCubhà)�”}”(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´MqhjwCubhà)�”}”(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´MvhjwCubeh}”(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–)�”}”(hh•h]”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´M hjHSubhà)�”}”(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´M hjHSubeh}”(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´MKubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGTh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj4Th²hh³jFTh´MKubjÒ)�”}”(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´MKubjó)�”}”(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´MKubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj0Th²hh³jFTh´MKubah}”(h]”j+Tah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jFTh´MKhj-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´MKhjeUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj-Th²hh³jFTh´MKubeh}”(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´MOhj„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´MLhj£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´MLhj¿Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj£Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¾Uh´MLhj 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´MMhjÜ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´MMhjøUubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÜUubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j÷Uh´MMhj 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´MOhj„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´MNhj„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´MPhj„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´MOhj„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´MkubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Vh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…Vh²hh³j–Vh´Mkubh)�”}”(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´MkubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉVh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj…Vh²hh³j–Vh´Mkubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj×Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj…Vh²hh³j–Vh´MkubjÒ)�”}”(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´Mkubjó)�”}”(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´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj�Vh²hh³j–Vh´Mkubah}”(h]”j|Vah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j–Vh´Mkhj~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´Mkhj�Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj~Vh²hh³j–Vh´Mkubeh}”(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. Note that i2c_get_adapter_by_fwnode(), which also takes a module reference, should almost always be used instead of this one.”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´Mohj 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´Mlhj¿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´MlhjÞ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´MlhjÞWubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÚWh´MlhjÛWubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj¿Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÚWh´Mlhj¼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´MmhjTXubhŒ 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´Mmhj 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´MphjªXubhŒ!) once done with the i2c adapter.”…”�”}”(hjªXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÑXh´Mphj Wubhà)�”}”(hŒ}Note that i2c_get_adapter_by_fwnode(), which also takes a module reference, should almost always be used instead of this one.”h]”hŒ}Note that i2c_get_adapter_by_fwnode(), which also takes a module reference, should almost always be used instead of this one.”…”�”}”(hjÜXh²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´Mrhj 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 Yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjYh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MŒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjYh²hh³jYh´MŒubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(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_get_adapter_by_fwnode”sbŒc.i2c_get_adapter_by_fwnode”†”asbuh1hhjYh²hh³jYh´MŒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKYh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjYh²hh³jYh´MŒubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjYYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjYh²hh³jYh´MŒubjÒ)�”}”(hŒi2c_get_adapter_by_fwnode”h]”jØ)�”}”(hjHYh]”hŒi2c_get_adapter_by_fwnode”…”�”}”(hjjYh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjfYubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjYh²hh³jYh´MŒubjó)�”}”(hŒ(struct fwnode_handle *fwnode)”h]”jù)�”}”(hŒstruct fwnode_handle *fwnode”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj…Yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj�YubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Yh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�Yubh)�”}”(hhh]”jØ)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(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\]”jFYŒc.i2c_get_adapter_by_fwnode”†”asbuh1hhj�YubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁYh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�Yubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjÏYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj�YubjØ)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjÜYh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�Yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj}Yubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjYh²hh³jYh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjYh²hh³jYh´MŒubah}”(h]”jþXah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jYh´MŒhjYh²hubj*)�”}”(hhh]”hà)�”}”(hŒ"find an i2c_adapter for the fwnode”h]”hŒ"find an i2c_adapter for the fwnode”…”�”}”(hjZh²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ŒhjZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjYh²hh³jYh´MŒubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjZjLjZjM‰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**, 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[)�”}”(hj(Zh]”hŒ Parameters”…”�”}”(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�hj"Zubjq)�”}”(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)�”}”(hjGZh]”hŒstruct fwnode_handle *fwnode”…”�”}”(hjIZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjEZubah}”(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�hjAZubj–)�”}”(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)�”}”(hjfZh]”hŒstruct fwnode_handle”…”�”}”(hjhZh²hh³Nh´Nubah}”(h]”h ]”(jjŒc-type”eh"]”h$]”h&]”uh1j hjdZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j&Œ refdomain”jŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jVjôj,Œ fwnode_handle”uh1hh³j\Zh´M�hj`ZubhŒ corresponding to 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³j\Zh´M�hj`Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j\Zh´M�hj]Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjAZubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j\Zh´M�hj>Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj"Zubhà)�”}”(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�hj"Zubhà)�”}”(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[h²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Žhj"Zubhà)�”}”(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’hj"Zubeh}”(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”…”�”}”(hj[[h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjW[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Œ ”…”�”}”(hjj[h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjW[h²hh³ji[h´M´ubjÒ)�”}”(hŒi2c_parse_fw_timings”h]”jØ)�”}”(hŒi2c_parse_fw_timings”h]”hŒi2c_parse_fw_timings”…”�”}”(hj|[h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjx[ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjW[h²hh³ji[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_)�”}”jRj~[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Œ ”…”�”}”(hjF\h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj\ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjT\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj\ubjØ)�”}”(hŒt”h]”hŒt”…”�”}”(hja\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”…”�”}”(hjz\h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjv\ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡\h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjv\ubjØ)�”}”(hŒ use_defaults”h]”hŒ use_defaults”…”�”}”(hj•\h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjv\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj�[ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjW[h²hh³ji[h´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjS[h²hh³ji[h´M´ubah}”(h]”jN[ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³ji[h´M´hjP[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)hjP[h²hh³ji[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)�”}”(hj9]h]”hŒstruct i2c_timings *t”…”�”}”(hj;]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7]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¶hj3]ubj–)�”}”(hhh]”hà)�”}”(hŒ/the i2c_timings struct to be filled with values”h]”hŒ/the i2c_timings struct to be filled with values”…”�”}”(hjR]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jN]h´M¶hjO]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj3]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jN]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)�”}”(hjr]h]”hŒbool use_defaults”…”�”}”(hjt]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjp]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¸hjl]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·hjˆ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjl]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j‡]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_update_timeout (C function)”Œc.i2c_update_timeout”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ�void i2c_update_timeout (struct i2c_adapter *adap, u32 bus_freq_hz, size_t len, unsigned int safety_coeff, unsigned int min_usec)”h]”j©)�”}”(hŒ€void i2c_update_timeout(struct i2c_adapter *adap, u32 bus_freq_hz, size_t len, unsigned int safety_coeff, unsigned int min_usec)”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´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_update_timeout”h]”jØ)�”}”(hŒi2c_update_timeout”h]”hŒi2c_update_timeout”…”�”}”(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Œi(struct i2c_adapter *adap, u32 bus_freq_hz, size_t len, unsigned int safety_coeff, unsigned int min_usec)”h]”(jù)�”}”(hŒstruct i2c_adapter *adap”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_)�”}”jRj^sbŒc.i2c_update_timeout”†”asbuh1hhj,^ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn^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Œu32 bus_freq_hz”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu32”h]”hŒu32”…”�”}”(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\]”jj^Œc.i2c_update_timeout”†”asbuh1hhjž^ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ^h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjž^ubjØ)�”}”(hŒ bus_freq_hz”h]”hŒ bus_freq_hz”…”�”}”(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Œ size_t len”h]”(h)�”}”(hhh]”jØ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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\]”jj^Œc.i2c_update_timeout”†”asbuh1hhjæ^ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjæ^ubjØ)�”}”(hŒlen”h]”hŒlen”…”�”}”(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 safety_coeff”h]”(j¯)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj2_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”…”�”}”(hjN_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Œ safety_coeff”h]”hŒ safety_coeff”…”�”}”(hjj_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 min_usec”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Œmin_usec”h]”hŒmin_usec”…”�”}”(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Œ8compute and set a dynamic transfer timeout on an adapter”h]”hŒ8compute and set a dynamic transfer timeout on an adapter”…”�”}”(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è]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 i2c_adapter whose timeout field will be updated ``u32 bus_freq_hz`` I2C bus clock frequency in Hz ``size_t len`` transfer length in bytes ``unsigned int safety_coeff`` multiplier applied over the theoretical wire time ``unsigned int min_usec`` minimum timeout floor in microseconds **Description** Computes a transfer-specific timeout from the message length and bus frequency, applies a safety multiplier and a minimum floor, then stores the result in adap->timeout (in jiffies). The caller supplies the policy constants so they remain internal to the driver. A timeout explicitly configured by userspace via the I2C_TIMEOUT ioctl always takes precedence; the computed value is used only when userspace has not configured one.”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ŒQ``struct i2c_adapter *adap`` the i2c_adapter whose timeout field will be updated ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hj&`h]”hŒstruct i2c_adapter *adap”…”�”}”(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Œ3the i2c_adapter whose timeout field will be updated”h]”hŒ3the i2c_adapter whose timeout field will be updated”…”�”}”(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Œ2``u32 bus_freq_hz`` I2C bus clock frequency in Hz ”h]”(j|)�”}”(hŒ``u32 bus_freq_hz``”h]”j)�”}”(hj_`h]”hŒu32 bus_freq_hz”…”�”}”(hja`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âhjY`ubj–)�”}”(hhh]”hà)�”}”(hŒI2C bus clock frequency in Hz”h]”hŒI2C bus clock frequency in Hz”…”�”}”(hjx`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jt`h´Mâhju`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjY`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jt`h´Mâhj`ubjv)�”}”(hŒ(``size_t len`` transfer length in bytes ”h]”(j|)�”}”(hŒ``size_t len``”h]”j)�”}”(hj˜`h]”hŒ size_t len”…”�”}”(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Œtransfer length in bytes”h]”hŒtransfer length in bytes”…”�”}”(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ŒP``unsigned int safety_coeff`` multiplier applied over the theoretical wire time ”h]”(j|)�”}”(hŒ``unsigned int safety_coeff``”h]”j)�”}”(hjÑ`h]”hŒunsigned int safety_coeff”…”�”}”(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Œ1multiplier applied over the theoretical wire time”h]”hŒ1multiplier applied over the theoretical wire time”…”�”}”(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Œ@``unsigned int min_usec`` minimum timeout floor in microseconds ”h]”(j|)�”}”(hŒ``unsigned int min_usec``”h]”j)�”}”(hj ah]”hŒunsigned int min_usec”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjaubah}”(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Œ%minimum timeout floor in microseconds”h]”hŒ%minimum timeout floor in microseconds”…”�”}”(hj#ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jah´Måhj aubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jah´Måhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj`ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjEah]”hŒ Description”…”�”}”(hjGah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjCaubah}”(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à)�”}”(hXComputes a transfer-specific timeout from the message length and bus frequency, applies a safety multiplier and a minimum floor, then stores the result in adap->timeout (in jiffies). The caller supplies the policy constants so they remain internal to the driver.”h]”hXComputes a transfer-specific timeout from the message length and bus frequency, applies a safety multiplier and a minimum floor, then stores the result in adap->timeout (in jiffies). The caller supplies the policy constants so they remain internal to the driver.”…”�”}”(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Œ¦A timeout explicitly configured by userspace via the I2C_TIMEOUT ioctl always takes precedence; the computed value is used only when userspace has not configured one.”h]”hŒ¦A timeout explicitly configured by userspace via the I2C_TIMEOUT ioctl always takes precedence; the computed value is used only when userspace has not configured one.”…”�”}”(hjjah²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™ah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•ah²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´MGubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ah²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj•ah²hh³j§ah´MGubjÒ)�”}”(hŒi2c_del_driver”h]”jØ)�”}”(hŒi2c_del_driver”h]”hŒi2c_del_driver”…”�”}”(hjºah²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¶aubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj•ah²hh³j§ah´MGubjó)�”}”(hŒ(struct i2c_driver *driver)”h]”jù)�”}”(hŒstruct i2c_driver *driver”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjÖah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÒaubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãah²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒaubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_driver”h]”hŒ i2c_driver”…”�”}”(hjôah²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjñaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jöaŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj¼asbŒc.i2c_del_driver”†”asbuh1hhjÒaubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÒaubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj"bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÒaubjØ)�”}”(hŒdriver”h]”hŒdriver”…”�”}”(hj/bh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÒaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjÎaubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj•ah²hh³j§ah´MGubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj‘ah²hh³j§ah´MGubah}”(h]”jŒaah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j§ah´MGhjŽah²hubj*)�”}”(hhh]”hà)�”}”(hŒunregister I2C driver”h]”hŒunregister I2C driver”…”�”}”(hjYbh²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´MGhjVbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjŽah²hh³j§ah´MGubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjqbjLjqbjM‰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{bh]”hŒ Parameters”…”�”}”(hj}bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjybubah}”(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´MKhjububjq)�”}”(hhh]”jv)�”}”(hŒ<``struct i2c_driver *driver`` the driver being unregistered ”h]”(j|)�”}”(hŒ``struct i2c_driver *driver``”h]”j)�”}”(hjšbh]”hŒstruct i2c_driver *driver”…”�”}”(hjœbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜bubah}”(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´MHhj”bubj–)�”}”(hhh]”hà)�”}”(hŒthe driver being unregistered”h]”hŒthe driver being unregistered”…”�”}”(hj³bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j¯bh´MHhj°bubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj”bubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¯bh´MHhj‘bubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjububhà)�”}”(hŒ **Context**”h]”j[)�”}”(hjÕbh]”hŒContext”…”�”}”(hj×bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÓbubah}”(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´MJhjububhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hjëbh²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´MIhjububeh}”(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”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjch²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)ch²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjch²hh³j(ch´MñubjÒ)�”}”(hŒ__i2c_transfer”h]”jØ)�”}”(hŒ__i2c_transfer”h]”hŒ__i2c_transfer”…”�”}”(hj;ch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj7cubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjch²hh³j(ch´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”…”�”}”(hjWch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjScubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdch²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjScubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjuch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjrcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jwcŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj=csbŒc.__i2c_transfer”†”asbuh1hhjScubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•ch²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjScubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj£ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjScubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hj°ch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjScubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjOcubjù)�”}”(hŒstruct i2c_msg *msgs”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(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Åcubh)�”}”(hhh]”jØ)�”}”(hŒi2c_msg”h]”hŒi2c_msg”…”�”}”(hjçch²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjäcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jécŒmodname”NŒ classname”NjVjY)�”}”j\]”j‘cŒc.__i2c_transfer”†”asbuh1hhjÅcubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÅcubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÅcubjØ)�”}”(hŒmsgs”h]”hŒmsgs”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÅcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjOcubjù)�”}”(hŒint num”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hj9dh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5dubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGdh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj5dubjØ)�”}”(hŒnum”h]”hŒnum”…”�”}”(hjUdh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj5dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjOcubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjch²hh³j(ch´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjch²hh³j(ch´Mñubah}”(h]”j cah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j(ch´Mñhjch²hubj*)�”}”(hhh]”hà)�”}”(hŒunlocked flavor of i2c_transfer”h]”hŒunlocked flavor of i2c_transfer”…”�”}”(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ñhj|dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjch²hh³j(ch´Mñubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj—djLj—djM‰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¡dh]”hŒ Parameters”…”�”}”(hj£dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjŸdubah}”(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›dubjq)�”}”(hhh]”(jv)�”}”(hŒ/``struct i2c_adapter *adap`` Handle to I2C bus ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hjÀdh]”hŒstruct i2c_adapter *adap”…”�”}”(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ŒHandle to I2C bus”h]”hŒHandle to I2C bus”…”�”}”(hjÙdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jÕdh´MòhjÖdubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjºdubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÕdh´Mòhj·dubjv)�”}”(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ùdh]”hŒstruct i2c_msg *msgs”…”�”}”(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Œ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.”…”�”}”(hjeh²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óhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjódubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jeh´Môhj·dubjv)�”}”(hŒ/``int num`` Number of messages to be executed. ”h]”(j|)�”}”(hŒ ``int num``”h]”j)�”}”(hj3eh]”hŒint num”…”�”}”(hj5eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1eubah}”(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-eubj–)�”}”(hhh]”hà)�”}”(hŒ"Number of messages to be executed.”h]”hŒ"Number of messages to be executed.”…”�”}”(hjLeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jHeh´MõhjIeubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj-eubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jHeh´Mõhj·dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj›dubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjneh]”hŒ Description”…”�”}”(hjpeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjleubah}”(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›dubhà)�”}”(hŒ=Returns negative errno, else the number of messages executed.”h]”hŒ=Returns negative errno, else the number of messages executed.”…”�”}”(hj„eh²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›dubhà)�”}”(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“eh²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›dubeh}”(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Âeh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¾eh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´M9 ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑeh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¾eh²hh³jÐeh´M9 ubjÒ)�”}”(hŒ i2c_transfer”h]”jØ)�”}”(hŒ i2c_transfer”h]”hŒ i2c_transfer”…”�”}”(hjãeh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjßeubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj¾eh²hh³jÐeh´M9 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ÿeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjûeubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjûeubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jfŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRjåesbŒc.i2c_transfer”†”asbuh1hhjûeubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=fh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjûeubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjKfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjûeubjØ)�”}”(hŒadap”h]”hŒadap”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjûeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj÷eubjù)�”}”(hŒstruct i2c_msg *msgs”h]”(jÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjqfh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjmfubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~fh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjmfubh)�”}”(hhh]”jØ)�”}”(hŒi2c_msg”h]”hŒi2c_msg”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjŒfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j‘fŒmodname”NŒ classname”NjVjY)�”}”j\]”j9fŒc.i2c_transfer”†”asbuh1hhjmfubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­fh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjmfubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj»fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjmfubjØ)�”}”(hŒmsgs”h]”hŒmsgs”…”�”}”(hjÈfh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjmfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj÷eubjù)�”}”(hŒint num”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjáfh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÝfubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïfh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÝfubjØ)�”}”(hŒnum”h]”hŒnum”…”�”}”(hjýfh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÝfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhj÷eubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj¾eh²hh³jÐeh´M9 ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjºeh²hh³jÐeh´M9 ubah}”(h]”jµeah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jÐeh´M9 hj·eh²hubj*)�”}”(hhh]”hà)�”}”(hŒ(execute a single or combined I2C message”h]”hŒ(execute a single or combined I2C message”…”�”}”(hj'gh²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´M9 hj$gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj·eh²hh³jÐeh´M9 ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj?gjLj?gjM‰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[)�”}”(hjIgh]”hŒ Parameters”…”�”}”(hjKgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjGgubah}”(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= hjCgubjq)�”}”(hhh]”(jv)�”}”(hŒ/``struct i2c_adapter *adap`` Handle to I2C bus ”h]”(j|)�”}”(hŒ``struct i2c_adapter *adap``”h]”j)�”}”(hjhgh]”hŒstruct i2c_adapter *adap”…”�”}”(hjjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjfgubah}”(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: hjbgubj–)�”}”(hhh]”hà)�”}”(hŒHandle to I2C bus”h]”hŒHandle to I2C bus”…”�”}”(hj�gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j}gh´M: hj~gubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjbgubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j}gh´M: hj_gubjv)�”}”(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¡gh]”hŒstruct i2c_msg *msgs”…”�”}”(hj£gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŸgubah}”(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›gubj–)�”}”(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ºgh²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·gubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj›gubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j¶gh´M< hj_gubjv)�”}”(hŒ/``int num`` Number of messages to be executed. ”h]”(j|)�”}”(hŒ ``int num``”h]”j)�”}”(hjÛgh]”hŒint num”…”�”}”(hjÝgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙgubah}”(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Õgubj–)�”}”(hhh]”hà)�”}”(hŒ"Number of messages to be executed.”h]”hŒ"Number of messages to be executed.”…”�”}”(hjôgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jðgh´M= hjñgubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÕgubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jðgh´M= hj_gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjCgubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjhh]”hŒ Description”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjhubah}”(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? hjCgubhà)�”}”(hŒ=Returns negative errno, else the number of messages executed.”h]”hŒ=Returns negative errno, else the number of messages executed.”…”�”}”(hj,hh²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> hjCgubhà)�”}”(hŒ~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Œ~Note that there is no requirement that each message be sent to the same slave address, although that is the most common model.”…”�”}”(hj;hh²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@ hjCgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jPhh·h²hh³Nh´Nubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j™Œ&i2c_transfer_buffer_flags (C function)”Œc.i2c_transfer_buffer_flags”hNt”auh1jŒhh·h²hh³Nh´Nubjž)�”}”(hhh]”(j£)�”}”(hŒ`int i2c_transfer_buffer_flags (const struct i2c_client *client, char *buf, int count, u16 flags)”h]”j©)�”}”(hŒ_int i2c_transfer_buffer_flags(const struct i2c_client *client, char *buf, int count, u16 flags)”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjjhh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjfhh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:44: ./drivers/i2c/i2c-core-base.c”h´Md ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyhh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjfhh²hh³jxhh´Md ubjÒ)�”}”(hŒi2c_transfer_buffer_flags”h]”jØ)�”}”(hŒi2c_transfer_buffer_flags”h]”hŒi2c_transfer_buffer_flags”…”�”}”(hj‹hh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj‡hubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjfhh²hh³jxhh´Md ubjó)�”}”(hŒB(const struct i2c_client *client, char *buf, int count, u16 flags)”h]”(jù)�”}”(hŒconst struct i2c_client *client”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ÿ)�”}”(hjh]”hŒstruct”…”�”}”(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£hubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjàhh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÝhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jâhŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRj�hsbŒc.i2c_transfer_buffer_flags”†”asbuh1hhj£hubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj£hubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj£hubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj£hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjŸhubjù)�”}”(hŒ char *buf”h]”(j¯)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj4ih²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj0iubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBih²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj0iubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjPih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj0iubjØ)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj]ih²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj0iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjŸhubjù)�”}”(hŒ int count”h]”(j¯)�”}”(hŒint”h]”hŒint”…”�”}”(hjvih²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjriubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ih²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjriubjØ)�”}”(hŒcount”h]”hŒcount”…”�”}”(hj’ih²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjriubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjŸhubjù)�”}”(hŒ u16 flags”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj®ih²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj«iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j°iŒmodname”NŒ classname”NjVjY)�”}”j\]”jühŒc.i2c_transfer_buffer_flags”†”asbuh1hhj§iubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌih²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj§iubjØ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÚih²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj§iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjŸhubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjfhh²hh³jxhh´Md ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjbhh²hh³jxhh´Md ubah}”(h]”j]hah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jxhh´Md hj_hh²hubj*)�”}”(hhh]”hà)�”}”(hŒ=issue a single I2C message transferring data to/from a buffer”h]”hŒ=issue a single I2C message transferring data to/from a buffer”…”�”}”(hjjh²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´Md hjjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj_hh²hh³jxhh´Md ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjjjLjjjM‰jN‰jO‰uh1j�h²hhh·h³Nh´NubjQ)�”}”(hXp**Parameters** ``const struct i2c_client *client`` Handle to slave device ``char *buf`` Where the data is stored ``int count`` How many bytes to transfer, must be less than 64k since msg.len is u16 ``u16 flags`` The flags to be used for the message, e.g. I2C_M_RD for reads **Description** Returns negative errno, or else the number of bytes transferred.”h]”(hà)�”}”(hŒ**Parameters**”h]”j[)�”}”(hj&jh]”hŒ Parameters”…”�”}”(hj(jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj$jubah}”(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´Mh hj jubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjEjh]”hŒconst struct i2c_client *client”…”�”}”(hjGjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjCjubah}”(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´Mf hj?jubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hj^jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jZjh´Mf hj[jubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj?jubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jZjh´Mf hjbuf 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[)�”}”(hjúph]”hŒ Parameters”…”�”}”(hjüph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjøpubah}”(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ôpubjq)�”}”(hhh]”(jv)�”}”(hŒ2``struct i2c_msg *msg`` the message to be checked ”h]”(j|)�”}”(hŒ``struct i2c_msg *msg``”h]”j)�”}”(hjqh]”hŒstruct i2c_msg *msg”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubah}”(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š hjqubj–)�”}”(hhh]”hà)�”}”(hŒthe message to be checked”h]”hŒthe message to be checked”…”�”}”(hj2qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j.qh´Mš hj/qubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j.qh´Mš hjqubjv)�”}”(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)�”}”(hjRqh]”hŒunsigned int threshold”…”�”}”(hjTqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPqubah}”(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œ hjLqubj–)�”}”(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.”…”�”}”(hjkqh²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› hjhqubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjLqubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jgqh´Mœ hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjôpubhà)�”}”(hŒ **Return**”h]”j[)�”}”(hjŽqh]”hŒReturn”…”�”}”(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ž hjôpubhà)�”}”(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¤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ž hjôpubhà)�”}”(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¢ hjôpubhà)�”}”(hŒ7This function must only be called from process context!”h]”hŒ7This function must only be called from process context!”…”�”}”(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¡ hjôpubeh}”(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”…”�”}”(hjúqh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjöqh²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 rh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjöqh²hh³jrh´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”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjrubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjöqh²hh³jrh´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:rh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj7rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”juubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jCuŒmodname”NŒ classname”NjVjY)�”}”j\]”jotŒc.i2c_smbus_pec”†”asbuh1hhj:uubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_uh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj:uubjØ)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjmuh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj:uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjštubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjLth²hh³jtth´K+ubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjHth²hh³jtth´K+ubah}”(h]”jCtah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jtth´K+hjEth²hubj*)�”}”(hhh]”hà)�”}”(hŒ0Incremental CRC8 over the given input data array”h]”hŒ0Incremental CRC8 over the given input data array”…”�”}”(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´K+hj”uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjEth²hh³jtth´K+ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj¯ujLj¯ujM‰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[)�”}”(hj¹uh]”hŒ Parameters”…”�”}”(hj»uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj·uubah}”(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³uubjq)�”}”(hhh]”(jv)�”}”(hŒ&``u8 crc`` previous return crc8 value ”h]”(j|)�”}”(hŒ ``u8 crc``”h]”j)�”}”(hjØuh]”hŒu8 crc”…”�”}”(hjÚuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖuubah}”(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Òuubj–)�”}”(hhh]”hà)�”}”(hŒprevious return crc8 value”h]”hŒprevious return crc8 value”…”�”}”(hjñuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jíuh´K,hjîuubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjÒuubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jíuh´K,hjÏuubjv)�”}”(hŒ"``u8 *p`` pointer to data buffer. ”h]”(j|)�”}”(hŒ ``u8 *p``”h]”j)�”}”(hjvh]”hŒu8 *p”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´K-hj vubj–)�”}”(hhh]”hà)�”}”(hŒpointer to data buffer.”h]”hŒpointer to data buffer.”…”�”}”(hj*vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j&vh´K-hj'vubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj vubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j&vh´K-hjÏuubjv)�”}”(hŒ1``size_t count`` number of bytes in data buffer. ”h]”(j|)�”}”(hŒ``size_t count``”h]”j)�”}”(hjJvh]”hŒ size_t count”…”�”}”(hjLvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHvubah}”(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.hjDvubj–)�”}”(hhh]”hà)�”}”(hŒnumber of bytes in data buffer.”h]”hŒnumber of bytes in data buffer.”…”�”}”(hjcvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j_vh´K.hj`vubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjDvubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j_vh´K.hjÏuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphj³uubhà)�”}”(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´K0hj³uubhà)�”}”(hŒ>Incremental 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›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´K/hj³uubeh}”(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”…”�”}”(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”sbŒc.i2c_smbus_read_byte”†”asbuh1hhjÆvh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KaubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïvh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÆvh²hh³jîvh´KaubjÒ)�”}”(hŒi2c_smbus_read_byte”h]”jØ)�”}”(hjëvh]”hŒi2c_smbus_read_byte”…”�”}”(hjwh²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´Kaubjó)�”}”(hŒ!(const struct i2c_client *client)”h]”jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)wh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjwubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj7wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDwh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjwubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjUwh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjRwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jWwŒmodname”NŒ classname”NjVjY)�”}”j\]”jévŒc.i2c_smbus_read_byte”†”asbuh1hhjwubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjswh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjwubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjwubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjŽwh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjwubah}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjÆvh²hh³jîvh´Kaubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjÂvh²hh³jîvh´Kaubah}”(h]”j½vah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jîvh´Kahj¿vh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "receive byte" protocol”h]”hŒ!SMBus “receive byteâ€� protocol”…”�”}”(hj¸wh²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´Kahjµwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj¿vh²hh³jîvh´Kaubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjÐwjLjÐwjM‰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Úwh]”hŒ Parameters”…”�”}”(hjÜwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjØwubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KehjÔwubjq)�”}”(hhh]”jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjùwh]”hŒconst struct i2c_client *client”…”�”}”(hjûwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷wubah}”(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ówubj–)�”}”(hhh]”hà)�”}”(hŒHandle to slave device”h]”hŒHandle to slave device”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jxh´Kbhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjówubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jxh´Kbhjðwubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjÔwubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hj4xh]”hŒ Description”…”�”}”(hj6xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj2xubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KdhjÔwubhà)�”}”(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.”…”�”}”(hjJxh²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´KchjÔwubeh}”(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|xh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjyxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j~xŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_write_byte”sbŒc.i2c_smbus_write_byte”†”asbuh1hhjuxh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KtubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžxh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjuxh²hh³j�xh´KtubjÒ)�”}”(hŒi2c_smbus_write_byte”h]”jØ)�”}”(hjšxh]”hŒi2c_smbus_write_byte”…”�”}”(hj°xh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¬xubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhjuxh²hh³j�xh´Ktubjó)�”}”(hŒ+(const struct i2c_client *client, u8 value)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjËxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÇxubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØxh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÇxubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjÇxubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóxh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÇxubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(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˜xŒc.i2c_smbus_write_byte”†”asbuh1hhjÇxubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"yh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÇxubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj0yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÇxubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hj=yh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÇxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjÃxubjù)�”}”(hŒu8 value”h]”(h)�”}”(hhh]”jØ)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjYyh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjVyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j[yŒmodname”NŒ classname”NjVjY)�”}”j\]”j˜xŒc.i2c_smbus_write_byte”†”asbuh1hhjRyubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwyh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjRyubjØ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj…yh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjRyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjÃxubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjuxh²hh³j�xh´Ktubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjqxh²hh³j�xh´Ktubah}”(h]”jlxah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³j�xh´Kthjnxh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "send byte" protocol”h]”hŒSMBus “send byteâ€� protocol”…”�”}”(hj¯yh²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¬yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjnxh²hh³j�xh´Ktubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjÇyjLjÇyjM‰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[)�”}”(hjÑyh]”hŒ Parameters”…”�”}”(hjÓyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÏyubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KxhjËyubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjðyh]”hŒconst struct i2c_client *client”…”�”}”(hjòyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjîyubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kuhjêyubj–)�”}”(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³jzh´Kuhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjêyubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jzh´Kuhjçyubjv)�”}”(hŒ``u8 value`` Byte to be sent ”h]”(j|)�”}”(hŒ ``u8 value``”h]”j)�”}”(hj)zh]”hŒu8 value”…”�”}”(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´Kvhj#zubj–)�”}”(hhh]”hà)�”}”(hŒByte to be sent”h]”hŒByte to be sent”…”�”}”(hjBzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j>zh´Kvhj?zubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj#zubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j>zh´Kvhjçyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjËyubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjdzh]”hŒ Description”…”�”}”(hjfzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjbzubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KxhjËyubhà)�”}”(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.”…”�”}”(hjzzh²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´KwhjËyubeh}”(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¬zh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj©zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j®zŒmodname”NŒ classname”NjVjY)�”}”j\]”j_)�”}”jRŒi2c_smbus_read_byte_data”sbŒc.i2c_smbus_read_byte_data”†”asbuh1hhj¥zh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´KƒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎzh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj¥zh²hh³jÍzh´KƒubjÒ)�”}”(hŒi2c_smbus_read_byte_data”h]”jØ)�”}”(hjÊzh]”hŒi2c_smbus_read_byte_data”…”�”}”(hjàzh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÜzubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj¥zh²hh³jÍzh´Kƒubjó)�”}”(hŒ-(const struct i2c_client *client, u8 command)”h]”(jù)�”}”(hŒconst struct i2c_client *client”h]”(jÿ)�”}”(hjh]”hŒconst”…”�”}”(hjûzh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj÷zubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷zubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj÷zubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#{h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷zubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hj4{h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj1{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”j6{Œmodname”NŒ classname”NjVjY)�”}”j\]”jÈzŒc.i2c_smbus_read_byte_data”†”asbuh1hhj÷zubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR{h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj÷zubjs)�”}”(hjvh]”hŒ*”…”�”}”(hj`{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj÷zubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjm{h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj÷zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjózubjù)�”}”(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ÈzŒc.i2c_smbus_read_byte_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ózubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhj¥zh²hh³jÍzh´Kƒubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj¡zh²hh³jÍzh´Kƒubah}”(h]”jœzah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jÍzh´Kƒhjžzh²hubj*)�”}”(hhh]”hà)�”}”(hŒSMBus "read byte" protocol”h]”hŒSMBus “read byteâ€� 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žzh²hh³jÍzh´Kƒubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKj÷{jLj÷{jM‰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[)�”}”(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”…”�”}”(hj9|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j5|h´K„hj6|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j5|h´K„hj|ubjv)�”}”(hŒ)``u8 command`` Byte interpreted by slave ”h]”(j|)�”}”(hŒ``u8 command``”h]”j)�”}”(hjY|h]”hŒ u8 command”…”�”}”(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´K…hjS|ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hjr|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jn|h´K…hjo|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjS|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jn|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Œ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ª|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_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Ü|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_byte_data”sbŒc.i2c_smbus_write_byte_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_byte_data”h]”jØ)�”}”(hjú|h]”hŒi2c_smbus_write_byte_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Œ7(const struct i2c_client *client, u8 command, u8 value)”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Œ ”…”�”}”(hj8}h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj'}ubjÿ)�”}”(hjh]”hŒstruct”…”�”}”(hjF}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj'}ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS}h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj'}ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(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_byte_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_write_byte_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 value”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_byte_data”†”asbuh1hhjú}ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjú}ubjØ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(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 "write byte" protocol”h]”hŒSMBus “write byteâ€� protocol”…”�”}”(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´K—hjT~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hjÎ|h²hh³jý|h´K—ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjo~jLjo~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 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[)�”}”(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´K›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´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 value`` Byte being written ”h]”(j|)�”}”(hŒ ``u8 value``”h]”j)�”}”(hj h]”hŒu8 value”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´Kšhjubj–)�”}”(hhh]”hà)�”}”(hŒByte being written”h]”hŒByte being written”…”�”}”(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šhj�~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjs~ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjEh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjCubah}”(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œhjs~ubhà)�”}”(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›hjs~ubeh}”(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Œ ”…”�”}”(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_word_data”†”asbuh1hhjØubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3€h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjØubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjA€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjØubjØ)�”}”(hŒclient”h]”hŒclient”…”�”}”(hjN€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”…”�”}”(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©Œc.i2c_smbus_read_word_data”†”asbuh1hhjc€ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ€h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjc€ubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hj–€h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjc€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«hjh²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)hjh²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)�”}”(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 hj8�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­hj4�ubj–)�”}”(hhh]”hà)�”}”(hŒByte interpreted by slave”h]”hŒByte interpreted by slave”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jO�h´K­hjP�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj4�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jO�h´K­hjø€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjÜ€ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hju�h]”hŒ Description”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjs�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×hjí�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”…”�”}”(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Œ ”…”�”}”(hj4‚h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj‚ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(hjE‚h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjB‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jRŒ reftarget”jG‚Œmodname”NŒ classname”NjVjY)�”}”j\]”jÙ�Œc.i2c_smbus_write_word_data”†”asbuh1hhj‚ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc‚h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj‚ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjq‚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_write_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‚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Œ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjÛ‚ubjØ)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(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 "write word" protocol”h]”hŒSMBus “write wordâ€� protocol”…”�”}”(hj8ƒ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¿hj5ƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj¯�h²hh³jÞ�h´K¿ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jJjjKjPƒjLjPƒ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[)�”}”(hjZƒh]”hŒ Parameters”…”�”}”(hj\ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjXƒ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ÃhjTƒubjq)�”}”(hhh]”(jv)�”}”(hŒ;``const struct i2c_client *client`` Handle to slave device ”h]”(j|)�”}”(hŒ#``const struct i2c_client *client``”h]”j)�”}”(hjyƒh]”hŒconst struct i2c_client *client”…”�”}”(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´KÀhjsƒ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•hjsƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jŽƒh´KÀhjpƒ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Áhjpƒubjv)�”}”(hŒ*``u16 value`` 16-bit "word" being written ”h]”(j|)�”}”(hŒ ``u16 value``”h]”j)�”}”(hjëƒh]”hŒ u16 value”…”�”}”(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Œ16-bit "word" being written”h]”hŒ16-bit “wordâ€� being written”…”�”}”(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Âhjpƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjTƒ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ÄhjTƒ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ÃhjTƒ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Œds32 __i2c_smbus_read_block_data (const struct i2c_client *client, u8 command, u8 length, u8 *values)”h]”j©)�”}”(hŒcs32 __i2c_smbus_read_block_data(const struct i2c_client *client, u8 command, u8 length, u8 *values)”h]”(h)�”}”(hhh]”jØ)�”}”(hŒs32”h]”hŒs32”…”�”}”(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_)�”}”jRŒ__i2c_smbus_read_block_data”sbŒc.__i2c_smbus_read_block_data”†”asbuh1hhjg„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Àhjg„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Ñhjg„h²hh³j�„h´KÓ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_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”…”�”}”(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”…”�”}”(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_smbus_read_block_data”†”asbuh1hhjD…ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji…h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjD…ubjØ)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjw…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Œ 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_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Œ 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òhjg„h²hh³j�„h´KÓubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhjc„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”…”�”}”(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&]”jJjjKjV†jLjV†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 length`` size of the **values** array. SMBus allows at most 32 bytes ``u8 *values`` Byte array into which data will be read **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[)�”}”(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´K×hjZ†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Ôhjy†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•hjy†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j”†h´KÔhjv†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Õhjv†ubjv)�”}”(hŒJ``u8 length`` size of the **values** array. 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Œ;size of the **values** array. SMBus allows at most 32 bytes”h]”(hŒ size of the ”…”�”}”(hj ‡h²hh³Nh´Nubj[)�”}”(hŒ **values**”h]”hŒvalues”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj ‡ubhŒ% array. SMBus allows at most 32 bytes”…”�”}”(hj ‡h²hh³Nh´Nubeh}”(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Öhjv†ubjv)�”}”(hŒ7``u8 *values`` Byte array into which data will be read ”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×hj6‡ubj–)�”}”(hhh]”hà)�”}”(hŒ'Byte array into which data will be read”h]”hŒ'Byte array into which data will be read”…”�”}”(hjU‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jQ‡h´K×hjR‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj6‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jQ‡h´K×hjv†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jphjZ†ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hjw‡h]”hŒ Description”…”�”}”(hjy‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhju‡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ÙhjZ†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.”…”�”}”(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ØhjZ†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.”…”�”}”(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ÛhjZ†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”†”asbuh1hhjLJh²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ÀhjLJh²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ÑhjLJh²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”…”�”}”(hj8ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhjˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEˆh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhjˆubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(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_smbus_write_block_data”†”asbuh1hhjˆubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtˆ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_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”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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_smbus_write_block_data”†”asbuh1hhj4‰ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt‰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Œvalues”h]”hŒvalues”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj4‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjˆubeh}”(h]”h ]”h"]”h$]”h&]”jðjñuh1jòhjLJh²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 write" protocol”h]”hŒ SMBus “block writeâ€� 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)�”}”(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)�”}”(hj3Šh]”hŒ u8 command”…”�”}”(hj5Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1Š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”…”�”}”(hjLŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jHŠh´KýhjIŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj-Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jHŠh´Kýhjñ‰ubjv)�”}”(hŒ@``u8 length`` Size of data block; SMBus allows at most 32 bytes ”h]”(j|)�”}”(hŒ ``u8 length``”h]”j)�”}”(hjlŠh]”hŒ u8 length”…”�”}”(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Œ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•hjfŠ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ÿhjŸŠubj–)�”}”(hhh]”hà)�”}”(hŒ!Byte array which will be written.”h]”hŒ!Byte array which will be written.”…”�”}”(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ñ‰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´MhjÕ‰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´MhjÕ‰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´MubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ‹h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj!‹h²hh³jI‹h´MubjÒ)�”}”(hŒi2c_smbus_xfer”h]”jØ)�”}”(hjF‹h]”hŒi2c_smbus_xfer”…”�”}”(hj\‹h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjX‹ubah}”(h]”h ]”(jëjìeh"]”h$]”h&]”jðjñuh1jÑhj!‹h²hh³jI‹h´Mubjó)�”}”(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”…”�”}”(hjw‹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_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\]”jD‹Œc.i2c_smbus_xfer”†”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Œadapter”h]”hŒadapter”…”�”}”(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Œ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\]”jD‹Œ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øhjo‹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”…”�”}”(hjKŒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+ŒubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYŒh²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj+ŒubjØ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjgŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj+Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjðjñuh1jøhjo‹ubjù)�”}”(hŒchar read_write”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|ŒubjØ)�”}”(hŒ read_write”h]”hŒ read_write”…”�”}”(hjœŒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj|Œ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\]”jD‹Œc.i2c_smbus_xfer”†”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øhjo‹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øhjo‹ubjù)�”}”(hŒunion i2c_smbus_data *data”h]”(jÿ)�”}”(hŒunion”h]”hŒunion”…”�”}”(hj2�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”…”�”}”(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\]”jD‹Œc.i2c_smbus_xfer”†”asbuh1hhj.�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo�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Œdata”h]”hŒdata”…”�”}”(hjŠ�h²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³jI‹h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jðjñjˆuh1j¨jjhj‹h²hh³jI‹h´Mubah}”(h]”j‹ah ]”(j!j"eh"]”h$]”h&]”j&ˆj')j(huh1j¢h³jI‹h´Mhj‹h²hubj*)�”}”(hhh]”hà)�”}”(hŒ!execute SMBus protocol operations”h]”hŒ!execute SMBus protocol operations”…”�”}”(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´Mhj±�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j)hj‹h²hh³jI‹h´Mubeh}”(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”…”�”}”(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``u16 addr`` Address of SMBus slave on that bus ”h]”(j|)�”}”(hŒ ``u16 addr``”h]”j)�”}”(hj.Žh]”hŒu16 addr”…”�”}”(hj0Ž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”…”�”}”(hjGŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³jCŽh´MhjDŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj(Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jCŽ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)�”}”(hjgŽh]”hŒunsigned short flags”…”�”}”(hjiŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjeŽ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´MhjaŽubj–)�”}”(hhh]”hà)�”}”(hŒ3I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)”h]”hŒ3I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)”…”�”}”(hj€Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j|Žh´Mhj}Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjaŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³j|Žh´Mhjì�ubjv)�”}”(hŒ6``char read_write`` I2C_SMBUS_READ or I2C_SMBUS_WRITE ”h]”(j|)�”}”(hŒ``char read_write``”h]”j)�”}”(hj Žh]”hŒchar read_write”…”�”}”(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Œ!I2C_SMBUS_READ or I2C_SMBUS_WRITE”h]”hŒ!I2C_SMBUS_READ or I2C_SMBUS_WRITE”…”�”}”(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Œ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)�”}”(hjK�h]”hŒunion i2c_smbus_data *data”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjI�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MhjE�ubj–)�”}”(hhh]”hà)�”}”(hŒData to be read or written”h]”hŒData to be read or written”…”�”}”(hjd�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hßh³j`�h´Mhja�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hjE�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”…”�”}”(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Ð�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.”…”�”}”(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´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”…”�”}”(hj8�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jþhj�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj�ubh)�”}”(hhh]”jØ)�”}”(hŒ i2c_client”h]”hŒ i2c_client”…”�”}”(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_smbus_read_i2c_block_data_or_emulated”†”asbuh1hhj�ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt�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_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×hj8‘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”†”asbuh1hhj4‘ubjÁ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY‘h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj4‘ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjg‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj4‘ubjØ)�”}”(hŒvalues”h]”hŒvalues”…”�”}”(hjt‘h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj4‘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Œread block or emulate”h]”hŒread block or emulate”…”�”}”(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&]”jJjjKj¶‘jLj¶‘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[)�”}”(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´Mˆ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´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”…”�”}”(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†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)�”}”(hjQ’h]”hŒ u8 length”…”�”}”(hjS’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j{h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´M‡hjK’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”…”�”}”(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‡hjÖ‘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)�”}”(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´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ˆhj ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•hj„’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jŸ’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³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/i2c:47: ./drivers/i2c/i2c-core-smbus.c”h´MŒhjº‘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‹hjº‘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�hjº‘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”…”�”}”(hj9“h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj6“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Œ ”…”�”}”(hjZ“h²hh³Nh´Nubah}”(h]”h ]”jÍah"]”h$]”h&]”uh1jÀhj“h²hh³j'“h´M½ubjs)�”}”(hjvh]”hŒ*”…”�”}”(hjh“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj“h²hh³j'“h´M½ubjÒ)�”}”(hŒi2c_new_smbus_alert_device”h]”jØ)�”}”(hjW“h]”hŒi2c_new_smbus_alert_device”…”�”}”(hjy“h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hju“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”…”�”}”(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\]”jU“Œ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Œ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Œ#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\]”jU“Œ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Œ*”…”�”}”(hjN”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ø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 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&]”jJjjKj�”jLj�”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”…”�”}”(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Áhj¡”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¾hjÀ”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•hjÀ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³jÛ”h´M¾hj½”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¿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&]”uh1jZhj8•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Áhj¡”ubhà)�”}”(hŒ can sleep”h]”hŒ can sleep”…”�”}”(hjP•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¡”ubhà)�”}”(hŒ**Description**”h]”j[)�”}”(hja•h]”hŒ Description”…”�”}”(hjc•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Âhj¡”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.”…”�”}”(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Áhj¡”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Ãhj¡”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.”…”�”}”(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¡”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”}”j°•j­•sŒ nametypes”}”j°•‰sh}”(j­•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þXjYjN[jS[jæ]jë]jŒaj‘aj cjcjµejºej]hjbhjckjhkj¨mj­mjšojŸojíqjòqjCtjHtj½vjÂvjlxjqxjœzj¡zjÌ|jÑ|j}j‚j­�j²�j^„jc„j¾‡jÇj‹j‹j¾�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.