€•Œ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/miscellaneous”Œ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/miscellaneous”Œ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/miscellaneous”Œ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/miscellaneous”Œ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/miscellaneous”Œ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/miscellaneous”Œ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/miscellaneous”Œ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ŒParallel Port Devices”h]”hŒParallel Port Devices”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous.rst”h´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ!parport_register_driver (C macro)”Œc.parport_register_driver”hNt”auh1hËhh·h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒparport_register_driver”h]”hŒdesc_signature_line”“”)�”}”(hŒparport_register_driver”h]”hŒ desc_name”“”)�”}”(hŒparport_register_driver”h]”hŒ desc_sig_name”“”)�”}”(hhåh]”hŒparport_register_driver”…”�”}”(hhõh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1hóhhïubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1híhhéh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M'ubah}”(h]”h ]”h"]”h$]”h&]”j j Œ add_permalink”ˆuh1hçŒsphinx_line_type”Œ declarator”hhãh²hh³j h´M'ubah}”(h]”hÚah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1háh³j h´M'hhÞh²hubhŒ desc_content”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j"hhÞh²hh³j h´M'ubeh}”(h]”h ]”(Œc”Œmacro”eh"]”h$]”h&]”Œdomain”j0Œobjtype”j1Œdesctype”j1Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1hÜh²hhh·h³Nh´NubhŒ paragraph”“”)�”}”(hŒ$``parport_register_driver (driver)``”h]”hŒliteral”“”)�”}”(hj?h]”hŒ parport_register_driver (driver)”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M)hh·h²hubhŒ block_quote”“”)�”}”(hŒ'register a parallel port device driver ”h]”j<)�”}”(hŒ®ister a parallel port device driver”h]”hŒ®ister a parallel port device driver”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M'hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jkh´M'hh·h²hubhŒ container”“”)�”}”(hXj**Parameters** ``driver`` structure describing the driver **Description** This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available. The **driver** structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver(). If using the non device model: The driver's attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you. The driver's detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”h]”(j<)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjzh]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M+hjtubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ+``driver`` structure describing the driver ”h]”(hŒterm”“”)�”}”(hŒ ``driver``”h]”jB)�”}”(hj¡h]”hŒdriver”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M(hj™ubhŒ definition”“”)�”}”(hhh]”j<)�”}”(hŒstructure describing the driver”h]”hŒstructure describing the driver”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¶h´M(hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j¶h´M(hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjtubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjÞh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M*hjtubjX)�”}”(hXÆThis can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available. The **driver** structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver(). If using the non device model: The driver's attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you. The driver's detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”h]”(j<)�”}”(hŒ¢This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available.”h]”hŒ¢This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M)hjôubj<)�”}”(hŒ€The **driver** structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver().”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubj})�”}”(hŒ **driver**”h]”hŒdriver”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjubhŒr structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver().”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M-hjôubj<)�”}”(hX?If using the non device model: The driver's attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you.”h]”hXAIf using the non device model: The driver’s attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M0hjôubj<)�”}”(hŒÚThe driver's detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so.”h]”hŒÜThe driver’s detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M7hjôubj<)�”}”(hŒ‚Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”h]”hŒ‚Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M=hjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jh´M)hjtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒmodule_parport_driver (C macro)”Œc.module_parport_driver”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒmodule_parport_driver”h]”hè)�”}”(hŒmodule_parport_driver”h]”hî)�”}”(hŒmodule_parport_driver”h]”hô)�”}”(hjuh]”hŒmodule_parport_driver”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjwh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MHubah}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjsh²hh³j’h´MHubah}”(h]”jnah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j’h´MHhjph²hubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j"hjph²hh³j’h´MHubeh}”(h]”h ]”(j0Œmacro”eh"]”h$]”h&]”j5j0j6j«j7j«j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubj<)�”}”(hŒ,``module_parport_driver (__parport_driver)``”h]”jB)�”}”(hj±h]”hŒ(module_parport_driver (__parport_driver)”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MJhh·h²hubjX)�”}”(hŒ6Helper macro for registering a modular parport driver ”h]”j<)�”}”(hŒ5Helper macro for registering a modular parport driver”h]”hŒ5Helper macro for registering a modular parport driver”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MHhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jÙh´MHhh·h²hubjs)�”}”(hX=**Parameters** ``__parport_driver`` struct parport_driver to be used **Description** Helper macro for parport drivers which do not do anything special in module init and 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]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjæh]”hŒ Parameters”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MLhjàubj“)�”}”(hhh]”j˜)�”}”(hŒ6``__parport_driver`` struct parport_driver to be used ”h]”(jž)�”}”(hŒ``__parport_driver``”h]”jB)�”}”(hjh]”hŒ__parport_driver”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MIhjÿubj¸)�”}”(hhh]”j<)�”}”(hŒ struct parport_driver to be used”h]”hŒ struct parport_driver to be used”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´MIhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jh´MIhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjàubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj@h]”hŒ Description”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MKhjàubj<)�”}”(hŒãHelper macro for parport drivers which do not do anything special in module init and 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 parport drivers which do not do anything special in module init and exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces module_init() and module_exit().”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MJhjàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_yield (C function)”Œc.parport_yield”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ)int parport_yield (struct pardevice *dev)”h]”hè)�”}”(hŒ(int parport_yield(struct pardevice *dev)”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³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MˆubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j—hj�h²hh³j–h´Mˆubhî)�”}”(hŒ parport_yield”h]”hô)�”}”(hŒ parport_yield”h]”hŒ parport_yield”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj�h²hh³j–h´MˆubhŒdesc_parameterlist”“”)�”}”(hŒ(struct pardevice *dev)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct pardevice *dev”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jÌhjÈubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÈubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”Œ identifier”Œ reftarget”jðŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j Œ ASTIdentifier”“”)�”}”jj®sbŒc.parport_yield”†”asbuh1hhjÈubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÈubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j$hjÈubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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ˆuh1hçjjhj}h²hh³j–h´Mˆubah}”(h]”jxah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j–h´Mˆhjzh²hubj#)�”}”(hhh]”j<)�”}”(hŒ&relinquish a parallel port temporarily”h]”hŒ&relinquish a parallel port temporarily”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´Mˆhj\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjzh²hh³j–h´Mˆubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jwj7jwj8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX¥**Parameters** ``struct pardevice *dev`` a device on the parallel port **Description** This function relinquishes the port if it would be helpful to other drivers to do so. Afterwards it tries to reclaim the port using parport_claim(), and the return value is the same as for parport_claim(). If it fails, the port is left unclaimed and it is the driver's responsibility to reclaim the port. The parport_yield() and parport_yield_blocking() functions are for marking points in the driver at which other drivers may claim the port and use their devices. Yielding the port is similar to releasing it and reclaiming it, but is more efficient because no action is taken if there are no other devices needing the port. In fact, nothing is done even if there are other devices waiting but the current device is still within its "timeslice". The default timeslice is half a second, but it can be adjusted via the /proc interface.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj�h]”hŒ Parameters”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MŒhj{ubj“)�”}”(hhh]”j˜)�”}”(hŒ8``struct pardevice *dev`` a device on the parallel port ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hj h]”hŒstruct pardevice *dev”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M‰hjšubj¸)�”}”(hhh]”j<)�”}”(hŒa device on the parallel port”h]”hŒa device on the parallel port”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jµh´M‰hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jµh´M‰hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj{ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjÛh]”hŒ Description”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M‹hj{ubj<)�”}”(hX2This function relinquishes the port if it would be helpful to other drivers to do so. Afterwards it tries to reclaim the port using parport_claim(), and the return value is the same as for parport_claim(). If it fails, the port is left unclaimed and it is the driver's responsibility to reclaim the port.”h]”hX4This function relinquishes the port if it would be helpful to other drivers to do so. Afterwards it tries to reclaim the port using parport_claim(), and the return value is the same as for parport_claim(). If it fails, the port is left unclaimed and it is the driver’s responsibility to reclaim the port.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´MŠhj{ubj<)�”}”(hXThe parport_yield() and parport_yield_blocking() functions are for marking points in the driver at which other drivers may claim the port and use their devices. Yielding the port is similar to releasing it and reclaiming it, but is more efficient because no action is taken if there are no other devices needing the port. In fact, nothing is done even if there are other devices waiting but the current device is still within its "timeslice". The default timeslice is half a second, but it can be adjusted via the /proc interface.”h]”hXThe parport_yield() and parport_yield_blocking() functions are for marking points in the driver at which other drivers may claim the port and use their devices. Yielding the port is similar to releasing it and reclaiming it, but is more efficient because no action is taken if there are no other devices needing the port. In fact, nothing is done even if there are other devices waiting but the current device is still within its “timesliceâ€�. The default timeslice is half a second, but it can be adjusted via the /proc interface.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M�hj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ#parport_yield_blocking (C function)”Œc.parport_yield_blocking”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ2int parport_yield_blocking (struct pardevice *dev)”h]”hè)�”}”(hŒ1int parport_yield_blocking(struct pardevice *dev)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj+h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.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¥ubhî)�”}”(hŒparport_yield_blocking”h]”hô)�”}”(hŒparport_yield_blocking”h]”hŒparport_yield_blocking”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjLubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj+h²hh³j=h´M¥ubjÁ)�”}”(hŒ(struct pardevice *dev)”h]”jÇ)�”}”(hŒstruct pardevice *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjhubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjhubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jŒŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjRsbŒc.parport_yield_blocking”†”asbuh1hhjhubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjhubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjhubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjdubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj+h²hh³j=h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj'h²hh³j=h´M¥ubah}”(h]”j"ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j=h´M¥hj$h²hubj#)�”}”(hhh]”j<)�”}”(hŒ&relinquish a parallel port temporarily”h]”hŒ&relinquish a parallel port temporarily”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M¥hjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj$h²hh³j=h´M¥ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jj7jj8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX<**Parameters** ``struct pardevice *dev`` a device on the parallel port **Description** This function relinquishes the port if it would be helpful to other drivers to do so. Afterwards it tries to reclaim the port using parport_claim_or_block(), and the return value is the same as for parport_claim_or_block().”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M©hj ubj“)�”}”(hhh]”j˜)�”}”(hŒ8``struct pardevice *dev`` a device on the parallel port ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hj0h]”hŒstruct pardevice *dev”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M¦hj*ubj¸)�”}”(hhh]”j<)�”}”(hŒa device on the parallel port”h]”hŒa device on the parallel port”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jEh´M¦hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jEh´M¦hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjkh]”hŒ Description”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M¨hj ubj<)�”}”(hŒàThis function relinquishes the port if it would be helpful to other drivers to do so. Afterwards it tries to reclaim the port using parport_claim_or_block(), and the return value is the same as for parport_claim_or_block().”h]”hŒàThis function relinquishes the port if it would be helpful to other drivers to do so. Afterwards it tries to reclaim the port using parport_claim_or_block(), and the return value is the same as for parport_claim_or_block().”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:4: ./include/linux/parport.h”h´M§hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_wait_event (C function)”Œc.parport_wait_event”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒBint parport_wait_event (struct parport *port, signed long timeout)”h]”hè)�”}”(hŒAint parport_wait_event(struct parport *port, signed long timeout)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj¬h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K1ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¬h²hh³j¾h´K1ubhî)�”}”(hŒparport_wait_event”h]”hô)�”}”(hŒparport_wait_event”h]”hŒparport_wait_event”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÍubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj¬h²hh³j¾h´K1ubjÁ)�”}”(hŒ+(struct parport *port, signed long timeout)”h]”(jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjÓsbŒc.parport_wait_event”†”asbuh1hhjéubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjéubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjéubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjåubjÇ)�”}”(hŒsigned long timeout”h]”(j†)�”}”(hŒsigned”h]”hŒsigned”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj[ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj[ubj†)�”}”(hŒlong”h]”hŒlong”…”�”}”(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ô)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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´K1ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj¨h²hh³j¾h´K1ubah}”(h]”j£ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j¾h´K1hj¥h²hubj#)�”}”(hhh]”j<)�”}”(hŒ$wait for an event on a parallel port”h]”hŒ$wait for an event on a parallel port”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K1hj¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj¥h²hh³j¾h´K1ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jÙj7jÙj8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXb**Parameters** ``struct parport *port`` port to wait on ``signed long timeout`` time to wait (in jiffies) **Description** This function waits for up to **timeout** jiffies for an interrupt to occur on a parallel port. If the port timeout is set to zero, it returns immediately. If an interrupt occurs before the timeout period elapses, this function returns zero immediately. If it times out, it returns one. An error code less than zero indicates an error (most likely a pending signal), and the calling code should finish what it's doing as soon as it can.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjãh]”hŒ Parameters”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K5hjÝubj“)�”}”(hhh]”(j˜)�”}”(hŒ)``struct parport *port`` port to wait on ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hjh]”hŒstruct parport *port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K2hjüubj¸)�”}”(hhh]”j<)�”}”(hŒport to wait on”h]”hŒport to wait on”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´K2hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jh´K2hjùubj˜)�”}”(hŒ2``signed long timeout`` time to wait (in jiffies) ”h]”(jž)�”}”(hŒ``signed long timeout``”h]”jB)�”}”(hj;h]”hŒsigned long timeout”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K3hj5ubj¸)�”}”(hhh]”j<)�”}”(hŒtime to wait (in jiffies)”h]”hŒtime to wait (in jiffies)”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jPh´K3hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jPh´K3hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjÝubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjvh]”hŒ Description”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K5hjÝubjX)�”}”(hX¸This function waits for up to **timeout** jiffies for an interrupt to occur on a parallel port. If the port timeout is set to zero, it returns immediately. If an interrupt occurs before the timeout period elapses, this function returns zero immediately. If it times out, it returns one. An error code less than zero indicates an error (most likely a pending signal), and the calling code should finish what it's doing as soon as it can.”h]”(j<)�”}”(hŒœThis function waits for up to **timeout** jiffies for an interrupt to occur on a parallel port. If the port timeout is set to zero, it returns immediately.”h]”(hŒThis function waits for up to ”…”�”}”(hj�h²hh³Nh´Nubj})�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj�ubhŒs jiffies for an interrupt to occur on a parallel port. If the port timeout is set to zero, it returns immediately.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K4hjŒubj<)�”}”(hXIf an interrupt occurs before the timeout period elapses, this function returns zero immediately. If it times out, it returns one. An error code less than zero indicates an error (most likely a pending signal), and the calling code should finish what it's doing as soon as it can.”h]”hXIf an interrupt occurs before the timeout period elapses, this function returns zero immediately. If it times out, it returns one. An error code less than zero indicates an error (most likely a pending signal), and the calling code should finish what it’s doing as soon as it can.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K8hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j°h´K4hjÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ$parport_wait_peripheral (C function)”Œc.parport_wait_peripheral”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ\int parport_wait_peripheral (struct parport *port, unsigned char mask, unsigned char result)”h]”hè)�”}”(hŒ[int parport_wait_peripheral(struct parport *port, unsigned char mask, unsigned char result)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjâh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.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„ubhî)�”}”(hŒparport_wait_peripheral”h]”hô)�”}”(hŒparport_wait_peripheral”h]”hŒparport_wait_peripheral”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjâh²hh³jôh´K„ubjÁ)�”}”(hŒ@(struct parport *port, unsigned char mask, unsigned char result)”h]”(jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj ubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj> ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jC Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj sbŒc.parport_wait_peripheral”†”asbuh1hhj ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj ubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj ubjÇ)�”}”(hŒunsigned char mask”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Œ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‘ ubhô)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‘ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj ubjÇ)�”}”(hŒunsigned char result”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Œ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â ubhô)�”}”(hŒresult”h]”hŒresult”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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ˆuh1hçjjhjÞh²hh³jôh´K„ubah}”(h]”jÙah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jôh´K„hjÛh²hubj#)�”}”(hhh]”j<)�”}”(hŒ'wait for status lines to change in 35ms”h]”hŒ'wait for status lines to change in 35ms”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K„hjE h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÛh²hh³jôh´K„ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j` j7j` j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX0**Parameters** ``struct parport *port`` port to watch ``unsigned char mask`` status lines to watch ``unsigned char result`` desired values of chosen status lines **Description** This function waits until the masked status lines have the desired values, or until 35ms have elapsed (see IEEE 1284-1994 page 24 to 25 for why this value in particular is hardcoded). The **mask** and **result** parameters are bitmasks, with the bits defined by the constants in parport.h: ``PARPORT_STATUS_BUSY``, and so on. The port is polled quickly to start off with, in anticipation of a fast response from the peripheral. This fast polling time is configurable (using /proc), and defaults to 500usec. If the timeout for this port (see parport_set_timeout()) is zero, the fast polling time is 35ms, and this function does not call schedule(). If the timeout for this port is non-zero, after the fast polling fails it uses parport_wait_event() to wait for up to 10ms, waking up if an interrupt occurs.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjj h]”hŒ Parameters”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Kˆhjd ubj“)�”}”(hhh]”(j˜)�”}”(hŒ'``struct parport *port`` port to watch ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj‰ h]”hŒstruct parport *port”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K…hjƒ ubj¸)�”}”(hhh]”j<)�”}”(hŒ port to watch”h]”hŒ port to watch”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jž h´K…hjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjƒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jž h´K…hj€ ubj˜)�”}”(hŒ-``unsigned char mask`` status lines to watch ”h]”(jž)�”}”(hŒ``unsigned char mask``”h]”jB)�”}”(hj h]”hŒunsigned char mask”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K†hj¼ ubj¸)�”}”(hhh]”j<)�”}”(hŒstatus lines to watch”h]”hŒstatus lines to watch”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j× h´K†hjØ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¼ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j× h´K†hj€ ubj˜)�”}”(hŒ?``unsigned char result`` desired values of chosen status lines ”h]”(jž)�”}”(hŒ``unsigned char result``”h]”jB)�”}”(hjû h]”hŒunsigned char result”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjù ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K‡hjõ ubj¸)�”}”(hhh]”j<)�”}”(hŒ%desired values of chosen status lines”h]”hŒ%desired values of chosen status lines”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j h´K‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjõ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j h´K‡hj€ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjd ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj6 h]”hŒ Description”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K‰hjd ubjX)�”}”(hX(This function waits until the masked status lines have the desired values, or until 35ms have elapsed (see IEEE 1284-1994 page 24 to 25 for why this value in particular is hardcoded). The **mask** and **result** parameters are bitmasks, with the bits defined by the constants in parport.h: ``PARPORT_STATUS_BUSY``, and so on. The port is polled quickly to start off with, in anticipation of a fast response from the peripheral. This fast polling time is configurable (using /proc), and defaults to 500usec. If the timeout for this port (see parport_set_timeout()) is zero, the fast polling time is 35ms, and this function does not call schedule(). If the timeout for this port is non-zero, after the fast polling fails it uses parport_wait_event() to wait for up to 10ms, waking up if an interrupt occurs.”h]”(j<)�”}”(hXEThis function waits until the masked status lines have the desired values, or until 35ms have elapsed (see IEEE 1284-1994 page 24 to 25 for why this value in particular is hardcoded). The **mask** and **result** parameters are bitmasks, with the bits defined by the constants in parport.h: ``PARPORT_STATUS_BUSY``, and so on.”h]”(hŒ¼This function waits until the masked status lines have the desired values, or until 35ms have elapsed (see IEEE 1284-1994 page 24 to 25 for why this value in particular is hardcoded). The ”…”�”}”(hjP h²hh³Nh´Nubj})�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjP ubhŒ and ”…”�”}”(hjP h²hh³Nh´Nubj})�”}”(hŒ **result**”h]”hŒresult”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjP ubhŒO parameters are bitmasks, with the bits defined by the constants in parport.h: ”…”�”}”(hjP h²hh³Nh´NubjB)�”}”(hŒ``PARPORT_STATUS_BUSY``”h]”hŒPARPORT_STATUS_BUSY”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjP ubhŒ , and so on.”…”�”}”(hjP h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´KˆhjL ubj<)�”}”(hXBThe port is polled quickly to start off with, in anticipation of a fast response from the peripheral. This fast polling time is configurable (using /proc), and defaults to 500usec. If the timeout for this port (see parport_set_timeout()) is zero, the fast polling time is 35ms, and this function does not call schedule().”h]”hXBThe port is polled quickly to start off with, in anticipation of a fast response from the peripheral. This fast polling time is configurable (using /proc), and defaults to 500usec. If the timeout for this port (see parport_set_timeout()) is zero, the fast polling time is 35ms, and this function does not call schedule().”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K�hjL ubj<)�”}”(hŒ�If the timeout for this port is non-zero, after the fast polling fails it uses parport_wait_event() to wait for up to 10ms, waking up if an interrupt occurs.”h]”hŒ�If the timeout for this port is non-zero, after the fast polling fails it uses parport_wait_event() to wait for up to 10ms, waking up if an interrupt occurs.”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´K–hjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j” h´Kˆhjd ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_negotiate (C function)”Œc.parport_negotiate”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ6int parport_negotiate (struct parport *port, int mode)”h]”hè)�”}”(hŒ5int parport_negotiate(struct parport *port, int mode)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjÕ h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.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î)�”}”(hŒparport_negotiate”h]”hô)�”}”(hŒparport_negotiate”h]”hŒparport_negotiate”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjö ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjÕ h²hh³jç h´M/ubjÁ)�”}”(hŒ (struct parport *port, int mode)”h]”(jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj1 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j6 Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjü sbŒc.parport_negotiate”†”asbuh1hhj ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj ubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj ubjÇ)�”}”(hŒint mode”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„ ubhô)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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ˆuh1hçjjhjÑ h²hh³jç h´M/ubah}”(h]”jÌ ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jç h´M/hjÎ h²hubj#)�”}”(hhh]”j<)�”}”(hŒnegotiate an IEEE 1284 mode”h]”hŒnegotiate an IEEE 1284 mode”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M/hjË h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÎ h²hh³jç h´M/ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jæ j7jæ j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX**Parameters** ``struct parport *port`` port to use ``int mode`` mode to negotiate to **Description** Use this to negotiate to a particular IEEE 1284 transfer mode. The **mode** parameter should be one of the constants in parport.h starting ``IEEE1284_MODE_xxx``. The return value is 0 if the peripheral has accepted the negotiation to the mode specified, -1 if the peripheral is not IEEE 1284 compliant (or not present), or 1 if the peripheral has rejected the negotiation.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjð h]”hŒ Parameters”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M3hjê ubj“)�”}”(hhh]”(j˜)�”}”(hŒ%``struct parport *port`` port to use ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj h]”hŒstruct parport *port”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M0hj ubj¸)�”}”(hhh]”j<)�”}”(hŒ port to use”h]”hŒ port to use”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j$ h´M0hj% ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j$ h´M0hj ubj˜)�”}”(hŒ"``int mode`` mode to negotiate to ”h]”(jž)�”}”(hŒ ``int mode``”h]”jB)�”}”(hjH h]”hŒint mode”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjF ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M1hjB ubj¸)�”}”(hhh]”j<)�”}”(hŒmode to negotiate to”h]”hŒmode to negotiate to”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j] h´M1hj^ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjB ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j] h´M1hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjê ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjƒ h]”hŒ Description”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M3hjê ubjX)�”}”(hXuUse this to negotiate to a particular IEEE 1284 transfer mode. The **mode** parameter should be one of the constants in parport.h starting ``IEEE1284_MODE_xxx``. The return value is 0 if the peripheral has accepted the negotiation to the mode specified, -1 if the peripheral is not IEEE 1284 compliant (or not present), or 1 if the peripheral has rejected the negotiation.”h]”(j<)�”}”(hŒ¡Use this to negotiate to a particular IEEE 1284 transfer mode. The **mode** parameter should be one of the constants in parport.h starting ``IEEE1284_MODE_xxx``.”h]”(hŒCUse this to negotiate to a particular IEEE 1284 transfer mode. The ”…”�”}”(hj� h²hh³Nh´Nubj})�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj� ubhŒ@ parameter should be one of the constants in parport.h starting ”…”�”}”(hj� h²hh³Nh´NubjB)�”}”(hŒ``IEEE1284_MODE_xxx``”h]”hŒIEEE1284_MODE_xxx”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj� ubhŒ.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M2hj™ ubj<)�”}”(hŒÒThe return value is 0 if the peripheral has accepted the negotiation to the mode specified, -1 if the peripheral is not IEEE 1284 compliant (or not present), or 1 if the peripheral has rejected the negotiation.”h]”hŒÒThe return value is 0 if the peripheral has accepted the negotiation to the mode specified, -1 if the peripheral is not IEEE 1284 compliant (or not present), or 1 if the peripheral has rejected the negotiation.”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M6hj™ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jÏ h´M2hjê ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_write (C function)”Œc.parport_write”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒLssize_t parport_write (struct parport *port, const void *buffer, size_t len)”h]”hè)�”}”(hŒKssize_t parport_write(struct parport *port, const void *buffer, size_t len)”h]”(h)�”}”(hhh]”hô)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒ parport_write”sbŒc.parport_write”†”asbuh1hhjh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M6ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjh²hh³j)h´M6ubhî)�”}”(hŒ parport_write”h]”hô)�”}”(hj&h]”hŒ parport_write”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj8ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjh²hh³j)h´M6ubjÁ)�”}”(hŒ6(struct parport *port, const void *buffer, size_t len)”h]”(jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjSubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjSubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jwŒmodname”NŒ classname”Njj )�”}”j]”j$Œc.parport_write”†”asbuh1hhjSubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjSubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjSubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjOubjÇ)�”}”(hŒconst void *buffer”h]”(jÍ)�”}”(hŒconst”h]”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Œvoid”h]”hŒvoid”…”�”}”(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%)�”}”(hj(h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÃubhô)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjOubjÇ)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”hô)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j*Œmodname”NŒ classname”Njj )�”}”j]”j$Œc.parport_write”†”asbuh1hhj!ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj!ubhô)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjOubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjh²hh³j)h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjý h²hh³j)h´M6ubah}”(h]”jø ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j)h´M6hjú h²hubj#)�”}”(hhh]”j<)�”}”(hŒ(write a block of data to a parallel port”h]”hŒ(write a block of data to a parallel port”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M6hj{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjú h²hh³j)h´M6ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j–j7j–j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX•**Parameters** ``struct parport *port`` port to write to ``const void *buffer`` data buffer (in kernel space) ``size_t len`` number of bytes of data to transfer **Description** This will write up to **len** bytes of **buffer** to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports forward transfers (host to peripheral). It is the caller's responsibility to ensure that the first **len** bytes of **buffer** are valid. This function returns the number of bytes transferred (if zero or positive), or else an error code.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj h]”hŒ Parameters”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M:hjšubj“)�”}”(hhh]”(j˜)�”}”(hŒ*``struct parport *port`` port to write to ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj¿h]”hŒstruct parport *port”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M7hj¹ubj¸)�”}”(hhh]”j<)�”}”(hŒport to write to”h]”hŒport to write to”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÔh´M7hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÔh´M7hj¶ubj˜)�”}”(hŒ5``const void *buffer`` data buffer (in kernel space) ”h]”(jž)�”}”(hŒ``const void *buffer``”h]”jB)�”}”(hjøh]”hŒconst void *buffer”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M8hjòubj¸)�”}”(hhh]”j<)�”}”(hŒdata buffer (in kernel space)”h]”hŒdata buffer (in kernel space)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j h´M8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j h´M8hj¶ubj˜)�”}”(hŒ3``size_t len`` number of bytes of data to transfer ”h]”(jž)�”}”(hŒ``size_t len``”h]”jB)�”}”(hj1h]”hŒ size_t len”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M9hj+ubj¸)�”}”(hhh]”j<)�”}”(hŒ#number of bytes of data to transfer”h]”hŒ#number of bytes of data to transfer”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jFh´M9hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jFh´M9hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjšubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjlh]”hŒ Description”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M;hjšubjX)�”}”(hX±This will write up to **len** bytes of **buffer** to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports forward transfers (host to peripheral). It is the caller's responsibility to ensure that the first **len** bytes of **buffer** are valid. This function returns the number of bytes transferred (if zero or positive), or else an error code.”h]”(j<)�”}”(hŒéThis will write up to **len** bytes of **buffer** to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports forward transfers (host to peripheral).”h]”(hŒThis will write up to ”…”�”}”(hj†h²hh³Nh´Nubj})�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj†ubhŒ bytes of ”…”�”}”(hj†h²hh³Nh´Nubj})�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj†ubhŒ¸ to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports forward transfers (host to peripheral).”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M:hj‚ubj<)�”}”(hŒaIt is the caller's responsibility to ensure that the first **len** bytes of **buffer** are valid.”h]”(hŒ=It is the caller’s responsibility to ensure that the first ”…”�”}”(hj¹h²hh³Nh´Nubj})�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¹ubhŒ bytes of ”…”�”}”(hj¹h²hh³Nh´Nubj})�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¹ubhŒ are valid.”…”�”}”(hj¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M?hj‚ubj<)�”}”(hŒcThis function returns the number of bytes transferred (if zero or positive), or else an error code.”h]”hŒcThis function returns the number of bytes transferred (if zero or positive), or else an error code.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´MBhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j¸h´M:hjšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_read (C function)”Œc.parport_read”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒEssize_t parport_read (struct parport *port, void *buffer, size_t len)”h]”hè)�”}”(hŒDssize_t parport_read(struct parport *port, void *buffer, size_t len)”h]”(h)�”}”(hhh]”hô)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j&Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒ parport_read”sbŒc.parport_read”†”asbuh1hhjh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M‘ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjh²hh³jEh´M‘ubhî)�”}”(hŒ parport_read”h]”hô)�”}”(hjBh]”hŒ parport_read”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjTubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjh²hh³jEh´M‘ubjÁ)�”}”(hŒ0(struct parport *port, void *buffer, size_t len)”h]”(jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjoubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjoubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j“Œmodname”NŒ classname”Njj )�”}”j]”j@Œc.parport_read”†”asbuh1hhjoubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjoubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjoubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjkubjÇ)�”}”(hŒ void *buffer”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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%)�”}”(hj(h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjßubhô)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjkubjÇ)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”hô)�”}”(hŒsize_t”•h]”hŒsize_t”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j*Œmodname”NŒ classname”Njj )�”}”j]”j@Œc.parport_read”†”asbuh1hhj!ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj!ubhô)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjkubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjh²hh³jEh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjh²hh³jEh´M‘ubah}”(h]”jah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jEh´M‘hjh²hubj#)�”}”(hhh]”j<)�”}”(hŒ)read a block of data from a parallel port”h]”hŒ)read a block of data from a parallel port”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M‘hj{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjh²hh³jEh´M‘ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j–j7j–j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXŸ**Parameters** ``struct parport *port`` port to read from ``void *buffer`` data buffer (in kernel space) ``size_t len`` number of bytes of data to transfer **Description** This will read up to **len** bytes of **buffer** to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports reverse transfers (peripheral to host). It is the caller's responsibility to ensure that the first **len** bytes of **buffer** are available to write to. This function returns the number of bytes transferred (if zero or positive), or else an error code.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj h]”hŒ Parameters”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M•hjšubj“)�”}”(hhh]”(j˜)�”}”(hŒ+``struct parport *port`` port to read from ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj¿h]”hŒstruct parport *port”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M’hj¹ubj¸)�”}”(hhh]”j<)�”}”(hŒport to read from”h]”hŒport to read from”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÔh´M’hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÔh´M’hj¶ubj˜)�”}”(hŒ/``void *buffer`` data buffer (in kernel space) ”h]”(jž)�”}”(hŒ``void *buffer``”h]”jB)�”}”(hjøh]”hŒ void *buffer”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M“hjòubj¸)�”}”(hhh]”j<)�”}”(hŒdata buffer (in kernel space)”h]”hŒdata buffer (in kernel space)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j h´M“hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j h´M“hj¶ubj˜)�”}”(hŒ3``size_t len`` number of bytes of data to transfer ”h]”(jž)�”}”(hŒ``size_t len``”h]”jB)�”}”(hj1h]”hŒ size_t len”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M”hj+ubj¸)�”}”(hhh]”j<)�”}”(hŒ#number of bytes of data to transfer”h]”hŒ#number of bytes of data to transfer”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jFh´M”hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jFh´M”hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjšubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjlh]”hŒ Description”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M–hjšubjX)�”}”(hXÀThis will read up to **len** bytes of **buffer** to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports reverse transfers (peripheral to host). It is the caller's responsibility to ensure that the first **len** bytes of **buffer** are available to write to. This function returns the number of bytes transferred (if zero or positive), or else an error code.”h]”(j<)�”}”(hŒèThis will read up to **len** bytes of **buffer** to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports reverse transfers (peripheral to host).”h]”(hŒThis will read up to ”…”�”}”(hj†h²hh³Nh´Nubj})�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj†ubhŒ bytes of ”…”�”}”(hj†h²hh³Nh´Nubj})�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj†ubhŒ¸ to the port specified, using the IEEE 1284 transfer mode most recently negotiated to (using parport_negotiate()), as long as that mode supports reverse transfers (peripheral to host).”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M•hj‚ubj<)�”}”(hŒqIt is the caller's responsibility to ensure that the first **len** bytes of **buffer** are available to write to.”h]”(hŒ=It is the caller’s responsibility to ensure that the first ”…”�”}”(hj¹h²hh³Nh´Nubj})�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¹ubhŒ bytes of ”…”�”}”(hj¹h²hh³Nh´Nubj})�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¹ubhŒ are available to write to.”…”�”}”(hj¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Mšhj‚ubj<)�”}”(hŒcThis function returns the number of bytes transferred (if zero or positive), or else an error code.”h]”hŒcThis function returns the number of bytes transferred (if zero or positive), or else an error code.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´M�hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j¸h´M•hjšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ parport_set_timeout (C function)”Œc.parport_set_timeout”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒAlong parport_set_timeout (struct pardevice *dev, long inactivity)”h]”hè)�”}”(hŒ@long parport_set_timeout(struct pardevice *dev, long inactivity)”h]”(j†)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Mòubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjh²hh³j/h´Mòubhî)�”}”(hŒparport_set_timeout”h]”hô)�”}”(hŒparport_set_timeout”h]”hŒparport_set_timeout”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj>ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjh²hh³j/h´MòubjÁ)�”}”(hŒ((struct pardevice *dev, long inactivity)”h]”(jÇ)�”}”(hŒstruct pardevice *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjZubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjZubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j~Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjDsbŒc.parport_set_timeout”†”asbuh1hhjZubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjZubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjZubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjVubjÇ)�”}”(hŒlong inactivity”h]”(j†)�”}”(hŒlong”h]”hŒlong”…”�”}”(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ô)�”}”(hŒ inactivity”h]”hŒ inactivity”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjVubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjh²hh³j/h´Mòubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjh²hh³j/h´Mòubah}”(h]”jah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j/h´Mòhjh²hubj#)�”}”(hhh]”j<)�”}”(hŒ'set the inactivity timeout for a device”h]”hŒ'set the inactivity timeout for a device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Mòhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjh²hh³j/h´Mòubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j.j7j.j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXî**Parameters** ``struct pardevice *dev`` device on a port ``long inactivity`` inactivity timeout (in jiffies) **Description** This sets the inactivity timeout for a particular device on a port. This affects functions like parport_wait_peripheral(). The special value 0 means not to call schedule() while dealing with this device. The return value is the previous inactivity timeout. Any callers of parport_wait_event() for this device are woken up.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj8h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Möhj2ubj“)�”}”(hhh]”(j˜)�”}”(hŒ+``struct pardevice *dev`` device on a port ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hjWh]”hŒstruct pardevice *dev”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´MóhjQubj¸)�”}”(hhh]”j<)�”}”(hŒdevice on a port”h]”hŒdevice on a port”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jlh´Móhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jlh´MóhjNubj˜)�”}”(hŒ4``long inactivity`` inactivity timeout (in jiffies) ”h]”(jž)�”}”(hŒ``long inactivity``”h]”jB)�”}”(hj�h]”hŒlong inactivity”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´MôhjŠubj¸)�”}”(hhh]”j<)�”}”(hŒinactivity timeout (in jiffies)”h]”hŒinactivity timeout (in jiffies)”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¥h´Môhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j¥h´MôhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj2ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjËh]”hŒ Description”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Möhj2ubjX)�”}”(hXEThis sets the inactivity timeout for a particular device on a port. This affects functions like parport_wait_peripheral(). The special value 0 means not to call schedule() while dealing with this device. The return value is the previous inactivity timeout. Any callers of parport_wait_event() for this device are woken up.”h]”(j<)�”}”(hŒÌThis sets the inactivity timeout for a particular device on a port. This affects functions like parport_wait_peripheral(). The special value 0 means not to call schedule() while dealing with this device.”h]”hŒÌThis sets the inactivity timeout for a particular device on a port. This affects functions like parport_wait_peripheral(). The special value 0 means not to call schedule() while dealing with this device.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Mõhjáubj<)�”}”(hŒ4The return value is the previous inactivity timeout.”h]”hŒ4The return value is the previous inactivity timeout.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Múhjáubj<)�”}”(hŒAAny callers of parport_wait_event() for this device are woken up.”h]”hŒAAny callers of parport_wait_event() for this device are woken up.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:7: ./drivers/parport/ieee1284.c”h´Mühjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jóh´Mõhj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ&__parport_register_driver (C function)”Œc.__parport_register_driver”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒfint __parport_register_driver (struct parport_driver *drv, struct module *owner, const char *mod_name)”h]”hè)�”}”(hŒeint __parport_register_driver(struct parport_driver *drv, struct module *owner, const char *mod_name)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj4h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Kñubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj4h²hh³jFh´Kñubhî)�”}”(hŒ__parport_register_driver”h]”hô)�”}”(hŒ__parport_register_driver”h]”hŒ__parport_register_driver”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjUubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj4h²hh³jFh´KñubjÁ)�”}”(hŒH(struct parport_driver *drv, struct module *owner, const char *mod_name)”h]”(jÇ)�”}”(hŒstruct parport_driver *drv”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjqubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjqubh)�”}”(hhh]”hô)�”}”(hŒparport_driver”h]”hŒparport_driver”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j•Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj[sbŒc.__parport_register_driver”†”asbuh1hhjqubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjqubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjqubhô)�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjmubjÇ)�”}”(hŒstruct module *owner”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j]”j¯Œc.__parport_register_driver”†”asbuh1hhjãubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjãubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjãubhô)�”}”(hŒowner”h]”hŒowner”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjmubjÇ)�”}”(hŒconst char *mod_name”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjSubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjSubj†)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjSubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjSubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjSubhô)�”}”(hŒmod_name”h]”hŒmod_name”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjmubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj4h²hh³jFh´Kñubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj0h²hh³jFh´Kñubah}”(h]”j+ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jFh´Kñhj-h²hubj#)�”}”(hhh]”j<)�”}”(hŒ®ister a parallel port device driver”h]”hŒ®ister a parallel port device driver”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´KñhjÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj-h²hh³jFh´Kñubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jÝj7jÝj8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX-**Parameters** ``struct parport_driver *drv`` structure describing the driver ``struct module *owner`` owner module of drv ``const char *mod_name`` module name string **Description** This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available. If devmodel is true then the new device model is used for registration. The **drv** structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver(). If using the non device model: The driver's attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you. The driver's detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjçh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Kõhjáubj“)�”}”(hhh]”(j˜)�”}”(hŒ?``struct parport_driver *drv`` structure describing the driver ”h]”(jž)�”}”(hŒ``struct parport_driver *drv``”h]”jB)�”}”(hjh]”hŒstruct parport_driver *drv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Kòhjubj¸)�”}”(hhh]”j<)�”}”(hŒstructure describing the driver”h]”hŒstructure describing the driver”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´Kòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jh´Kòhjýubj˜)�”}”(hŒ-``struct module *owner`` owner module of drv ”h]”(jž)�”}”(hŒ``struct module *owner``”h]”jB)�”}”(hj?h]”hŒstruct module *owner”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Kóhj9ubj¸)�”}”(hhh]”j<)�”}”(hŒowner module of drv”h]”hŒowner module of drv”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jTh´KóhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jTh´Kóhjýubj˜)�”}”(hŒ,``const char *mod_name`` module name string ”h]”(jž)�”}”(hŒ``const char *mod_name``”h]”jB)�”}”(hjxh]”hŒconst char *mod_name”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Kôhjrubj¸)�”}”(hhh]”j<)�”}”(hŒmodule name string”h]”hŒmodule name string”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�h´KôhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j�h´Kôhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjáubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj³h]”hŒ Description”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´KöhjáubjX)�”}”(hX This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available. If devmodel is true then the new device model is used for registration. The **drv** structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver(). If using the non device model: The driver's attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you. The driver's detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”h]”(j<)�”}”(hŒ¢This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available.”h]”hŒ¢This can be called by a parallel port device driver in order to receive notifications about ports being found in the system, as well as ports no longer available.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´KõhjÉubj<)�”}”(hŒGIf devmodel is true then the new device model is used for registration.”h]”hŒGIf devmodel is true then the new device model is used for registration.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´KùhjÉubj<)�”}”(hŒ}The **drv** structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver().”h]”(hŒThe ”…”�”}”(hjëh²hh³Nh´Nubj})�”}”(hŒ**drv**”h]”hŒdrv”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjëubhŒr structure is allocated by the caller and must not be deallocated until after calling parport_unregister_driver().”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´KühjÉubj<)�”}”(hX?If using the non device model: The driver's attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you.”h]”hXAIf using the non device model: The driver’s attach() function may block. The port that attach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so. Calling parport_register_device() on that port will do this for you.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´KÿhjÉubj<)�”}”(hŒÚThe driver's detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so.”h]”hŒÜThe driver’s detach() function may block. The port that detach() is given will be valid for the duration of the callback, but if the driver wants to take a copy of the pointer it must call parport_get_port() to do so.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MhjÉubj<)�”}”(hŒ‚Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”h]”hŒ‚Returns 0 on success. The non device model will always succeeds. but the new device model can fail and will return the error code.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jÛh´Kõhjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ&parport_unregister_driver (C function)”Œc.parport_unregister_driver”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ;void parport_unregister_driver (struct parport_driver *drv)”h]”hè)�”}”(hŒ:void parport_unregister_driver(struct parport_driver *drv)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj[h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M>ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj[h²hh³jmh´M>ubhî)�”}”(hŒparport_unregister_driver”h]”hô)�”}”(hŒparport_unregister_driver”h]”hŒparport_unregister_driver”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj|ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj[h²hh³jmh´M>ubjÁ)�”}”(hŒ(struct parport_driver *drv)”h]”jÇ)�”}”(hŒstruct parport_driver *drv”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒparport_driver”h]”hŒparport_driver”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j¼Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj‚sbŒc.parport_unregister_driver”†”asbuh1hhj˜ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj˜ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj˜ubhô)�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj”ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj[h²hh³jmh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjWh²hh³jmh´M>ubah}”(h]”jRah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jmh´M>hjTh²hubj#)�”}”(hhh]”j<)�”}”(hŒ(deregister a parallel port device driver”h]”hŒ(deregister a parallel port device driver”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M>hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjTh²hh³jmh´M>ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j7j7j7j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXb**Parameters** ``struct parport_driver *drv`` structure describing the driver that was given to parport_register_driver() **Description** This should be called by a parallel port device driver that has registered itself using parport_register_driver() when it is about to be unloaded. When it returns, the driver's attach() routine will no longer be called, and for each port that attach() was called for, the detach() routine will have been called. All the driver's attach() and detach() calls are guaranteed to have finished by the time this function returns.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjAh]”hŒ Parameters”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MBhj;ubj“)�”}”(hhh]”j˜)�”}”(hŒk``struct parport_driver *drv`` structure describing the driver that was given to parport_register_driver() ”h]”(jž)�”}”(hŒ``struct parport_driver *drv``”h]”jB)�”}”(hj`h]”hŒstruct parport_driver *drv”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M@hjZubj¸)�”}”(hhh]”j<)�”}”(hŒKstructure describing the driver that was given to parport_register_driver()”h]”hŒKstructure describing the driver that was given to parport_register_driver()”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M?hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³juh´M@hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj;ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjœh]”hŒ Description”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MBhj;ubjX)�”}”(hX©This should be called by a parallel port device driver that has registered itself using parport_register_driver() when it is about to be unloaded. When it returns, the driver's attach() routine will no longer be called, and for each port that attach() was called for, the detach() routine will have been called. All the driver's attach() and detach() calls are guaranteed to have finished by the time this function returns.”h]”(j<)�”}”(hŒ’This should be called by a parallel port device driver that has registered itself using parport_register_driver() when it is about to be unloaded.”h]”hŒ’This should be called by a parallel port device driver that has registered itself using parport_register_driver() when it is about to be unloaded.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MAhj²ubj<)�”}”(hŒ¤When it returns, the driver's attach() routine will no longer be called, and for each port that attach() was called for, the detach() routine will have been called.”h]”hŒ¦When it returns, the driver’s attach() routine will no longer be called, and for each port that attach() was called for, the detach() routine will have been called.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MEhj²ubj<)�”}”(hŒoAll the driver's attach() and detach() calls are guaranteed to have finished by the time this function returns.”h]”hŒqAll the driver’s attach() and detach() calls are guaranteed to have finished by the time this function returns.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MIhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jÄh´MAhj;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_get_port (C function)”Œc.parport_get_port”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ8struct parport * parport_get_port (struct parport *port)”h]”hè)�”}”(hŒ6struct parport *parport_get_port(struct parport *port)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mkubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjh²hh³jh´Mkubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j*Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒparport_get_port”sbŒc.parport_get_port”†”asbuh1hhjh²hh³jh´Mkubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjh²hh³jh´Mkubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjh²hh³jh´Mkubhî)�”}”(hŒparport_get_port”h]”hô)�”}”(hjFh]”hŒparport_get_port”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjdubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjh²hh³jh´MkubjÁ)�”}”(hŒ(struct parport *port)”h]”jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjƒh²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—hjubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j£Œmodname”NŒ classname”Njj )�”}”j]”jDŒc.parport_get_port”†”asbuh1hhjubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj{ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjh²hh³jh´Mkubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjh²hh³jh´Mkubah}”(h]”jüah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jh´Mkhjþh²hubj#)�”}”(hhh]”j<)�”}”(hŒ"increment a port's reference count”h]”hŒ$increment a port’s reference count”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mkhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjþh²hh³jh´Mkubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jj7jj8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hŒ´**Parameters** ``struct parport *port`` the port **Description** This ensures that a struct parport pointer remains valid until the matching parport_put_port() call.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj&h]”hŒ Parameters”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mohj ubj“)�”}”(hhh]”j˜)�”}”(hŒ"``struct parport *port`` the port ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hjEh]”hŒstruct parport *port”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mlhj?ubj¸)�”}”(hhh]”j<)�”}”(hŒthe port”h]”hŒthe port”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jZh´Mlhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jZh´Mlhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj€h]”hŒ Description”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mnhj ubjX)�”}”(hŒdThis ensures that a struct parport pointer remains valid until the matching parport_put_port() call.”h]”j<)�”}”(hŒdThis ensures that a struct parport pointer remains valid until the matching parport_put_port() call.”h]”hŒdThis ensures that a struct parport pointer remains valid until the matching parport_put_port() call.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mmhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j¨h´Mmhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_put_port (C function)”Œc.parport_put_port”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ,void parport_put_port (struct parport *port)”h]”hè)�”}”(hŒ+void parport_put_port(struct parport *port)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjËh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.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î)�”}”(hŒparport_put_port”h]”hô)�”}”(hŒparport_put_port”h]”hŒparport_put_port”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjìubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjËh²hh³jÝh´M�ubjÁ)�”}”(hŒ(struct parport *port)”h]”jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j,Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjòsbŒc.parport_put_port”†”asbuh1hhjubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjËh²hh³jÝh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjÇh²hh³jÝh´M�ubah}”(h]”jÂah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jÝh´M�hjÄh²hubj#)�”}”(hhh]”j<)�”}”(hŒ"decrement a port's reference count”h]”hŒ$decrement a port’s reference count”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M�hjŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÄh²hh³jÝh´M�ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j§j7j§j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX **Parameters** ``struct parport *port`` the port **Description** This should be called once for each call to parport_get_port(), once the port is no longer needed. When the reference count reaches zero (port is no longer used), free_port is called.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj±h]”hŒ Parameters”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M…hj«ubj“)�”}”(hhh]”j˜)�”}”(hŒ"``struct parport *port`` the port ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hjÐh]”hŒstruct parport *port”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M‚hjÊubj¸)�”}”(hhh]”j<)�”}”(hŒthe port”h]”hŒthe port”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jåh´M‚hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jåh´M‚hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj«ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M„hj«ubjX)�”}”(hŒ·This should be called once for each call to parport_get_port(), once the port is no longer needed. When the reference count reaches zero (port is no longer used), free_port is called.”h]”j<)�”}”(hŒ·This should be called once for each call to parport_get_port(), once the port is no longer needed. When the reference count reaches zero (port is no longer used), free_port is called.”h]”hŒ·This should be called once for each call to parport_get_port(), once the port is no longer needed. When the reference count reaches zero (port is no longer used), free_port is called.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mƒhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j3h´Mƒhj«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ"parport_register_port (C function)”Œc.parport_register_port”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒmstruct parport * parport_register_port (unsigned long base, int irq, int dma, struct parport_operations *ops)”h]”hè)�”}”(hŒkstruct parport *parport_register_port(unsigned long base, int irq, int dma, struct parport_operations *ops)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjVh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M�ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjVh²hh³jgh´M�ubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j{Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒparport_register_port”sbŒc.parport_register_port”†”asbuh1hhjVh²hh³jgh´M�ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjVh²hh³jgh´M�ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjVh²hh³jgh´M�ubhî)�”}”(hŒparport_register_port”h]”hô)�”}”(hj—h]”hŒparport_register_port”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjµubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjVh²hh³jgh´M�ubjÁ)�”}”(hŒF(unsigned long base, int irq, int dma, struct parport_operations *ops)”h]”(jÇ)�”}”(hŒunsigned long base”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Œlong”h]”hŒlong”…”�”}”(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ô)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjÌubjÇ)�”}”(hŒint irq”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj!ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj!ubhô)�”}”(hŒirq”h]”hŒirq”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjÌubjÇ)�”}”(hŒint dma”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjVubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjVubhô)�”}”(hŒdma”h]”hŒdma”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjÌubjÇ)�”}”(hŒstruct parport_operations *ops”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒparport_operations”h]”hŒparport_operations”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j¯Œmodname”NŒ classname”Njj )�”}”j]”j•Œc.parport_register_port”†”asbuh1hhj‹ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj‹ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj‹ubhô)�”}”(hŒops”h]”hŒops”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjÌubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjVh²hh³jgh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjRh²hh³jgh´M�ubah}”(h]”jMah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jgh´M�hjOh²hubj#)�”}”(hhh]”j<)�”}”(hŒregister a parallel port”h]”hŒregister a parallel port”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M�hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjOh²hh³jgh´M�ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j( j7j( j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXî**Parameters** ``unsigned long base`` base I/O address ``int irq`` IRQ line ``int dma`` DMA channel ``struct parport_operations *ops`` pointer to the port driver's port operations structure **Description** When a parallel port (lowlevel) driver finds a port that should be made available to parallel port device drivers, it should call parport_register_port(). The **base**, **irq**, and **dma** parameters are for the convenience of port drivers, and for ports where they aren't meaningful needn't be set to anything special. They can be altered afterwards by adjusting the relevant members of the parport structure that is returned and represents the port. They should not be tampered with after calling parport_announce_port, however. If there are parallel port device drivers in the system that have registered themselves using parport_register_driver(), they are not told about the port at this time; that is done by parport_announce_port(). The **ops** structure is allocated by the caller, and must not be deallocated before calling parport_remove_port(). If there is no memory to allocate a new parport structure, this function will return ``NULL``.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj2 h]”hŒ Parameters”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M”hj, ubj“)�”}”(hhh]”(j˜)�”}”(hŒ(``unsigned long base`` base I/O address ”h]”(jž)�”}”(hŒ``unsigned long base``”h]”jB)�”}”(hjQ h]”hŒunsigned long base”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M‘hjK ubj¸)�”}”(hhh]”j<)�”}”(hŒbase I/O address”h]”hŒbase I/O address”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jf h´M‘hjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jf h´M‘hjH ubj˜)�”}”(hŒ``int irq`` IRQ line ”h]”(jž)�”}”(hŒ ``int irq``”h]”jB)�”}”(hjŠ h]”hŒint irq”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M’hj„ ubj¸)�”}”(hhh]”j<)�”}”(hŒIRQ line”h]”hŒIRQ line”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŸ h´M’hj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj„ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jŸ h´M’hjH ubj˜)�”}”(hŒ``int dma`` DMA channel ”h]”(jž)�”}”(hŒ ``int dma``”h]”jB)�”}”(hjà h]”hŒint dma”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M“hj½ ubj¸)�”}”(hhh]”j<)�”}”(hŒ DMA channel”h]”hŒ DMA channel”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jØ h´M“hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj½ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jØ h´M“hjH ubj˜)�”}”(hŒZ``struct parport_operations *ops`` pointer to the port driver's port operations structure ”h]”(jž)�”}”(hŒ"``struct parport_operations *ops``”h]”jB)�”}”(hjü h]”hŒstruct parport_operations *ops”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M”hjö ubj¸)�”}”(hhh]”j<)�”}”(hŒ6pointer to the port driver's port operations structure”h]”hŒ8pointer to the port driver’s port operations structure”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j!h´M”hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjö ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j!h´M”hjH ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj, ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj7!h]”hŒ Description”…”�”}”(hj9!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj5!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M–hj, ubjX)�”}”(hX½When a parallel port (lowlevel) driver finds a port that should be made available to parallel port device drivers, it should call parport_register_port(). The **base**, **irq**, and **dma** parameters are for the convenience of port drivers, and for ports where they aren't meaningful needn't be set to anything special. They can be altered afterwards by adjusting the relevant members of the parport structure that is returned and represents the port. They should not be tampered with after calling parport_announce_port, however. If there are parallel port device drivers in the system that have registered themselves using parport_register_driver(), they are not told about the port at this time; that is done by parport_announce_port(). The **ops** structure is allocated by the caller, and must not be deallocated before calling parport_remove_port(). If there is no memory to allocate a new parport structure, this function will return ``NULL``.”h]”(j<)�”}”(hXWhen a parallel port (lowlevel) driver finds a port that should be made available to parallel port device drivers, it should call parport_register_port(). The **base**, **irq**, and **dma** parameters are for the convenience of port drivers, and for ports where they aren't meaningful needn't be set to anything special. They can be altered afterwards by adjusting the relevant members of the parport structure that is returned and represents the port. They should not be tampered with after calling parport_announce_port, however.”h]”(hŒ When a parallel port (lowlevel) driver finds a port that should be made available to parallel port device drivers, it should call parport_register_port(). The ”…”�”}”(hjQ!h²hh³Nh´Nubj})�”}”(hŒ**base**”h]”hŒbase”…”�”}”(hjY!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjQ!ubhŒ, ”…”�”}”(hjQ!h²hh³Nh´Nubj})�”}”(hŒ**irq**”h]”hŒirq”…”�”}”(hjk!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjQ!ubhŒ, and ”…”�”}”(hjQ!h²hh³Nh´Nubj})�”}”(hŒ**dma**”h]”hŒdma”…”�”}”(hj}!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjQ!ubhX\ parameters are for the convenience of port drivers, and for ports where they aren’t meaningful needn’t be set to anything special. They can be altered afterwards by adjusting the relevant members of the parport structure that is returned and represents the port. They should not be tampered with after calling parport_announce_port, however.”…”�”}”(hjQ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M•hjM!ubj<)�”}”(hŒÐIf there are parallel port device drivers in the system that have registered themselves using parport_register_driver(), they are not told about the port at this time; that is done by parport_announce_port().”h]”hŒÐIf there are parallel port device drivers in the system that have registered themselves using parport_register_driver(), they are not told about the port at this time; that is done by parport_announce_port().”…”�”}”(hj–!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MŸhjM!ubj<)�”}”(hŒsThe **ops** structure is allocated by the caller, and must not be deallocated before calling parport_remove_port().”h]”(hŒThe ”…”�”}”(hj¥!h²hh³Nh´Nubj})�”}”(hŒ**ops**”h]”hŒops”…”�”}”(hj­!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¥!ubhŒh structure is allocated by the caller, and must not be deallocated before calling parport_remove_port().”…”�”}”(hj¥!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M¤hjM!ubj<)�”}”(hŒ^If there is no memory to allocate a new parport structure, this function will return ``NULL``.”h]”(hŒUIf there is no memory to allocate a new parport structure, this function will return ”…”�”}”(hjÆ!h²hh³Nh´NubjB)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÎ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÆ!ubhŒ.”…”�”}”(hjÆ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M§hjM!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j•!h´M•hj, ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ"parport_announce_port (C function)”Œc.parport_announce_port”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ1void parport_announce_port (struct parport *port)”h]”hè)�”}”(hŒ0void parport_announce_port(struct parport *port)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj "h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.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î)�”}”(hŒparport_announce_port”h]”hô)�”}”(hŒparport_announce_port”h]”hŒparport_announce_port”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj*"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj "h²hh³j"h´MñubjÁ)�”}”(hŒ(struct parport *port)”h]”jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjJ"h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjF"ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW"h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjF"ubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjh"h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhje"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jj"Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj0"sbŒc.parport_announce_port”†”asbuh1hhjF"ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjF"ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj–"h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjF"ubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hj£"h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjF"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjB"ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj "h²hh³j"h´Mñubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj"h²hh³j"h´Mñubah}”(h]”j"ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j"h´Mñhj"h²hubj#)�”}”(hhh]”j<)�”}”(hŒ)tell device drivers about a parallel port”h]”hŒ)tell device drivers about a parallel port”…”�”}”(hjÍ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MñhjÊ"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj"h²hh³j"h´Mñubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jå"j7jå"j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXÁ**Parameters** ``struct parport *port`` parallel port to announce **Description** After a port driver has registered a parallel port with parport_register_port, and performed any necessary initialisation or adjustments, it should call parport_announce_port() in order to notify all device drivers that have called parport_register_driver(). Their attach() functions will be called, with **port** as the parameter.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjï"h]”hŒ Parameters”…”�”}”(hjñ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjí"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mõhjé"ubj“)�”}”(hhh]”j˜)�”}”(hŒ3``struct parport *port`` parallel port to announce ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj#h]”hŒstruct parport *port”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mòhj#ubj¸)�”}”(hhh]”j<)�”}”(hŒparallel port to announce”h]”hŒparallel port to announce”…”�”}”(hj'#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j##h´Mòhj$#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j##h´Mòhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjé"ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjI#h]”hŒ Description”…”�”}”(hjK#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjG#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Môhjé"ubjX)�”}”(hXLAfter a port driver has registered a parallel port with parport_register_port, and performed any necessary initialisation or adjustments, it should call parport_announce_port() in order to notify all device drivers that have called parport_register_driver(). Their attach() functions will be called, with **port** as the parameter.”h]”j<)�”}”(hXLAfter a port driver has registered a parallel port with parport_register_port, and performed any necessary initialisation or adjustments, it should call parport_announce_port() in order to notify all device drivers that have called parport_register_driver(). Their attach() functions will be called, with **port** as the parameter.”h]”(hX2After a port driver has registered a parallel port with parport_register_port, and performed any necessary initialisation or adjustments, it should call parport_announce_port() in order to notify all device drivers that have called parport_register_driver(). Their attach() functions will be called, with ”…”�”}”(hjc#h²hh³Nh´Nubj})�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjk#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjc#ubhŒ as the parameter.”…”�”}”(hjc#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Móhj_#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jƒ#h´Móhjé"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ parport_remove_port (C function)”Œc.parport_remove_port”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ/void parport_remove_port (struct parport *port)”h]”hè)�”}”(hŒ.void parport_remove_port(struct parport *port)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjª#h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj¦#h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.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î)�”}”(hŒparport_remove_port”h]”hô)�”}”(hŒparport_remove_port”h]”hŒparport_remove_port”…”�”}”(hjË#h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÇ#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj¦#h²hh³j¸#h´M!ubjÁ)�”}”(hŒ(struct parport *port)”h]”jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j$Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjÍ#sbŒc.parport_remove_port”†”asbuh1hhjã#ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjã#ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj3$h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjã#ubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hj@$h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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ˆuh1hçjjhj¢#h²hh³j¸#h´M!ubah}”(h]”j�#ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j¸#h´M!hjŸ#h²hubj#)�”}”(hhh]”j<)�”}”(hŒderegister a parallel port”h]”hŒderegister a parallel port”…”�”}”(hjj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M!hjg$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjŸ#h²hh³j¸#h´M!ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j‚$j7j‚$j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXÅ**Parameters** ``struct parport *port`` parallel port to deregister **Description** When a parallel port driver is forcibly unloaded, or a parallel port becomes inaccessible, the port driver must call this function in order to deal with device drivers that still want to use it. The parport structure associated with the port has its operations structure replaced with one containing 'null' operations that return errors or just don't do anything. Any drivers that have registered themselves using parport_register_driver() are notified that the port is no longer accessible by having their detach() routines called with **port** as the parameter.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjŒ$h]”hŒ Parameters”…”�”}”(hjŽ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjŠ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M%hj†$ubj“)�”}”(hhh]”j˜)�”}”(hŒ5``struct parport *port`` parallel port to deregister ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj«$h]”hŒstruct parport *port”…”�”}”(hj­$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj©$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M"hj¥$ubj¸)�”}”(hhh]”j<)�”}”(hŒparallel port to deregister”h]”hŒparallel port to deregister”…”�”}”(hjÄ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÀ$h´M"hjÁ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¥$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÀ$h´M"hj¢$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj†$ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjæ$h]”hŒ Description”…”�”}”(hjè$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjä$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M$hj†$ubjX)�”}”(hX5When a parallel port driver is forcibly unloaded, or a parallel port becomes inaccessible, the port driver must call this function in order to deal with device drivers that still want to use it. The parport structure associated with the port has its operations structure replaced with one containing 'null' operations that return errors or just don't do anything. Any drivers that have registered themselves using parport_register_driver() are notified that the port is no longer accessible by having their detach() routines called with **port** as the parameter.”h]”(j<)�”}”(hŒÂWhen a parallel port driver is forcibly unloaded, or a parallel port becomes inaccessible, the port driver must call this function in order to deal with device drivers that still want to use it.”h]”hŒÂWhen a parallel port driver is forcibly unloaded, or a parallel port becomes inaccessible, the port driver must call this function in order to deal with device drivers that still want to use it.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M#hjü$ubj<)�”}”(hŒ¨The parport structure associated with the port has its operations structure replaced with one containing 'null' operations that return errors or just don't do anything.”h]”hŒ®The parport structure associated with the port has its operations structure replaced with one containing ‘null’ operations that return errors or just don’t do anything.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M(hjü$ubj<)�”}”(hŒÇAny drivers that have registered themselves using parport_register_driver() are notified that the port is no longer accessible by having their detach() routines called with **port** as the parameter.”h]”(hŒ­Any drivers that have registered themselves using parport_register_driver() are notified that the port is no longer accessible by having their detach() routines called with ”…”�”}”(hj%h²hh³Nh´Nubj})�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj&%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj%ubhŒ as the parameter.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M,hjü$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j%h´M#hj†$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ'parport_register_dev_model (C function)”Œc.parport_register_dev_model”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ‚struct pardevice * parport_register_dev_model (struct parport *port, const char *name, const struct pardev_cb *par_dev_cb, int id)”h]”hè)�”}”(hŒ€struct pardevice *parport_register_dev_model(struct parport *port, const char *name, const struct pardev_cb *par_dev_cb, int id)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hje%h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhja%h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Miubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs%h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hja%h²hh³jr%h´Miubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hj„%h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj�%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j†%Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒparport_register_dev_model”sbŒc.parport_register_dev_model”†”asbuh1hhja%h²hh³jr%h´Miubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥%h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hja%h²hh³jr%h´Miubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj³%h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hja%h²hh³jr%h´Miubhî)�”}”(hŒparport_register_dev_model”h]”hô)�”}”(hj¢%h]”hŒparport_register_dev_model”…”�”}”(hjÄ%h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÀ%ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhja%h²hh³jr%h´MiubjÁ)�”}”(hŒT(struct parport *port, const char *name, const struct pardev_cb *par_dev_cb, int id)”h]”(jÇ)�”}”(hŒstruct parport *port”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjý%h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjú%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jÿ%Œmodname”NŒ classname”Njj )�”}”j]”j %Œc.parport_register_dev_model”†”asbuh1hhjÛ%ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÛ%ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj)&h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÛ%ubhô)�”}”(hŒport”h]”hŒport”…”�”}”(hj6&h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÛ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj×%ubjÇ)�”}”(hŒconst char *name”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjO&h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjK&ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\&h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjK&ubj†)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjj&h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjK&ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx&h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjK&ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj†&h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjK&ubhô)�”}”(hŒname”h]”hŒname”…”�”}”(hj“&h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjK&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj×%ubjÇ)�”}”(hŒ"const struct pardev_cb *par_dev_cb”h]”(jÍ)�”}”(hjÉh]”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Í)�”}”(hjÐh]”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]”hô)�”}”(hŒ pardev_cb”h]”hŒ pardev_cb”…”�”}”(hjå&h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjâ&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jç&Œmodname”NŒ classname”Njj )�”}”j]”j %Œc.parport_register_dev_model”†”asbuh1hhj¨&ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¨&ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj¨&ubhô)�”}”(hŒ par_dev_cb”h]”hŒ par_dev_cb”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¨&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj×%ubjÇ)�”}”(hŒint id”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj7'h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj3'ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE'h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj3'ubhô)�”}”(hŒid”h]”hŒid”…”�”}”(hjS'h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj3'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj×%ubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhja%h²hh³jr%h´Miubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj]%h²hh³jr%h´Miubah}”(h]”jX%ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jr%h´MihjZ%h²hubj#)�”}”(hhh]”j<)�”}”(hŒ$register a device on a parallel port”h]”hŒ$register a device on a parallel port”…”�”}”(hj}'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mihjz'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjZ%h²hh³jr%h´Miubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j•'j7j•'j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXÙ **Parameters** ``struct parport *port`` port to which the device is attached ``const char *name`` a name to refer to the device ``const struct pardev_cb *par_dev_cb`` struct containing callbacks ``int id`` device number to be given to the device **Description** This function, called by parallel port device drivers, declares that a device is connected to a port, and tells the system all it needs to know. The struct pardev_cb contains pointer to callbacks. preemption callback function, **preempt**, is called when this device driver has claimed access to the port but another device driver wants to use it. It is given, **private**, as its parameter, and should return zero if it is willing for the system to release the port to another driver on its behalf. If it wants to keep control of the port it should return non-zero, and no action will be taken. It is good manners for the driver to try to release the port at the earliest opportunity after its preemption callback rejects a preemption attempt. Note that if a preemption callback is happy for preemption to go ahead, there is no need to release the port; it is done automatically. This function may not block, as it may be called from interrupt context. If the device driver does not support preemption, **preempt** can be ``NULL``. The wake-up ("kick") callback function, **wakeup**, is called when the port is available to be claimed for exclusive access; that is, parport_claim() is guaranteed to succeed when called from inside the wake-up callback function. If the driver wants to claim the port it should do so; otherwise, it need not take any action. This function may not block, as it may be called from interrupt context. If the device driver does not want to be explicitly invited to claim the port in this way, **wakeup** can be ``NULL``. The interrupt handler, **irq_func**, is called when an interrupt arrives from the parallel port. Note that if a device driver wants to use interrupts it should use parport_enable_irq(), and can also check the irq member of the parport structure representing the port. The parallel port (lowlevel) driver is the one that has called request_irq() and whose interrupt handler is called first. This handler does whatever needs to be done to the hardware to acknowledge the interrupt (for PC-style ports there is nothing special to be done). It then tells the IEEE 1284 code about the interrupt, which may involve reacting to an IEEE 1284 event depending on the current IEEE 1284 phase. After this, it calls **irq_func**. Needless to say, **irq_func** will be called from interrupt context, and may not block. The ``PARPORT_DEV_EXCL`` flag is for preventing port sharing, and so should only be used when sharing the port with other device drivers is impossible and would lead to incorrect behaviour. Use it sparingly! Normally, **flags** will be zero. This function returns a pointer to a structure that represents the device on the port, or ``NULL`` if there is not enough memory to allocate space for that structure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjŸ'h]”hŒ Parameters”…”�”}”(hj¡'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj�'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mmhj™'ubj“)�”}”(hhh]”(j˜)�”}”(hŒ>``struct parport *port`` port to which the device is attached ”h]”(jž)�”}”(hŒ``struct parport *port``”h]”jB)�”}”(hj¾'h]”hŒstruct parport *port”…”�”}”(hjÀ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¼'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mjhj¸'ubj¸)�”}”(hhh]”j<)�”}”(hŒ$port to which the device is attached”h]”hŒ$port to which the device is attached”…”�”}”(hj×'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÓ'h´MjhjÔ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¸'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÓ'h´Mjhjµ'ubj˜)�”}”(hŒ3``const char *name`` a name to refer to the device ”h]”(jž)�”}”(hŒ``const char *name``”h]”jB)�”}”(hj÷'h]”hŒconst char *name”…”�”}”(hjù'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjõ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mkhjñ'ubj¸)�”}”(hhh]”j<)�”}”(hŒa name to refer to the device”h]”hŒa name to refer to the device”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j (h´Mkhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjñ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j (h´Mkhjµ'ubj˜)�”}”(hŒC``const struct pardev_cb *par_dev_cb`` struct containing callbacks ”h]”(jž)�”}”(hŒ&``const struct pardev_cb *par_dev_cb``”h]”jB)�”}”(hj0(h]”hŒ"const struct pardev_cb *par_dev_cb”…”�”}”(hj2(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj.(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mlhj*(ubj¸)�”}”(hhh]”j<)�”}”(hŒstruct containing callbacks”h]”hŒstruct containing callbacks”…”�”}”(hjI(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jE(h´MlhjF(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj*(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jE(h´Mlhjµ'ubj˜)�”}”(hŒ3``int id`` device number to be given to the device ”h]”(jž)�”}”(hŒ ``int id``”h]”jB)�”}”(hji(h]”hŒint id”…”�”}”(hjk(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjg(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mmhjc(ubj¸)�”}”(hhh]”j<)�”}”(hŒ'device number to be given to the device”h]”hŒ'device number to be given to the device”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j~(h´Mmhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjc(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j~(h´Mmhjµ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj™'ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj¤(h]”hŒ Description”…”�”}”(hj¦(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¢(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mohj™'ubjX)�”}”(hXÚ This function, called by parallel port device drivers, declares that a device is connected to a port, and tells the system all it needs to know. The struct pardev_cb contains pointer to callbacks. preemption callback function, **preempt**, is called when this device driver has claimed access to the port but another device driver wants to use it. It is given, **private**, as its parameter, and should return zero if it is willing for the system to release the port to another driver on its behalf. If it wants to keep control of the port it should return non-zero, and no action will be taken. It is good manners for the driver to try to release the port at the earliest opportunity after its preemption callback rejects a preemption attempt. Note that if a preemption callback is happy for preemption to go ahead, there is no need to release the port; it is done automatically. This function may not block, as it may be called from interrupt context. If the device driver does not support preemption, **preempt** can be ``NULL``. The wake-up ("kick") callback function, **wakeup**, is called when the port is available to be claimed for exclusive access; that is, parport_claim() is guaranteed to succeed when called from inside the wake-up callback function. If the driver wants to claim the port it should do so; otherwise, it need not take any action. This function may not block, as it may be called from interrupt context. If the device driver does not want to be explicitly invited to claim the port in this way, **wakeup** can be ``NULL``. The interrupt handler, **irq_func**, is called when an interrupt arrives from the parallel port. Note that if a device driver wants to use interrupts it should use parport_enable_irq(), and can also check the irq member of the parport structure representing the port. The parallel port (lowlevel) driver is the one that has called request_irq() and whose interrupt handler is called first. This handler does whatever needs to be done to the hardware to acknowledge the interrupt (for PC-style ports there is nothing special to be done). It then tells the IEEE 1284 code about the interrupt, which may involve reacting to an IEEE 1284 event depending on the current IEEE 1284 phase. After this, it calls **irq_func**. Needless to say, **irq_func** will be called from interrupt context, and may not block. The ``PARPORT_DEV_EXCL`` flag is for preventing port sharing, and so should only be used when sharing the port with other device drivers is impossible and would lead to incorrect behaviour. Use it sparingly! Normally, **flags** will be zero. This function returns a pointer to a structure that represents the device on the port, or ``NULL`` if there is not enough memory to allocate space for that structure.”h]”(j<)�”}”(hŒ�This function, called by parallel port device drivers, declares that a device is connected to a port, and tells the system all it needs to know.”h]”hŒ�This function, called by parallel port device drivers, declares that a device is connected to a port, and tells the system all it needs to know.”…”�”}”(hj¾(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mnhjº(ubj<)�”}”(hXxThe struct pardev_cb contains pointer to callbacks. preemption callback function, **preempt**, is called when this device driver has claimed access to the port but another device driver wants to use it. It is given, **private**, as its parameter, and should return zero if it is willing for the system to release the port to another driver on its behalf. If it wants to keep control of the port it should return non-zero, and no action will be taken. It is good manners for the driver to try to release the port at the earliest opportunity after its preemption callback rejects a preemption attempt. Note that if a preemption callback is happy for preemption to go ahead, there is no need to release the port; it is done automatically. This function may not block, as it may be called from interrupt context. If the device driver does not support preemption, **preempt** can be ``NULL``.”h]”(hŒRThe struct pardev_cb contains pointer to callbacks. preemption callback function, ”…”�”}”(hjÍ(h²hh³Nh´Nubj})�”}”(hŒ **preempt**”h]”hŒpreempt”…”�”}”(hjÕ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÍ(ubhŒ|, is called when this device driver has claimed access to the port but another device driver wants to use it. It is given, ”…”�”}”(hjÍ(h²hh³Nh´Nubj})�”}”(hŒ **private**”h]”hŒprivate”…”�”}”(hjç(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÍ(ubhXx, as its parameter, and should return zero if it is willing for the system to release the port to another driver on its behalf. If it wants to keep control of the port it should return non-zero, and no action will be taken. It is good manners for the driver to try to release the port at the earliest opportunity after its preemption callback rejects a preemption attempt. Note that if a preemption callback is happy for preemption to go ahead, there is no need to release the port; it is done automatically. This function may not block, as it may be called from interrupt context. If the device driver does not support preemption, ”…”�”}”(hjÍ(h²hh³Nh´Nubj})�”}”(hŒ **preempt**”h]”hŒpreempt”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÍ(ubhŒ can be ”…”�”}”(hjÍ(h²hh³Nh´NubjB)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÍ(ubhŒ.”…”�”}”(hjÍ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mrhjº(ubj<)�”}”(hXThe wake-up ("kick") callback function, **wakeup**, is called when the port is available to be claimed for exclusive access; that is, parport_claim() is guaranteed to succeed when called from inside the wake-up callback function. If the driver wants to claim the port it should do so; otherwise, it need not take any action. This function may not block, as it may be called from interrupt context. If the device driver does not want to be explicitly invited to claim the port in this way, **wakeup** can be ``NULL``.”h]”(hŒ,The wake-up (“kickâ€�) callback function, ”…”�”}”(hj$)h²hh³Nh´Nubj})�”}”(hŒ **wakeup**”h]”hŒwakeup”…”�”}”(hj,)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj$)ubhXº, is called when the port is available to be claimed for exclusive access; that is, parport_claim() is guaranteed to succeed when called from inside the wake-up callback function. If the driver wants to claim the port it should do so; otherwise, it need not take any action. This function may not block, as it may be called from interrupt context. If the device driver does not want to be explicitly invited to claim the port in this way, ”…”�”}”(hj$)h²hh³Nh´Nubj})�”}”(hŒ **wakeup**”h]”hŒwakeup”…”�”}”(hj>)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj$)ubhŒ can be ”…”�”}”(hj$)h²hh³Nh´NubjB)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjP)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj$)ubhŒ.”…”�”}”(hj$)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M�hjº(ubj<)�”}”(hX The interrupt handler, **irq_func**, is called when an interrupt arrives from the parallel port. Note that if a device driver wants to use interrupts it should use parport_enable_irq(), and can also check the irq member of the parport structure representing the port.”h]”(hŒThe interrupt handler, ”…”�”}”(hji)h²hh³Nh´Nubj})�”}”(hŒ **irq_func**”h]”hŒirq_func”…”�”}”(hjq)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hji)ubhŒé, is called when an interrupt arrives from the parallel port. Note that if a device driver wants to use interrupts it should use parport_enable_irq(), and can also check the irq member of the parport structure representing the port.”…”�”}”(hji)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M‹hjº(ubj<)�”}”(hXThe parallel port (lowlevel) driver is the one that has called request_irq() and whose interrupt handler is called first. This handler does whatever needs to be done to the hardware to acknowledge the interrupt (for PC-style ports there is nothing special to be done). It then tells the IEEE 1284 code about the interrupt, which may involve reacting to an IEEE 1284 event depending on the current IEEE 1284 phase. After this, it calls **irq_func**. Needless to say, **irq_func** will be called from interrupt context, and may not block.”h]”(hXµThe parallel port (lowlevel) driver is the one that has called request_irq() and whose interrupt handler is called first. This handler does whatever needs to be done to the hardware to acknowledge the interrupt (for PC-style ports there is nothing special to be done). It then tells the IEEE 1284 code about the interrupt, which may involve reacting to an IEEE 1284 event depending on the current IEEE 1284 phase. After this, it calls ”…”�”}”(hjŠ)h²hh³Nh´Nubj})�”}”(hŒ **irq_func**”h]”hŒirq_func”…”�”}”(hj’)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjŠ)ubhŒ. Needless to say, ”…”�”}”(hjŠ)h²hh³Nh´Nubj})�”}”(hŒ **irq_func**”h]”hŒirq_func”…”�”}”(hj¤)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjŠ)ubhŒ: will be called from interrupt context, and may not block.”…”�”}”(hjŠ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M‘hjº(ubj<)�”}”(hŒòThe ``PARPORT_DEV_EXCL`` flag is for preventing port sharing, and so should only be used when sharing the port with other device drivers is impossible and would lead to incorrect behaviour. Use it sparingly! Normally, **flags** will be zero.”h]”(hŒThe ”…”�”}”(hj½)h²hh³Nh´NubjB)�”}”(hŒ``PARPORT_DEV_EXCL``”h]”hŒPARPORT_DEV_EXCL”…”�”}”(hjÅ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj½)ubhŒÃ flag is for preventing port sharing, and so should only be used when sharing the port with other device drivers is impossible and would lead to incorrect behaviour. Use it sparingly! Normally, ”…”�”}”(hj½)h²hh³Nh´Nubj})�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj×)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj½)ubhŒ will be zero.”…”�”}”(hj½)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M›hjº(ubj<)�”}”(hŒ¦This function returns a pointer to a structure that represents the device on the port, or ``NULL`` if there is not enough memory to allocate space for that structure.”h]”(hŒZThis function returns a pointer to a structure that represents the device on the port, or ”…”�”}”(hjð)h²hh³Nh´NubjB)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjø)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjð)ubhŒD if there is not enough memory to allocate space for that structure.”…”�”}”(hjð)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M hjº(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jÌ(h´Mnhj™'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ&parport_unregister_device (C function)”Œc.parport_unregister_device”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ6void parport_unregister_device (struct pardevice *dev)”h]”hè)�”}”(hŒ5void parport_unregister_device(struct pardevice *dev)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj7*h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj3*h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M4ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF*h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj3*h²hh³jE*h´M4ubhî)�”}”(hŒparport_unregister_device”h]”hô)�”}”(hŒparport_unregister_device”h]”hŒparport_unregister_device”…”�”}”(hjX*h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjT*ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj3*h²hh³jE*h´M4ubjÁ)�”}”(hŒ(struct pardevice *dev)”h]”jÇ)�”}”(hŒstruct pardevice *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjp*ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjp*ubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hj’*h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj�*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j”*Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjZ*sbŒc.parport_unregister_device”†”asbuh1hhjp*ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²*h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjp*ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjp*ubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÍ*h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjp*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjl*ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj3*h²hh³jE*h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj/*h²hh³jE*h´M4ubah}”(h]”j**ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jE*h´M4hj,*h²hubj#)�”}”(hhh]”j<)�”}”(hŒ&deregister a device on a parallel port”h]”hŒ&deregister a device on a parallel port”…”�”}”(hj÷*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M4hjô*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj,*h²hh³jE*h´M4ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j+j7j+j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hŒ **Parameters** ``struct pardevice *dev`` pointer to structure representing device **Description** This undoes the effect of parport_register_device().”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj+h]”hŒ Parameters”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M8hj+ubj“)�”}”(hhh]”j˜)�”}”(hŒC``struct pardevice *dev`` pointer to structure representing device ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hj8+h]”hŒstruct pardevice *dev”…”�”}”(hj:+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj6+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M5hj2+ubj¸)�”}”(hhh]”j<)�”}”(hŒ(pointer to structure representing device”h]”hŒ(pointer to structure representing device”…”�”}”(hjQ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jM+h´M5hjN+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj2+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jM+h´M5hj/+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj+ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjs+h]”hŒ Description”…”�”}”(hju+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjq+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M7hj+ubjX)�”}”(hŒ4This undoes the effect of parport_register_device().”h]”j<)�”}”(hj‹+h]”hŒ4This undoes the effect of parport_register_device().”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M6hj‰+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jš+h´M6hj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ parport_find_number (C function)”Œc.parport_find_number”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ1struct parport * parport_find_number (int number)”h]”hè)�”}”(hŒ/struct parport *parport_find_number(int number)”h]”(jÍ)�”}”(hjÐh]”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/miscellaneous:10: ./drivers/parport/share.c”h´Mzubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ+h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj½+h²hh³jÎ+h´Mzubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjà+h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÝ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jâ+Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒparport_find_number”sbŒc.parport_find_number”†”asbuh1hhj½+h²hh³jÎ+h´Mzubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj½+h²hh³jÎ+h´Mzubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj½+h²hh³jÎ+h´Mzubhî)�”}”(hŒparport_find_number”h]”hô)�”}”(hjþ+h]”hŒparport_find_number”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj,ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj½+h²hh³jÎ+h´MzubjÁ)�”}”(hŒ (int number)”h]”jÇ)�”}”(hŒ int number”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj;,h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj7,ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI,h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj7,ubhô)�”}”(hŒnumber”h]”hŒnumber”…”�”}”(hjW,h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj7,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj3,ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj½+h²hh³jÎ+h´Mzubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj¹+h²hh³jÎ+h´Mzubah}”(h]”j´+ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jÎ+h´Mzhj¶+h²hubj#)�”}”(hhh]”j<)�”}”(hŒfind a parallel port by number”h]”hŒfind a parallel port by number”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mzhj~,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj¶+h²hh³jÎ+h´Mzubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j™,j7j™,j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXU**Parameters** ``int number`` parallel port number **Description** This returns the parallel port with the specified number, or ``NULL`` if there is none. There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_number() gives you, use parport_put_port().”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj£,h]”hŒ Parameters”…”�”}”(hj¥,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¡,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M~hj�,ubj“)�”}”(hhh]”j˜)�”}”(hŒ$``int number`` parallel port number ”h]”(jž)�”}”(hŒ``int number``”h]”jB)�”}”(hjÂ,h]”hŒ int number”…”�”}”(hjÄ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÀ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M{hj¼,ubj¸)�”}”(hhh]”j<)�”}”(hŒparallel port number”h]”hŒparallel port number”…”�”}”(hjÛ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j×,h´M{hjØ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¼,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j×,h´M{hj¹,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj�,ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjý,h]”hŒ Description”…”�”}”(hjÿ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjû,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M}hj�,ubjX)�”}”(hŒôThis returns the parallel port with the specified number, or ``NULL`` if there is none. There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_number() gives you, use parport_put_port().”h]”(j<)�”}”(hŒWThis returns the parallel port with the specified number, or ``NULL`` if there is none.”h]”(hŒ=This returns the parallel port with the specified number, or ”…”�”}”(hj-h²hh³Nh´NubjB)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj-ubhŒ if there is none.”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M|hj-ubj<)�”}”(hŒ›There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_number() gives you, use parport_put_port().”h]”hŒ›There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_number() gives you, use parport_put_port().”…”�”}”(hj8-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j7-h´M|hj�,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_find_base (C function)”Œc.parport_find_base”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ7struct parport * parport_find_base (unsigned long base)”h]”hè)�”}”(hŒ5struct parport *parport_find_base(unsigned long base)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjm-h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhji-h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M™ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{-h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hji-h²hh³jz-h´M™ubh)�”}”(hhh]”hô)�”}”(hŒparport”h]”hŒparport”…”�”}”(hjŒ-h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‰-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jŽ-Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒparport_find_base”sbŒc.parport_find_base”†”asbuh1hhji-h²hh³jz-h´M™ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­-h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hji-h²hh³jz-h´M™ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj»-h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hji-h²hh³jz-h´M™ubhî)�”}”(hŒparport_find_base”h]”hô)�”}”(hjª-h]”hŒparport_find_base”…”�”}”(hjÌ-h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÈ-ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhji-h²hh³jz-h´M™ubjÁ)�”}”(hŒ(unsigned long base)”h]”jÇ)�”}”(hŒunsigned long base”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Œlong”h]”hŒlong”…”�”}”(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ô)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjã-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjß-ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhji-h²hh³jz-h´M™ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhje-h²hh³jz-h´M™ubah}”(h]”j`-ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jz-h´M™hjb-h²hubj#)�”}”(hhh]”j<)�”}”(hŒ$find a parallel port by base address”h]”hŒ$find a parallel port by base address”…”�”}”(hjI.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M™hjF.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjb-h²hh³jz-h´M™ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6ja.j7ja.j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX]**Parameters** ``unsigned long base`` base I/O address **Description** This returns the parallel port with the specified base address, or ``NULL`` if there is none. There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_base() gives you, use parport_put_port().”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjk.h]”hŒ Parameters”…”�”}”(hjm.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hji.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M�hje.ubj“)�”}”(hhh]”j˜)�”}”(hŒ(``unsigned long base`` base I/O address ”h]”(jž)�”}”(hŒ``unsigned long base``”h]”jB)�”}”(hjŠ.h]”hŒunsigned long base”…”�”}”(hjŒ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjˆ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mšhj„.ubj¸)�”}”(hhh]”j<)�”}”(hŒbase I/O address”h]”hŒbase I/O address”…”�”}”(hj£.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŸ.h´Mšhj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj„.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jŸ.h´Mšhj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hje.ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjÅ.h]”hŒ Description”…”�”}”(hjÇ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÃ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mœhje.ubjX)�”}”(hŒøThis returns the parallel port with the specified base address, or ``NULL`` if there is none. There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_base() gives you, use parport_put_port().”h]”(j<)�”}”(hŒ]This returns the parallel port with the specified base address, or ``NULL`` if there is none.”h]”(hŒCThis returns the parallel port with the specified base address, or ”…”�”}”(hjß.h²hh³Nh´NubjB)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjç.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjß.ubhŒ if there is none.”…”�”}”(hjß.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M›hjÛ.ubj<)�”}”(hŒ™There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_base() gives you, use parport_put_port().”h]”hŒ™There is an implicit parport_get_port() done already; to throw away the reference to the port that parport_find_base() gives you, use parport_put_port().”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MžhjÛ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jÿ.h´M›hje.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_claim (C function)”Œc.parport_claim”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ)int parport_claim (struct pardevice *dev)”h]”hè)�”}”(hŒ(int parport_claim(struct pardevice *dev)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj5/h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj1/h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M¸ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD/h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj1/h²hh³jC/h´M¸ubhî)�”}”(hŒ parport_claim”h]”hô)�”}”(hŒ parport_claim”h]”hŒ parport_claim”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjR/ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj1/h²hh³jC/h´M¸ubjÁ)�”}”(hŒ(struct pardevice *dev)”h]”jÇ)�”}”(hŒstruct pardevice *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjr/h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjn/ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjn/ubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj�/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j’/Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjX/sbŒc.parport_claim”†”asbuh1hhjn/ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°/h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjn/ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj¾/h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjn/ubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjË/h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjn/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjj/ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj1/h²hh³jC/h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj-/h²hh³jC/h´M¸ubah}”(h]”j(/ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jC/h´M¸hj*/h²hubj#)�”}”(hhh]”j<)�”}”(hŒ&claim access to a parallel port device”h]”hŒ&claim access to a parallel port device”…”�”}”(hjõ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M¸hjò/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj*/h²hh³jC/h´M¸ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j 0j7j 0j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXÔ**Parameters** ``struct pardevice *dev`` pointer to structure representing a device on the port **Description** This function will not block and so can be used from interrupt context. If parport_claim() succeeds in claiming access to the port it returns zero and the port is available to use. It may fail (returning non-zero) if the port is in use by another driver and that driver is not willing to relinquish control of the port.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj0h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M¼hj0ubj“)�”}”(hhh]”j˜)�”}”(hŒQ``struct pardevice *dev`` pointer to structure representing a device on the port ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hj60h]”hŒstruct pardevice *dev”…”�”}”(hj80h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj40ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M¹hj00ubj¸)�”}”(hhh]”j<)�”}”(hŒ6pointer to structure representing a device on the port”h]”hŒ6pointer to structure representing a device on the port”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jK0h´M¹hjL0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj00ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jK0h´M¹hj-0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj0ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjq0h]”hŒ Description”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjo0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M»hj0ubjX)�”}”(hXAThis function will not block and so can be used from interrupt context. If parport_claim() succeeds in claiming access to the port it returns zero and the port is available to use. It may fail (returning non-zero) if the port is in use by another driver and that driver is not willing to relinquish control of the port.”h]”j<)�”}”(hXAThis function will not block and so can be used from interrupt context. If parport_claim() succeeds in claiming access to the port it returns zero and the port is available to use. It may fail (returning non-zero) if the port is in use by another driver and that driver is not willing to relinquish control of the port.”h]”hXAThis function will not block and so can be used from interrupt context. If parport_claim() succeeds in claiming access to the port it returns zero and the port is available to use. It may fail (returning non-zero) if the port is in use by another driver and that driver is not willing to relinquish control of the port.”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mºhj‡0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j™0h´Mºhj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ#parport_claim_or_block (C function)”Œc.parport_claim_or_block”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ2int parport_claim_or_block (struct pardevice *dev)”h]”hè)�”}”(hŒ1int parport_claim_or_block(struct pardevice *dev)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjÀ0h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj¼0h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M,ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ0h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¼0h²hh³jÎ0h´M,ubhî)�”}”(hŒparport_claim_or_block”h]”hô)�”}”(hŒparport_claim_or_block”h]”hŒparport_claim_or_block”…”�”}”(hjá0h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÝ0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj¼0h²hh³jÎ0h´M,ubjÁ)�”}”(hŒ(struct pardevice *dev)”h]”jÇ)�”}”(hŒstruct pardevice *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjù0ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjù0ubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j1Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjã0sbŒc.parport_claim_or_block”†”asbuh1hhjù0ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;1h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjù0ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjI1h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjù0ubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjV1h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjù0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjõ0ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj¼0h²hh³jÎ0h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj¸0h²hh³jÎ0h´M,ubah}”(h]”j³0ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jÎ0h´M,hjµ0h²hubj#)�”}”(hhh]”j<)�”}”(hŒ&claim access to a parallel port device”h]”hŒ&claim access to a parallel port device”…”�”}”(hj€1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M,hj}1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjµ0h²hh³jÎ0h´M,ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j˜1j7j˜1j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hXt**Parameters** ``struct pardevice *dev`` pointer to structure representing a device on the port **Description** This behaves like parport_claim(), but will block if necessary to wait for the port to be free. A return value of 1 indicates that it slept; 0 means that it succeeded without needing to sleep. A negative error code indicates failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj¢1h]”hŒ Parameters”…”�”}”(hj¤1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj 1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M0hjœ1ubj“)�”}”(hhh]”j˜)�”}”(hŒQ``struct pardevice *dev`` pointer to structure representing a device on the port ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hjÁ1h]”hŒstruct pardevice *dev”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¿1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M-hj»1ubj¸)�”}”(hhh]”j<)�”}”(hŒ6pointer to structure representing a device on the port”h]”hŒ6pointer to structure representing a device on the port”…”�”}”(hjÚ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÖ1h´M-hj×1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj»1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÖ1h´M-hj¸1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjœ1ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjü1h]”hŒ Description”…”�”}”(hjþ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjú1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M/hjœ1ubjX)�”}”(hŒëThis behaves like parport_claim(), but will block if necessary to wait for the port to be free. A return value of 1 indicates that it slept; 0 means that it succeeded without needing to sleep. A negative error code indicates failure.”h]”j<)�”}”(hŒëThis behaves like parport_claim(), but will block if necessary to wait for the port to be free. A return value of 1 indicates that it slept; 0 means that it succeeded without needing to sleep. A negative error code indicates failure.”h]”hŒëThis behaves like parport_claim(), but will block if necessary to wait for the port to be free. A return value of 1 indicates that it slept; 0 means that it succeeded without needing to sleep. A negative error code indicates failure.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´M.hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j$2h´M.hjœ1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_release (C function)”Œc.parport_release”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ,void parport_release (struct pardevice *dev)”h]”hè)�”}”(hŒ+void parport_release(struct pardevice *dev)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK2h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjG2h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mnubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ2h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjG2h²hh³jY2h´Mnubhî)�”}”(hŒparport_release”h]”hô)�”}”(hŒparport_release”h]”hŒparport_release”…”�”}”(hjl2h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjh2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjG2h²hh³jY2h´MnubjÁ)�”}”(hŒ(struct pardevice *dev)”h]”jÇ)�”}”(hŒstruct pardevice *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjˆ2h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj„2ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•2h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj„2ubh)�”}”(hhh]”hô)�”}”(hŒ pardevice”h]”hŒ pardevice”…”�”}”(hj¦2h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj£2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j¨2Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjn2sbŒc.parport_release”†”asbuh1hhj„2ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ2h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj„2ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÔ2h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj„2ubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjá2h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj„2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj€2ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjG2h²hh³jY2h´Mnubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjC2h²hh³jY2h´Mnubah}”(h]”j>2ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jY2h´Mnhj@2h²hubj#)�”}”(hhh]”j<)�”}”(hŒ(give up access to a parallel port device”h]”hŒ(give up access to a parallel port device”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mnhj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj@2h²hh³jY2h´Mnubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j#3j7j#3j8‰j9‰j:‰uh1hÜh²hhh·h³Nh´Nubjs)�”}”(hX%**Parameters** ``struct pardevice *dev`` pointer to structure representing parallel port device **Description** This function cannot fail, but it should not be called without the port claimed. Similarly, if the port is already claimed you should not try claiming it again.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj-3h]”hŒ Parameters”…”�”}”(hj/3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj+3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mrhj'3ubj“)�”}”(hhh]”j˜)�”}”(hŒQ``struct pardevice *dev`` pointer to structure representing parallel port device ”h]”(jž)�”}”(hŒ``struct pardevice *dev``”h]”jB)�”}”(hjL3h]”hŒstruct pardevice *dev”…”�”}”(hjN3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjJ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´MohjF3ubj¸)�”}”(hhh]”j<)�”}”(hŒ6pointer to structure representing parallel port device”h]”hŒ6pointer to structure representing parallel port device”…”�”}”(hje3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³ja3h´Mohjb3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjF3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³ja3h´MohjC3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj'3ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj‡3h]”hŒ Description”…”�”}”(hj‰3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj…3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mqhj'3ubjX)�”}”(hŒ¡This function cannot fail, but it should not be called without the port claimed. Similarly, if the port is already claimed you should not try claiming it again.”h]”j<)�”}”(hŒ¡This function cannot fail, but it should not be called without the port claimed. Similarly, if the port is already claimed you should not try claiming it again.”h]”hŒ¡This function cannot fail, but it should not be called without the port claimed. Similarly, if the port is already claimed you should not try claiming it again.”…”�”}”(hj¡3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:10: ./drivers/parport/share.c”h´Mphj�3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j¯3h´Mphj'3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhh·h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒparport_open (C function)”Œc.parport_open”hNt”auh1hËhh·h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ>struct pardevice * parport_open (int devnum, const char *name)”h]”hè)�”}”(hŒ9h²hh³jT9h´Mwubah}”(h]”j99ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jT9h´Mwhj;9h²hubj#)�”}”(hhh]”j<)�”}”(hŒresume one serial port”h]”hŒresume one serial port”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´Mwhj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj;9h²hh³jT9h´Mwubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j:j7j:j8‰j9‰j:‰uh1hÜh²hhj’7h³Nh´Nubjs)�”}”(hŒj**Parameters** ``struct uart_8250_port *up`` serial port **Description** Resume one serial port.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj(:h]”hŒ Parameters”…”�”}”(hj*:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj&:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M{hj":ubj“)�”}”(hhh]”j˜)�”}”(hŒ*``struct uart_8250_port *up`` serial port ”h]”(jž)�”}”(hŒ``struct uart_8250_port *up``”h]”jB)�”}”(hjG:h]”hŒstruct uart_8250_port *up”…”�”}”(hjI:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjE:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´MxhjA:ubj¸)�”}”(hhh]”j<)�”}”(hŒ serial port”h]”hŒ serial port”…”�”}”(hj`:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j\:h´Mxhj]:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjA:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j\:h´Mxhj>:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj":ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj‚:h]”hŒ Description”…”�”}”(hj„:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´Mzhj":ubjX)�”}”(hŒResume one serial port.”h]”j<)�”}”(hjš:h]”hŒResume one serial port.”…”�”}”(hjœ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´Myhj˜:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j©:h´Myhj":ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhj’7h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ*serial8250_register_8250_port (C function)”Œc.serial8250_register_8250_port”hNt”auh1hËhj’7h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒWstruct uart_8250_port * serial8250_register_8250_port (const struct uart_8250_port *up)”h]”hè)�”}”(hŒUstruct uart_8250_port *serial8250_register_8250_port(const struct uart_8250_port *up)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjÐ:h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjÌ:h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.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]”hô)�”}”(hŒuart_8250_port”h]”hŒuart_8250_port”…”�”}”(hjï:h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjì:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jñ:Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒserial8250_register_8250_port”sbŒc.serial8250_register_8250_port”†”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{ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÌ:h²hh³jÝ:h´M{ubhî)�”}”(hŒserial8250_register_8250_port”h]”hô)�”}”(hj ;h]”hŒserial8250_register_8250_port”…”�”}”(hj/;h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj+;ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjÌ:h²hh³jÝ:h´M{ubjÁ)�”}”(hŒ!(const struct uart_8250_port *up)”h]”jÇ)�”}”(hŒconst struct uart_8250_port *up”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjJ;h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjF;ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW;h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjF;ubjÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hje;h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjF;ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr;h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjF;ubh)�”}”(hhh]”hô)�”}”(hŒuart_8250_port”h]”hŒuart_8250_port”…”�”}”(hjƒ;h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj€;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j…;Œmodname”NŒ classname”Njj )�”}”j]”j ;Œc.serial8250_register_8250_port”†”asbuh1hhjF;ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡;h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjF;ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj¯;h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjF;ubhô)�”}”(hŒup”h]”hŒup”…”�”}”(hj¼;h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjF;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjB;ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjÌ:h²hh³jÝ:h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjÈ:h²hh³jÝ:h´M{ubah}”(h]”jÃ:ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jÝ:h´M{hjÅ:h²hubj#)�”}”(hhh]”j<)�”}”(hŒregister a serial port”h]”hŒregister a serial port”…”�”}”(hjæ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M{hjã;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÅ:h²hh³jÝ:h´M{ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jþ;j7jþ;j8‰j9‰j:‰uh1hÜh²hhj’7h³Nh´Nubjs)�”}”(hX¢**Parameters** ``const struct uart_8250_port *up`` serial port template **Description** Configure the serial port specified by the request. If the port exists and is in use, it is hung up and unregistered first. The port is then probed and if necessary the IRQ is autodetected If this fails an error is returned. On success the port is ready to use and the line number is returned.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj<h]”hŒ Parameters”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´Mhj<ubj“)�”}”(hhh]”j˜)�”}”(hŒ9``const struct uart_8250_port *up`` serial port template ”h]”(jž)�”}”(hŒ#``const struct uart_8250_port *up``”h]”jB)�”}”(hj'<h]”hŒconst struct uart_8250_port *up”…”�”}”(hj)<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj%<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M|hj!<ubj¸)�”}”(hhh]”j<)�”}”(hŒserial port template”h]”hŒserial port template”…”�”}”(hj@<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j<<h´M|hj=<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj!<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j<<h´M|hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj<ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjb<h]”hŒ Description”…”�”}”(hjd<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj`<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M~hj<ubjX)�”}”(hX'Configure the serial port specified by the request. If the port exists and is in use, it is hung up and unregistered first. The port is then probed and if necessary the IRQ is autodetected If this fails an error is returned. On success the port is ready to use and the line number is returned.”h]”(j<)�”}”(hŒ{Configure the serial port specified by the request. If the port exists and is in use, it is hung up and unregistered first.”h]”hŒ{Configure the serial port specified by the request. If the port exists and is in use, it is hung up and unregistered first.”…”�”}”(hj|<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M}hjx<ubj<)�”}”(hŒdThe port is then probed and if necessary the IRQ is autodetected If this fails an error is returned.”h]”hŒdThe port is then probed and if necessary the IRQ is autodetected If this fails an error is returned.”…”�”}”(hj‹<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M�hjx<ubj<)�”}”(hŒDOn success the port is ready to use and the line number is returned.”h]”hŒDOn success the port is ready to use and the line number is returned.”…”�”}”(hjš<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M„hjx<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jŠ<h´M}hj<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhj’7h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ'serial8250_unregister_port (C function)”Œc.serial8250_unregister_port”hNt”auh1hËhj’7h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ=void serial8250_unregister_port (struct uart_8250_port *uart)”h]”hè)�”}”(hŒh]”hŒ Description”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M¯hj«=ubjX)�”}”(hŒrRemove one serial port. This may not be called from interrupt context. We hand the port back to the our control.”h]”j<)�”}”(hŒrRemove one serial port. This may not be called from interrupt context. We hand the port back to the our control.”h]”hŒrRemove one serial port. This may not be called from interrupt context. We hand the port back to the our control.”…”�”}”(hj%>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:19: ./drivers/tty/serial/8250/8250_core.c”h´M®hj!>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j3>h´M®hj«=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhj’7h²hh³Nh´Nubj<)�”}”(hŒ'See serial/driver.rst for related APIs.”h]”hŒ'See serial/driver.rst for related APIs.”…”�”}”(hjA>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÊh´Khj’7h²hubeh}”(h]”Œx50-uart-driver”ah ]”h"]”Œ16x50 uart driver”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒPulse-Width Modulation (PWM)”h]”hŒPulse-Width Modulation (PWM)”…”�”}”(hjZ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjW>h²hh³hÊh´Kubj<)�”}”(hŒpPulse-width modulation is a modulation technique primarily used to control power supplied to electrical devices.”h]”hŒpPulse-width modulation is a modulation technique primarily used to control power supplied to electrical devices.”…”�”}”(hjh>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÊh´KhjW>h²hubj<)�”}”(hXNThe PWM framework provides an abstraction for providers and consumers of PWM signals. A controller that provides one or more PWM signals is registered as :c:type:`struct pwm_chip `. Providers are expected to embed this structure in a driver-specific structure. This structure contains fields that describe a particular chip.”h]”(hŒšThe PWM framework provides an abstraction for providers and consumers of PWM signals. A controller that provides one or more PWM signals is registered as ”…”�”}”(hjv>h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`struct pwm_chip `”h]”jB)�”}”(hj€>h]”hŒstruct pwm_chip”…”�”}”(hj‚>h²hh³Nh´Nubah}”(h]”h ]”(Œxref”j0Œc-type”eh"]”h$]”h&]”uh1jAhj~>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/miscellaneous”Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jj )�”}”j]”sbŒ reftarget”Œpwm_chip”uh1hh³hÊh´Khjv>ubhŒ�. Providers are expected to embed this structure in a driver-specific structure. This structure contains fields that describe a particular chip.”…”�”}”(hjv>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÊh´KhjW>h²hubj<)�”}”(hŒêA chip exposes one or more PWM signal sources, each of which exposed as a :c:type:`struct pwm_device `. Operations can be performed on PWM devices to control the period, duty cycle, polarity and active state of the signal.”h]”(hŒJA chip exposes one or more PWM signal sources, each of which exposed as a ”…”�”}”(hj­>h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct pwm_device `”h]”jB)�”}”(hj·>h]”hŒstruct pwm_device”…”�”}”(hj¹>h²hh³Nh´Nubah}”(h]”h ]”(jŒ>j0Œc-type”eh"]”h$]”h&]”uh1jAhjµ>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjž>j¡>Œ pwm_device”uh1hh³hÊh´K$hj­>ubhŒx. Operations can be performed on PWM devices to control the period, duty cycle, polarity and active state of the signal.”…”�”}”(hj­>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÊh´K$hjW>h²hubj<)�”}”(hŒfNote that PWM devices are exclusive resources: they can always only be used by one consumer at a time.”h]”hŒfNote that PWM devices are exclusive resources: they can always only be used by one consumer at a time.”…”�”}”(hjÞ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÊh´K)hjW>h²hubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_polarity (C enum)”Œc.pwm_polarity”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ pwm_polarity”h]”hè)�”}”(hŒenum pwm_polarity”h]”(jÍ)�”}”(hŒenum”h]”hŒenum”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj?h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj?h²hh³j?h´Kubhî)�”}”(hŒ pwm_polarity”h]”hô)�”}”(hjÿ>h]”hŒ pwm_polarity”…”�”}”(hj&?h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj"?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj?h²hh³j?h´Kubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjý>h²hh³j?h´Kubah}”(h]”jø>ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j?h´Khjú>h²hubj#)�”}”(hhh]”j<)�”}”(hŒpolarity of a PWM signal”h]”hŒpolarity of a PWM signal”…”�”}”(hjH?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KhjE?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjú>h²hh³j?h´Kubeh}”(h]”h ]”(j0Œenum”eh"]”h$]”h&]”j5j0j6j`?j7j`?j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX1**Constants** ``PWM_POLARITY_NORMAL`` a high signal for the duration of the duty- cycle, followed by a low signal for the remainder of the pulse period ``PWM_POLARITY_INVERSED`` a low signal for the duration of the duty- cycle, followed by a high signal for the remainder of the pulse period”h]”(j<)�”}”(hŒ **Constants**”h]”j})�”}”(hjj?h]”hŒ Constants”…”�”}”(hjl?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjh?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Khjd?ubj“)�”}”(hhh]”(j˜)�”}”(hŒŠ``PWM_POLARITY_NORMAL`` a high signal for the duration of the duty- cycle, followed by a low signal for the remainder of the pulse period ”h]”(jž)�”}”(hŒ``PWM_POLARITY_NORMAL``”h]”jB)�”}”(hj‰?h]”hŒPWM_POLARITY_NORMAL”…”�”}”(hj‹?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj‡?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Khjƒ?ubj¸)�”}”(hhh]”j<)�”}”(hŒqa high signal for the duration of the duty- cycle, followed by a low signal for the remainder of the pulse period”h]”hŒqa high signal for the duration of the duty- cycle, followed by a low signal for the remainder of the pulse period”…”�”}”(hj¢?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KhjŸ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjƒ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jž?h´Khj€?ubj˜)�”}”(hŒ‹``PWM_POLARITY_INVERSED`` a low signal for the duration of the duty- cycle, followed by a high signal for the remainder of the pulse period”h]”(jž)�”}”(hŒ``PWM_POLARITY_INVERSED``”h]”jB)�”}”(hjÃ?h]”hŒPWM_POLARITY_INVERSED”…”�”}”(hjÅ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÁ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Khj½?ubj¸)�”}”(hhh]”j<)�”}”(hŒqa low signal for the duration of the duty- cycle, followed by a high signal for the remainder of the pulse period”h]”hŒqa low signal for the duration of the duty- cycle, followed by a high signal for the remainder of the pulse period”…”�”}”(hjÜ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KhjÙ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj½?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jØ?h´Khj€?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjd?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_args (C struct)”Œ c.pwm_args”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒpwm_args”h]”hè)�”}”(hŒstruct pwm_args”h]”(jÍ)�”}”(hjÐh]”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/miscellaneous:44: ./include/linux/pwm.h”h´K%ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+@h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj@h²hh³j*@h´K%ubhî)�”}”(hŒpwm_args”h]”hô)�”}”(hj@h]”hŒpwm_args”…”�”}”(hj=@h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj9@ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj@h²hh³j*@h´K%ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj@h²hh³j*@h´K%ubah}”(h]”j@ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j*@h´K%hj@h²hubj#)�”}”(hhh]”j<)�”}”(hŒboard-dependent PWM arguments”h]”hŒboard-dependent PWM arguments”…”�”}”(hj_@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K hj\@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj@h²hh³j*@h´K%ubeh}”(h]”h ]”(j0Œstruct”eh"]”h$]”h&]”j5j0j6jw@j7jw@j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX **Definition**:: struct pwm_args { u64 period; enum pwm_polarity polarity; }; **Members** ``period`` reference period ``polarity`` reference polarity **Description** This structure describes board-dependent arguments attached to a PWM device. These arguments are usually retrieved from the PWM lookup table or device tree. Do not confuse this with the PWM state: PWM arguments represent the initial configuration that users want to use on this PWM device rather than the current PWM hardware state.”h]”(jX)�”}”(hŒc**Definition**:: struct pwm_args { u64 period; enum pwm_polarity polarity; }; ”h]”(j<)�”}”(hŒ**Definition**::”h]”(j})�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj‡@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjƒ@ubhŒ:”…”�”}”(hjƒ@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K$hj@ubhŒ literal_block”“”)�”}”(hŒHstruct pwm_args { u64 period; enum pwm_polarity polarity; };”h]”hŒHstruct pwm_args { u64 period; enum pwm_polarity polarity; };”…”�”}”hj¢@sbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K&hj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jŸ@h´K$hj{@ubj<)�”}”(hŒ **Members**”h]”j})�”}”(hj¹@h]”hŒMembers”…”�”}”(hj»@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj·@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K+hj{@ubj“)�”}”(hhh]”(j˜)�”}”(hŒ``period`` reference period ”h]”(jž)�”}”(hŒ ``period``”h]”jB)�”}”(hjØ@h]”hŒperiod”…”�”}”(hjÚ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÖ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K"hjÒ@ubj¸)�”}”(hhh]”j<)�”}”(hŒreference period”h]”hŒreference period”…”�”}”(hjñ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jí@h´K"hjî@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÒ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jí@h´K"hjÏ@ubj˜)�”}”(hŒ!``polarity`` reference polarity ”h]”(jž)�”}”(hŒ ``polarity``”h]”jB)�”}”(hjAh]”hŒpolarity”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K$hj Aubj¸)�”}”(hhh]”j<)�”}”(hŒreference polarity”h]”hŒreference polarity”…”�”}”(hj*Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K#hj'Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j&Ah´K$hjÏ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj{@ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjMAh]”hŒ Description”…”�”}”(hjOAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjKAubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K&hj{@ubj<)�”}”(hŒœThis structure describes board-dependent arguments attached to a PWM device. These arguments are usually retrieved from the PWM lookup table or device tree.”h]”hŒœThis structure describes board-dependent arguments attached to a PWM device. These arguments are usually retrieved from the PWM lookup table or device tree.”…”�”}”(hjcAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K#hj{@ubj<)�”}”(hŒ¯Do not confuse this with the PWM state: PWM arguments represent the initial configuration that users want to use on this PWM device rather than the current PWM hardware state.”h]”hŒ¯Do not confuse this with the PWM state: PWM arguments represent the initial configuration that users want to use on this PWM device rather than the current PWM hardware state.”…”�”}”(hjrAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K'hj{@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_waveform (C struct)”Œc.pwm_waveform”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ pwm_waveform”h]”hè)�”}”(hŒstruct pwm_waveform”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj¡Ah²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj�Ah²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K.ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Ah²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj�Ah²hh³j®Ah´K.ubhî)�”}”(hŒ pwm_waveform”h]”hô)�”}”(hj›Ah]”hŒ pwm_waveform”…”�”}”(hjÁAh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj½Aubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj�Ah²hh³j®Ah´K.ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj™Ah²hh³j®Ah´K.ubah}”(h]”j”Aah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j®Ah´K.hj–Ah²hubj#)�”}”(hhh]”j<)�”}”(hŒdescription of a PWM waveform”h]”hŒdescription of a PWM waveform”…”�”}”(hjãAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K7hjàAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj–Ah²hh³j®Ah´K.ubeh}”(h]”h ]”(j0Œstruct”eh"]”h$]”h&]”j5j0j6jûAj7jûAj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXà **Definition**:: struct pwm_waveform { u64 period_length_ns; u64 duty_length_ns; u64 duty_offset_ns; }; **Members** ``period_length_ns`` PWM period ``duty_length_ns`` PWM duty cycle ``duty_offset_ns`` offset of the rising edge from the period's start **Description** This is a representation of a PWM waveform alternative to struct pwm_state below. It's more expressive than struct pwm_state as it contains a duty_offset_ns and so can represent offsets other than zero (with .polarity = PWM_POLARITY_NORMAL) and period - duty_cycle (.polarity = PWM_POLARITY_INVERSED). Note there is no explicit bool for enabled. A "disabled" PWM is represented by .period_length_ns = 0. Note further that the behaviour of a "disabled" PWM is undefined. Depending on the hardware's capabilities it might drive the active or inactive level, go high-z or even continue to toggle. The unit for all three members is nanoseconds.”h]”(jX)�”}”(hŒ…**Definition**:: struct pwm_waveform { u64 period_length_ns; u64 duty_length_ns; u64 duty_offset_ns; }; ”h]”(j<)�”}”(hŒ**Definition**::”h]”(j})�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjBubhŒ:”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K;hjBubj¡@)�”}”(hŒhstruct pwm_waveform { u64 period_length_ns; u64 duty_length_ns; u64 duty_offset_ns; };”h]”hŒhstruct pwm_waveform { u64 period_length_ns; u64 duty_length_ns; u64 duty_offset_ns; };”…”�”}”hj$Bsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K=hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j#Bh´K;hjÿAubj<)�”}”(hŒ **Members**”h]”j})�”}”(hj;Bh]”hŒMembers”…”�”}”(hj=Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj9Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KChjÿAubj“)�”}”(hhh]”(j˜)�”}”(hŒ ``period_length_ns`` PWM period ”h]”(jž)�”}”(hŒ``period_length_ns``”h]”jB)�”}”(hjZBh]”hŒperiod_length_ns”…”�”}”(hj\Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjXBubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K9hjTBubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM period”h]”hŒ PWM period”…”�”}”(hjsBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³joBh´K9hjpBubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjTBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³joBh´K9hjQBubj˜)�”}”(hŒ"``duty_length_ns`` PWM duty cycle ”h]”(jž)�”}”(hŒ``duty_length_ns``”h]”jB)�”}”(hj“Bh]”hŒduty_length_ns”…”�”}”(hj•Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj‘Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K:hj�Bubj¸)�”}”(hhh]”j<)�”}”(hŒPWM duty cycle”h]”hŒPWM duty cycle”…”�”}”(hj¬Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¨Bh´K:hj©Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj�Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j¨Bh´K:hjQBubj˜)�”}”(hŒF``duty_offset_ns`` offset of the rising edge from the period's start ”h]”(jž)�”}”(hŒ``duty_offset_ns``”h]”jB)�”}”(hjÌBh]”hŒduty_offset_ns”…”�”}”(hjÎBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÊBubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KhjÿAubj<)�”}”(hX-This is a representation of a PWM waveform alternative to struct pwm_state below. It's more expressive than struct pwm_state as it contains a duty_offset_ns and so can represent offsets other than zero (with .polarity = PWM_POLARITY_NORMAL) and period - duty_cycle (.polarity = PWM_POLARITY_INVERSED).”h]”hX/This is a representation of a PWM waveform alternative to struct pwm_state below. It’s more expressive than struct pwm_state as it contains a duty_offset_ns and so can represent offsets other than zero (with .polarity = PWM_POLARITY_NORMAL) and period - duty_cycle (.polarity = PWM_POLARITY_INVERSED).”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K;hjÿAubj<)�”}”(hX#Note there is no explicit bool for enabled. A "disabled" PWM is represented by .period_length_ns = 0. Note further that the behaviour of a "disabled" PWM is undefined. Depending on the hardware's capabilities it might drive the active or inactive level, go high-z or even continue to toggle.”h]”hX-Note there is no explicit bool for enabled. A “disabledâ€� PWM is represented by .period_length_ns = 0. Note further that the behaviour of a “disabledâ€� PWM is undefined. Depending on the hardware’s capabilities it might drive the active or inactive level, go high-z or even continue to toggle.”…”�”}”(hj-Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KAhjÿAubj<)�”}”(hŒ.The unit for all three members is nanoseconds.”h]”hŒ.The unit for all three members is nanoseconds.”…”�”}”(hjh²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_device (C struct)”Œ c.pwm_device”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ pwm_device”h]”hè)�”}”(hŒstruct pwm_device”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjkCh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjgCh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KKubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyCh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjgCh²hh³jxCh´KKubhî)�”}”(hŒ pwm_device”h]”hô)�”}”(hjeCh]”hŒ pwm_device”…”�”}”(hj‹Ch²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‡Cubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjgCh²hh³jxCh´KKubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjcCh²hh³jxCh´KKubah}”(h]”j^Cah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jxCh´KKhj`Ch²hubj#)�”}”(hhh]”j<)�”}”(hŒPWM channel object”h]”hŒPWM channel object”…”�”}”(hj­Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KchjªCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj`Ch²hh³jxCh´KKubeh}”(h]”h ]”(j0Œstruct”eh"]”h$]”h&]”j5j0j6jÅCj7jÅCj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXF **Definition**:: struct pwm_device { const char *label; unsigned long flags; unsigned int hwpwm; struct pwm_chip *chip; struct pwm_args args; struct pwm_state state; struct pwm_state last; }; **Members** ``label`` name of the PWM device ``flags`` flags associated with the PWM device ``hwpwm`` per-chip relative index of the PWM device ``chip`` PWM chip providing this PWM device ``args`` PWM arguments ``state`` last applied state ``last`` last implemented state (for PWM_DEBUG)”h]”(jX)�”}”(hŒý**Definition**:: struct pwm_device { const char *label; unsigned long flags; unsigned int hwpwm; struct pwm_chip *chip; struct pwm_args args; struct pwm_state state; struct pwm_state last; }; ”h]”(j<)�”}”(hŒ**Definition**::”h]”(j})�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÕCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÑCubhŒ:”…”�”}”(hjÑCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KghjÍCubj¡@)�”}”(hŒØstruct pwm_device { const char *label; unsigned long flags; unsigned int hwpwm; struct pwm_chip *chip; struct pwm_args args; struct pwm_state state; struct pwm_state last; };”h]”hŒØstruct pwm_device { const char *label; unsigned long flags; unsigned int hwpwm; struct pwm_chip *chip; struct pwm_args args; struct pwm_state state; struct pwm_state last; };”…”�”}”hjîCsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KihjÍCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jíCh´KghjÉCubj<)�”}”(hŒ **Members**”h]”j})�”}”(hjDh]”hŒMembers”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KshjÉCubj“)�”}”(hhh]”(j˜)�”}”(hŒ!``label`` name of the PWM device ”h]”(jž)�”}”(hŒ ``label``”h]”jB)�”}”(hj$Dh]”hŒlabel”…”�”}”(hj&Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj"Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KehjDubj¸)�”}”(hhh]”j<)�”}”(hŒname of the PWM device”h]”hŒname of the PWM device”…”�”}”(hj=Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j9Dh´Kehj:Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j9Dh´KehjDubj˜)�”}”(hŒ/``flags`` flags associated with the PWM device ”h]”(jž)�”}”(hŒ ``flags``”h]”jB)�”}”(hj]Dh]”hŒflags”…”�”}”(hj_Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj[Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KfhjWDubj¸)�”}”(hhh]”j<)�”}”(hŒ$flags associated with the PWM device”h]”hŒ$flags associated with the PWM device”…”�”}”(hjvDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jrDh´KfhjsDubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjWDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jrDh´KfhjDubj˜)�”}”(hŒ4``hwpwm`` per-chip relative index of the PWM device ”h]”(jž)�”}”(hŒ ``hwpwm``”h]”jB)�”}”(hj–Dh]”hŒhwpwm”…”�”}”(hj˜Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj”Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kghj�Dubj¸)�”}”(hhh]”j<)�”}”(hŒ)per-chip relative index of the PWM device”h]”hŒ)per-chip relative index of the PWM device”…”�”}”(hj¯Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j«Dh´Kghj¬Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj�Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j«Dh´KghjDubj˜)�”}”(hŒ,``chip`` PWM chip providing this PWM device ”h]”(jž)�”}”(hŒ``chip``”h]”jB)�”}”(hjÏDh]”hŒchip”…”�”}”(hjÑDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÍDubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KhhjÉDubj¸)�”}”(hhh]”j<)�”}”(hŒ"PWM chip providing this PWM device”h]”hŒ"PWM chip providing this PWM device”…”�”}”(hjèDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jäDh´KhhjåDubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÉDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jäDh´KhhjDubj˜)�”}”(hŒ``args`` PWM arguments ”h]”(jž)�”}”(hŒ``args``”h]”jB)�”}”(hjEh]”hŒargs”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KihjEubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM arguments”h]”hŒ PWM arguments”…”�”}”(hj!Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jEh´KihjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jEh´KihjDubj˜)�”}”(hŒ``state`` last applied state ”h]”(jž)�”}”(hŒ ``state``”h]”jB)�”}”(hjAEh]”hŒstate”…”�”}”(hjCEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj?Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kjhj;Eubj¸)�”}”(hhh]”j<)�”}”(hŒlast applied state”h]”hŒlast applied state”…”�”}”(hjZEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jVEh´KjhjWEubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj;Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jVEh´KjhjDubj˜)�”}”(hŒ/``last`` last implemented state (for PWM_DEBUG)”h]”(jž)�”}”(hŒ``last``”h]”jB)�”}”(hjzEh]”hŒlast”…”�”}”(hj|Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjxEubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KjhjtEubj¸)�”}”(hhh]”j<)�”}”(hŒ&last implemented state (for PWM_DEBUG)”h]”hŒ&last implemented state (for PWM_DEBUG)”…”�”}”(hj“Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kkhj�Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjtEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j�Eh´KjhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjÉCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_get_state (C function)”Œc.pwm_get_state”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒJvoid pwm_get_state (const struct pwm_device *pwm, struct pwm_state *state)”h]”hè)�”}”(hŒIvoid pwm_get_state(const struct pwm_device *pwm, struct pwm_state *state)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÔEh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjÐEh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kxubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãEh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÐEh²hh³jâEh´Kxubhî)�”}”(hŒ pwm_get_state”h]”hô)�”}”(hŒ pwm_get_state”h]”hŒ pwm_get_state”…”�”}”(hjõEh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjñEubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjÐEh²hh³jâEh´KxubjÁ)�”}”(hŒ7(const struct pwm_device *pwm, struct pwm_state *state)”h]”(jÇ)�”}”(hŒconst struct pwm_device *pwm”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj Fubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj FubjÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj,Fh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj Fubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Fh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj Fubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjJFh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjGFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jLFŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj÷EsbŒc.pwm_get_state”†”asbuh1hhj Fubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjFh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj Fubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjxFh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj Fubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hj…Fh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj FubjÇ)�”}”(hŒstruct pwm_state *state”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(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šFubh)�”}”(hhh]”hô)�”}”(hŒ pwm_state”h]”hŒ pwm_state”…”�”}”(hj¼Fh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¹Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j¾FŒmodname”NŒ classname”Njj )�”}”j]”jfFŒc.pwm_get_state”†”asbuh1hhjšFubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚFh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjšFubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjèFh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjšFubhô)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjõFh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjšFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj Fubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjÐEh²hh³jâEh´Kxubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjÌEh²hh³jâEh´Kxubah}”(h]”jÇEah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jâEh´KxhjÉEh²hubj#)�”}”(hhh]”j<)�”}”(hŒretrieve the current PWM state”h]”hŒretrieve the current PWM state”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KxhjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÉEh²hh³jâEh´Kxubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j7Gj7j7Gj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXØ**Parameters** ``const struct pwm_device *pwm`` PWM device ``struct pwm_state *state`` state to fill with the current PWM state **Description** The returned PWM state represents the state that was applied by a previous call to pwm_apply_might_sleep(). Drivers may have to slightly tweak that state before programming it to hardware. If pwm_apply_might_sleep() was never called, this returns either the current hardware state (if supported) or the default settings.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjAGh]”hŒ Parameters”…”�”}”(hjCGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj?Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K|hj;Gubj“)�”}”(hhh]”(j˜)�”}”(hŒ,``const struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ ``const struct pwm_device *pwm``”h]”jB)�”}”(hj`Gh]”hŒconst struct pwm_device *pwm”…”�”}”(hjbGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj^Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KyhjZGubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hjyGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³juGh´KyhjvGubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjZGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³juGh´KyhjWGubj˜)�”}”(hŒE``struct pwm_state *state`` state to fill with the current PWM state ”h]”(jž)�”}”(hŒ``struct pwm_state *state``”h]”jB)�”}”(hj™Gh]”hŒstruct pwm_state *state”…”�”}”(hj›Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj—Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kzhj“Gubj¸)�”}”(hhh]”j<)�”}”(hŒ(state to fill with the current PWM state”h]”hŒ(state to fill with the current PWM state”…”�”}”(hj²Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j®Gh´Kzhj¯Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj“Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j®Gh´KzhjWGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj;Gubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjÔGh]”hŒ Description”…”�”}”(hjÖGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÒGubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K|hj;Gubj<)�”}”(hX@The returned PWM state represents the state that was applied by a previous call to pwm_apply_might_sleep(). Drivers may have to slightly tweak that state before programming it to hardware. If pwm_apply_might_sleep() was never called, this returns either the current hardware state (if supported) or the default settings.”h]”hX@The returned PWM state represents the state that was applied by a previous call to pwm_apply_might_sleep(). Drivers may have to slightly tweak that state before programming it to hardware. If pwm_apply_might_sleep() was never called, this returns either the current hardware state (if supported) or the default settings.”…”�”}”(hjêGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K{hj;Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_init_state (C function)”Œc.pwm_init_state”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒKvoid pwm_init_state (const struct pwm_device *pwm, struct pwm_state *state)”h]”hè)�”}”(hŒJvoid pwm_init_state(const struct pwm_device *pwm, struct pwm_state *state)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjHh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K²ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Hh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjHh²hh³j'Hh´K²ubhî)�”}”(hŒpwm_init_state”h]”hô)�”}”(hŒpwm_init_state”h]”hŒpwm_init_state”…”�”}”(hj:Hh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj6Hubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjHh²hh³j'Hh´K²ubjÁ)�”}”(hŒ7(const struct pwm_device *pwm, struct pwm_state *state)”h]”(jÇ)�”}”(hŒconst struct pwm_device *pwm”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”•}”(hjVHh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjRHubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcHh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjRHubjÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjqHh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjRHubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Hh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjRHubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjŒHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j‘HŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjprepare a new state to be applied with pwm_apply_might_sleep()”h]”hŒ>prepare a new state to be applied with pwm_apply_might_sleep()”…”�”}”(hjdIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K²hjaIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjHh²hh³j'Hh´K²ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j|Ij7j|Ij8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX0**Parameters** ``const struct pwm_device *pwm`` PWM device ``struct pwm_state *state`` state to fill with the prepared PWM state **Description** This functions prepares a state that can later be tweaked and applied to the PWM device with pwm_apply_might_sleep(). This is a convenient function that first retrieves the current PWM state and the replaces the period and polarity fields with the reference values defined in pwm->args. Once the function returns, you can adjust the ->enabled and ->duty_cycle fields according to your needs before calling pwm_apply_might_sleep(). ->duty_cycle is initially set to zero to avoid cases where the current ->duty_cycle value exceed the pwm_args->period one, which would trigger an error if the user calls pwm_apply_might_sleep() without adjusting ->duty_cycle first.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj†Ih]”hŒ Parameters”…”�”}”(hjˆIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj„Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K¶hj€Iubj“)�”}”(hhh]”(j˜)�”}”(hŒ,``const struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ ``const struct pwm_device *pwm``”h]”jB)�”}”(hj¥Ih]”hŒconst struct pwm_device *pwm”…”�”}”(hj§Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj£Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K³hjŸIubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj¾Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jºIh´K³hj»Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjŸIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jºIh´K³hjœIubj˜)�”}”(hŒF``struct pwm_state *state`` state to fill with the prepared PWM state ”h]”(jž)�”}”(hŒ``struct pwm_state *state``”h]”jB)�”}”(hjÞIh]”hŒstruct pwm_state *state”…”�”}”(hjàIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÜIubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K´hjØIubj¸)�”}”(hhh]”j<)�”}”(hŒ)state to fill with the prepared PWM state”h]”hŒ)state to fill with the prepared PWM state”…”�”}”(hj÷Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jóIh´K´hjôIubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjØIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jóIh´K´hjœIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj€Iubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjJh]”hŒ Description”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K¶hj€Iubj<)�”}”(hX®This functions prepares a state that can later be tweaked and applied to the PWM device with pwm_apply_might_sleep(). This is a convenient function that first retrieves the current PWM state and the replaces the period and polarity fields with the reference values defined in pwm->args. Once the function returns, you can adjust the ->enabled and ->duty_cycle fields according to your needs before calling pwm_apply_might_sleep().”h]”hX®This functions prepares a state that can later be tweaked and applied to the PWM device with pwm_apply_might_sleep(). This is a convenient function that first retrieves the current PWM state and the replaces the period and polarity fields with the reference values defined in pwm->args. Once the function returns, you can adjust the ->enabled and ->duty_cycle fields according to your needs before calling pwm_apply_might_sleep().”…”�”}”(hj/Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kµhj€Iubj<)�”}”(hŒç->duty_cycle is initially set to zero to avoid cases where the current ->duty_cycle value exceed the pwm_args->period one, which would trigger an error if the user calls pwm_apply_might_sleep() without adjusting ->duty_cycle first.”h]”hŒç->duty_cycle is initially set to zero to avoid cases where the current ->duty_cycle value exceed the pwm_args->period one, which would trigger an error if the user calls pwm_apply_might_sleep() without adjusting ->duty_cycle first.”…”�”}”(hj>Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K¼hj€Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ(pwm_get_relative_duty_cycle (C function)”Œc.pwm_get_relative_duty_cycle”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ\unsigned int pwm_get_relative_duty_cycle (const struct pwm_state *state, unsigned int scale)”h]”hè)�”}”(hŒ[unsigned int pwm_get_relative_duty_cycle(const struct pwm_state *state, unsigned int scale)”h]”(j†)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjmJh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjiJh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KÔubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Jh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjiJh²hh³j{Jh´KÔubj†)�”}”(hŒint”h]”hŒint”…”�”}”(hjŠJh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjiJh²hh³j{Jh´KÔubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Jh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjiJh²hh³j{Jh´KÔubhî)�”}”(hŒpwm_get_relative_duty_cycle”h]”hô)�”}”(hŒpwm_get_relative_duty_cycle”h]”hŒpwm_get_relative_duty_cycle”…”�”}”(hjªJh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¦Jubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjiJh²hh³j{Jh´KÔubjÁ)�”}”(hŒ3(const struct pwm_state *state, unsigned int scale)”h]”(jÇ)�”}”(hŒconst struct pwm_state *state”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjÆJh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjÂJubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓJh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÂJubjÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjáJh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjÂJubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîJh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÂJubh)�”}”(hhh]”hô)�”}”(hŒ pwm_state”h]”hŒ pwm_state”…”�”}”(hjÿJh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjüJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jKŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj¬JsbŒc.pwm_get_relative_duty_cycle”†”asbuh1hhjÂJubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÂJubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj-Kh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÂJubhô)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj:Kh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÂJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj¾JubjÇ)�”}”(hŒunsigned int scale”h]”(j†)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjSKh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjOKubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaKh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjOKubj†)�”}”(hŒint”h]”hŒint”…”�”}”(hjoKh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjOKubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Kh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjOKubhô)�”}”(hŒscale”h]”hŒscale”…”�”}”(hj‹Kh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjOKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj¾Jubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjiJh²hh³j{Jh´KÔubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjeJh²hh³j{Jh´KÔubah}”(h]”j`Jah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j{Jh´KÔhjbJh²hubj#)�”}”(hhh]”j<)�”}”(hŒGet a relative duty cycle value”h]”hŒGet a relative duty cycle value”…”�”}”(hjµKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KÔhj²Kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjbJh²hh³j{Jh´KÔubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jÍKj7jÍKj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX**Parameters** ``const struct pwm_state *state`` PWM state to extract the duty cycle from ``unsigned int scale`` target scale of the relative duty cycle **Description** This functions converts the absolute duty cycle stored in **state** (expressed in nanosecond) into a value relative to the period. For example if you want to get the duty_cycle expressed in percent, call: pwm_get_state(pwm, :c:type:`state`); duty = pwm_get_relative_duty_cycle(:c:type:`state`, 100); **Return** rounded relative duty cycle multiplied by **scale**”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj×Kh]”hŒ Parameters”…”�”}”(hjÙKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÕKubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KØhjÑKubj“)�”}”(hhh]”(j˜)�”}”(hŒK``const struct pwm_state *state`` PWM state to extract the duty cycle from ”h]”(jž)�”}”(hŒ!``const struct pwm_state *state``”h]”jB)�”}”(hjöKh]”hŒconst struct pwm_state *state”…”�”}”(hjøKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjôKubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KÕhjðKubj¸)�”}”(hhh]”j<)�”}”(hŒ(PWM state to extract the duty cycle from”h]”hŒ(PWM state to extract the duty cycle from”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j Lh´KÕhj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjðKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j Lh´KÕhjíKubj˜)�”}”(hŒ?``unsigned int scale`` target scale of the relative duty cycle ”h]”(jž)�”}”(hŒ``unsigned int scale``”h]”jB)�”}”(hj/Lh]”hŒunsigned int scale”…”�”}”(hj1Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj-Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KÖhj)Lubj¸)�”}”(hhh]”j<)�”}”(hŒ'target scale of the relative duty cycle”h]”hŒ'target scale of the relative duty cycle”…”�”}”(hjHLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jDLh´KÖhjELubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj)Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jDLh´KÖhjíKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjÑKubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjjLh]”hŒ Description”…”�”}”(hjlLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjhLubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KØhjÑKubj<)�”}”(hŒ‚This functions converts the absolute duty cycle stored in **state** (expressed in nanosecond) into a value relative to the period.”h]”(hŒ:This functions converts the absolute duty cycle stored in ”…”�”}”(hj€Lh²hh³Nh´Nubj})�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjˆLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€LubhŒ? (expressed in nanosecond) into a value relative to the period.”…”�”}”(hj€Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´K×hjÑKubj<)�”}”(hŒIFor example if you want to get the duty_cycle expressed in percent, call:”h]”hŒIFor example if you want to get the duty_cycle expressed in percent, call:”…”�”}”(hj¡Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KÚhjÑKubj<)�”}”(hŒ^pwm_get_state(pwm, :c:type:`state`); duty = pwm_get_relative_duty_cycle(:c:type:`state`, 100);”h]”(hŒpwm_get_state(pwm, ”…”�”}”(hj°Lh²hh³Nh´Nubh)�”}”(hŒ:c:type:`state`”h]”jB)�”}”(hjºLh]”hŒstate”…”�”}”(hj¼Lh²hh³Nh´Nubah}”(h]”h ]”(jŒ>j0Œc-type”eh"]”h$]”h&]”uh1jAhj¸Lubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjž>j¡>Œstate”uh1hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KÜhj°LubhŒ&); duty = pwm_get_relative_duty_cycle(”…”�”}”(hj°Lh²hh³Nh´Nubh)�”}”(hŒ:c:type:`state`”h]”jB)�”}”(hjÞLh]”hŒstate”…”�”}”(hjàLh²hh³Nh´Nubah}”(h]”h ]”(jŒ>j0Œc-type”eh"]”h$]”h&]”uh1jAhjÜLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjž>j¡>Œstate”uh1hh³j×Lh´KÜhj°LubhŒ, 100);”…”�”}”(hj°Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j×Lh´KÜhjÑKubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjMh]”hŒReturn”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KßhjÑKubj<)�”}”(hŒ3rounded relative duty cycle multiplied by **scale**”h]”(hŒ*rounded relative duty cycle multiplied by ”…”�”}”(hjMh²hh³Nh´Nubj})�”}”(hŒ **scale**”h]”hŒscale”…”�”}”(hj%Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KàhjÑKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ(pwm_set_relative_duty_cycle (C function)”Œc.pwm_set_relative_duty_cycle”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒfint pwm_set_relative_duty_cycle (struct pwm_state *state, unsigned int duty_cycle, unsigned int scale)”h]”hè)�”}”(hŒeint pwm_set_relative_duty_cycle(struct pwm_state *state, unsigned int duty_cycle, unsigned int scale)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjZMh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjVMh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kíubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiMh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjVMh²hh³jhMh´Kíubhî)�”}”(hŒpwm_set_relative_duty_cycle”h]”hô)�”}”(hŒpwm_set_relative_duty_cycle”h]”hŒpwm_set_relative_duty_cycle”…”�”}”(hj{Mh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjwMubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjVMh²hh³jhMh´KíubjÁ)�”}”(hŒF(struct pwm_state *state, unsigned int duty_cycle, unsigned int scale)”h]”(jÇ)�”}”(hŒstruct pwm_state *state”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj—Mh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj“Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Mh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj“Mubh)�”}”(hhh]”hô)�”}”(hŒ pwm_state”h]”hŒ pwm_state”…”�”}”(hjµMh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj²Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j·MŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj}MsbŒc.pwm_set_relative_duty_cycle”†”asbuh1hhj“Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕMh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj“Mubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjãMh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj“Mubhô)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjðMh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj“Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj�MubjÇ)�”}”(hŒunsigned int duty_cycle”h]”(j†)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjNubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjNubj†)�”}”(hŒint”h]”hŒint”…”�”}”(hj%Nh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjNubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Nh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjNubhô)�”}”(hŒ duty_cycle”h]”hŒ duty_cycle”…”�”}”(hjANh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj�MubjÇ)�”}”(hŒunsigned int scale”h]”(j†)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjZNh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjVNubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhNh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjVNubj†)�”}”(hŒint”h]”hŒint”…”�”}”(hjvNh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjVNubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Nh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjVNubhô)�”}”(hŒscale”h]”hŒscale”…”�”}”(hj’Nh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjVNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj�Mubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjVMh²hh³jhMh´Kíubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjRMh²hh³jhMh´Kíubah}”(h]”jMMah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jhMh´KíhjOMh²hubj#)�”}”(hhh]”j<)�”}”(hŒSet a relative duty cycle value”h]”hŒSet a relative duty cycle value”…”�”}”(hj¼Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kíhj¹Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjOMh²hh³jhMh´Kíubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jÔNj7jÔNj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX©**Parameters** ``struct pwm_state *state`` PWM state to fill ``unsigned int duty_cycle`` relative duty cycle value ``unsigned int scale`` scale in which **duty_cycle** is expressed **Description** This functions converts a relative into an absolute duty cycle (expressed in nanoseconds), and puts the result in state->duty_cycle. For example if you want to configure a 50% duty cycle, call: pwm_init_state(pwm, :c:type:`state`); pwm_set_relative_duty_cycle(:c:type:`state`, 50, 100); pwm_apply_might_sleep(pwm, :c:type:`state`); **Return** 0 on success or ``-EINVAL`` if **duty_cycle** and/or **scale** are inconsistent (**scale** == 0 or **duty_cycle** > **scale**)”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjÞNh]”hŒ Parameters”…”�”}”(hjàNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÜNubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KñhjØNubj“)�”}”(hhh]”(j˜)�”}”(hŒ.``struct pwm_state *state`` PWM state to fill ”h]”(jž)�”}”(hŒ``struct pwm_state *state``”h]”jB)�”}”(hjýNh]”hŒstruct pwm_state *state”…”�”}”(hjÿNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjûNubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kîhj÷Nubj¸)�”}”(hhh]”j<)�”}”(hŒPWM state to fill”h]”hŒPWM state to fill”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jOh´KîhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj÷Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jOh´KîhjôNubj˜)�”}”(hŒ6``unsigned int duty_cycle`` relative duty cycle value ”h]”(jž)�”}”(hŒ``unsigned int duty_cycle``”h]”jB)�”}”(hj6Oh]”hŒunsigned int duty_cycle”…”�”}”(hj8Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj4Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Kïhj0Oubj¸)�”}”(hhh]”j<)�”}”(hŒrelative duty cycle value”h]”hŒrelative duty cycle value”…”�”}”(hjOOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jKOh´KïhjLOubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj0Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jKOh´KïhjôNubj˜)�”}”(hŒB``unsigned int scale`` scale in which **duty_cycle** is expressed ”h]”(jž)�”}”(hŒ``unsigned int scale``”h]”jB)�”}”(hjoOh]”hŒunsigned int scale”…”�”}”(hjqOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjmOubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KðhjiOubj¸)�”}”(hhh]”j<)�”}”(hŒ*scale in which **duty_cycle** is expressed”h]”(hŒscale in which ”…”�”}”(hjˆOh²hh³Nh´Nubj})�”}”(hŒ**duty_cycle**”h]”hŒ duty_cycle”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjˆOubhŒ is expressed”…”�”}”(hjˆOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j„Oh´Kðhj…Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjiOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j„Oh´KðhjôNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjØNubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj¼Oh]”hŒ Description”…”�”}”(hj¾Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjºOubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KòhjØNubj<)�”}”(hŒ„This functions converts a relative into an absolute duty cycle (expressed in nanoseconds), and puts the result in state->duty_cycle.”h]”hŒ„This functions converts a relative into an absolute duty cycle (expressed in nanoseconds), and puts the result in state->duty_cycle.”…”�”}”(hjÒOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KñhjØNubj<)�”}”(hŒj0Œc-type”eh"]”h$]”h&]”uh1jAhjøOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjž>j¡>Œstate”uh1hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KöhjðOubhŒ); pwm_set_relative_duty_cycle(”…”�”}”(hjðOh²hh³Nh´Nubh)�”}”(hŒ:c:type:`state`”h]”jB)�”}”(hjPh]”hŒstate”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”(jŒ>j0Œc-type”eh"]”h$]”h&]”uh1jAhjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjž>j¡>Œstate”uh1hh³jPh´KöhjðOubhŒ', 50, 100); pwm_apply_might_sleep(pwm, ”…”�”}”(hjðOh²hh³Nh´Nubh)�”}”(hŒ:c:type:`state`”h]”jB)�”}”(hjAPh]”hŒstate”…”�”}”(hjCPh²hh³Nh´Nubah}”(h]”h ]”(jŒ>j0Œc-type”eh"]”h$]”h&]”uh1jAhj?Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjž>j¡>Œstate”uh1hh³jPh´KöhjðOubhŒ);”…”�”}”(hjðOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jPh´KöhjØNubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjjPh]”hŒReturn”…”�”}”(hjlPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjhPubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KúhjØNubj<)�”}”(hŒ~0 on success or ``-EINVAL`` if **duty_cycle** and/or **scale** are inconsistent (**scale** == 0 or **duty_cycle** > **scale**)”h]”(hŒ0 on success or ”…”�”}”(hj€Ph²hh³Nh´NubjB)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjˆPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj€PubhŒ if ”…”�”}”(hj€Ph²hh³Nh´Nubj})�”}”(hŒ**duty_cycle**”h]”hŒ duty_cycle”…”�”}”(hjšPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€PubhŒ and/or ”…”�”}”(hj€Ph²hh³Nh´Nubj})�”}”(hŒ **scale**”h]”hŒscale”…”�”}”(hj¬Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€PubhŒ are inconsistent (”…”�”}”(hj€Ph²hh³Nh´Nubj})�”}”(hŒ **scale**”h]”hŒscale”…”�”}”(hj¾Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€PubhŒ == 0 or ”…”�”}”(hj€Ph²hh³Nh´Nubj})�”}”(hŒ**duty_cycle**”h]”hŒ duty_cycle”…”�”}”(hjÐPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€PubhŒ > ”…”�”}”(hj€Ph²hh³Nh´Nubj})�”}”(hŒ **scale**”h]”hŒscale”…”�”}”(hjâPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj€PubhŒ)”…”�”}”(hj€Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´KûhjØNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_capture (C struct)”Œ c.pwm_capture”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ pwm_capture”h]”hè)�”}”(hŒstruct pwm_capture”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjQh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Qh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjQh²hh³j(Qh´Mubhî)�”}”(hŒ pwm_capture”h]”hô)�”}”(hjQh]”hŒ pwm_capture”…”�”}”(hj;Qh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj7Qubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjQh²hh³j(Qh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjQh²hh³j(Qh´Mubah}”(h]”jQah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j(Qh´MhjQh²hubj#)�”}”(hhh]”j<)�”}”(hŒPWM capture data”h]”hŒPWM capture data”…”�”}”(hj]Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M hjZQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjQh²hh³j(Qh´Mubeh}”(h]”h ]”(j0Œstruct”eh"]”h$]”h&]”j5j0j6juQj7juQj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒú **Definition**:: struct pwm_capture { unsigned int period; unsigned int duty_cycle; }; **Members** ``period`` period of the PWM signal (in nanoseconds) ``duty_cycle`` duty cycle of the PWM signal (in nanoseconds)”h]”(jX)�”}”(hŒl**Definition**:: struct pwm_capture { unsigned int period; unsigned int duty_cycle; }; ”h]”(j<)�”}”(hŒ**Definition**::”h]”(j})�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj…Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj�QubhŒ:”…”�”}”(hj�Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mhj}Qubj¡@)�”}”(hŒQstruct pwm_capture { unsigned int period; unsigned int duty_cycle; };”h]”hŒQstruct pwm_capture { unsigned int period; unsigned int duty_cycle; };”…”�”}”hjžQsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mhj}Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³j�Qh´MhjyQubj<)�”}”(hŒ **Members**”h]”j})�”}”(hjµQh]”hŒMembers”…”�”}”(hj·Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj³Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjyQubj“)�”}”(hhh]”(j˜)�”}”(hŒ5``period`` period of the PWM signal (in nanoseconds) ”h]”(jž)�”}”(hŒ ``period``”h]”jB)�”}”(hjÔQh]”hŒperiod”…”�”}”(hjÖQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÒQubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjÎQubj¸)�”}”(hhh]”j<)�”}”(hŒ)period of the PWM signal (in nanoseconds)”h]”hŒ)period of the PWM signal (in nanoseconds)”…”�”}”(hjíQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jéQh´MhjêQubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÎQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jéQh´MhjËQubj˜)�”}”(hŒ<``duty_cycle`` duty cycle of the PWM signal (in nanoseconds)”h]”(jž)�”}”(hŒ``duty_cycle``”h]”jB)�”}”(hj Rh]”hŒ duty_cycle”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjRubj¸)�”}”(hhh]”j<)�”}”(hŒ-duty cycle of the PWM signal (in nanoseconds)”h]”hŒ-duty cycle of the PWM signal (in nanoseconds)”…”�”}”(hj&Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mhj#Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j"Rh´MhjËQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjyQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_ops (C struct)”Œ c.pwm_ops”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒpwm_ops”h]”hè)�”}”(hŒstruct pwm_ops”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjgRh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjcRh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuRh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjcRh²hh³jtRh´Mubhî)�”}”(hŒpwm_ops”h]”hô)�”}”(hjaRh]”hŒpwm_ops”…”�”}”(hj‡Rh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjƒRubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjcRh²hh³jtRh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj_Rh²hh³jtRh´Mubah}”(h]”jZRah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jtRh´Mhj\Rh²hubj#)�”}”(hhh]”j<)�”}”(hŒPWM controller operations”h]”hŒPWM controller operations”…”�”}”(hj©Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mhj¦Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj\Rh²hh³jtRh´Mubeh}”(h]”h ]”(j0Œstruct”eh"]”h$]”h&]”j5j0j6jÁRj7jÁRj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXz **Definition**:: struct pwm_ops { int (*request)(struct pwm_chip *chip, struct pwm_device *pwm); void (*free)(struct pwm_chip *chip, struct pwm_device *pwm); int (*capture)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_capture *result, unsigned long timeout); size_t sizeof_wfhw; int (*round_waveform_tohw)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_waveform *wf, void *wfhw); int (*round_waveform_fromhw)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw, struct pwm_waveform *wf); int (*read_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, void *wfhw); int (*write_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw); int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_state *state); int (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_state *state); }; **Members** ``request`` optional hook for requesting a PWM ``free`` optional hook for freeing a PWM ``capture`` capture and report PWM signal ``sizeof_wfhw`` size (in bytes) of driver specific waveform presentation ``round_waveform_tohw`` convert a struct pwm_waveform to driver specific presentation ``round_waveform_fromhw`` convert a driver specific waveform presentation to struct pwm_waveform ``read_waveform`` read driver specific waveform presentation from hardware ``write_waveform`` write driver specific waveform presentation to hardware ``apply`` atomically apply a new PWM config ``get_state`` get the current PWM state.”h]”(jX)�”}”(hXÉ**Definition**:: struct pwm_ops { int (*request)(struct pwm_chip *chip, struct pwm_device *pwm); void (*free)(struct pwm_chip *chip, struct pwm_device *pwm); int (*capture)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_capture *result, unsigned long timeout); size_t sizeof_wfhw; int (*round_waveform_tohw)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_waveform *wf, void *wfhw); int (*round_waveform_fromhw)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw, struct pwm_waveform *wf); int (*read_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, void *wfhw); int (*write_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw); int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_state *state); int (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_state *state); }; ”h]”(j<)�”}”(hŒ**Definition**::”h]”(j})�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÑRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÍRubhŒ:”…”�”}”(hjÍRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjÉRubj¡@)�”}”(hXžstruct pwm_ops { int (*request)(struct pwm_chip *chip, struct pwm_device *pwm); void (*free)(struct pwm_chip *chip, struct pwm_device *pwm); int (*capture)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_capture *result, unsigned long timeout); size_t sizeof_wfhw; int (*round_waveform_tohw)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_waveform *wf, void *wfhw); int (*round_waveform_fromhw)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw, struct pwm_waveform *wf); int (*read_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, void *wfhw); int (*write_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw); int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_state *state); int (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_state *state); };”h]”hXžstruct pwm_ops { int (*request)(struct pwm_chip *chip, struct pwm_device *pwm); void (*free)(struct pwm_chip *chip, struct pwm_device *pwm); int (*capture)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_capture *result, unsigned long timeout); size_t sizeof_wfhw; int (*round_waveform_tohw)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_waveform *wf, void *wfhw); int (*round_waveform_fromhw)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw, struct pwm_waveform *wf); int (*read_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, void *wfhw); int (*write_waveform)(struct pwm_chip *chip, struct pwm_device *pwm, const void *wfhw); int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm, const struct pwm_state *state); int (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm, struct pwm_state *state); };”…”�”}”hjêRsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjÉRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jéRh´MhjÅRubj<)�”}”(hŒ **Members**”h]”j})�”}”(hjSh]”hŒMembers”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÿRubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M,hjÅRubj“)�”}”(hhh]”(j˜)�”}”(hŒ/``request`` optional hook for requesting a PWM ”h]”(jž)�”}”(hŒ ``request``”h]”jB)�”}”(hj Sh]”hŒrequest”…”�”}”(hj"Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjSubj¸)�”}”(hhh]”j<)�”}”(hŒ"optional hook for requesting a PWM”h]”hŒ"optional hook for requesting a PWM”…”�”}”(hj9Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j5Sh´Mhj6Subah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j5Sh´MhjSubj˜)�”}”(hŒ)``free`` optional hook for freeing a PWM ”h]”(jž)�”}”(hŒ``free``”h]”jB)�”}”(hjYSh]”hŒfree”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjWSubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjSSubj¸)�”}”(hhh]”j<)�”}”(hŒoptional hook for freeing a PWM”h]”hŒoptional hook for freeing a PWM”…”�”}”(hjrSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jnSh´MhjoSubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjSSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jnSh´MhjSubj˜)�”}”(hŒ*``capture`` capture and report PWM signal ”h]”(jž)�”}”(hŒ ``capture``”h]”jB)�”}”(hj’Sh]”hŒcapture”…”�”}”(hj”Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj�Subah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjŒSubj¸)�”}”(hhh]”j<)�”}”(hŒcapture and report PWM signal”h]”hŒcapture and report PWM signal”…”�”}”(hj«Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j§Sh´Mhj¨Subah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjŒSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j§Sh´MhjSubj˜)�”}”(hŒI``sizeof_wfhw`` size (in bytes) of driver specific waveform presentation ”h]”(jž)�”}”(hŒ``sizeof_wfhw``”h]”jB)�”}”(hjËSh]”hŒ sizeof_wfhw”…”�”}”(hjÍSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÉSubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjÅSubj¸)�”}”(hhh]”j<)�”}”(hŒ8size (in bytes) of driver specific waveform presentation”h]”hŒ8size (in bytes) of driver specific waveform presentation”…”�”}”(hjäSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jàSh´MhjáSubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÅSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jàSh´MhjSubj˜)�”}”(hŒV``round_waveform_tohw`` convert a struct pwm_waveform to driver specific presentation ”h]”(jž)�”}”(hŒ``round_waveform_tohw``”h]”jB)�”}”(hjTh]”hŒround_waveform_tohw”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MhjþSubj¸)�”}”(hhh]”j<)�”}”(hŒ=convert a struct pwm_waveform to driver specific presentation”h]”hŒ=convert a struct pwm_waveform to driver specific presentation”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jTh´MhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjþSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jTh´MhjSubj˜)�”}”(hŒa``round_waveform_fromhw`` convert a driver specific waveform presentation to struct pwm_waveform ”h]”(jž)�”}”(hŒ``round_waveform_fromhw``”h]”jB)�”}”(hj=Th]”hŒround_waveform_fromhw”…”�”}”(hj?Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj;Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M hj7Tubj¸)�”}”(hhh]”j<)�”}”(hŒFconvert a driver specific waveform presentation to struct pwm_waveform”h]”hŒFconvert a driver specific waveform presentation to struct pwm_waveform”…”�”}”(hjVTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jRTh´M hjSTubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj7Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jRTh´M hjSubj˜)�”}”(hŒK``read_waveform`` read driver specific waveform presentation from hardware ”h]”(jž)�”}”(hŒ``read_waveform``”h]”jB)�”}”(hjvTh]”hŒ read_waveform”…”�”}”(hjxTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjtTubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M!hjpTubj¸)�”}”(hhh]”j<)�”}”(hŒ8read driver specific waveform presentation from hardware”h]”hŒ8read driver specific waveform presentation from hardware”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‹Th´M!hjŒTubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjpTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j‹Th´M!hjSubj˜)�”}”(hŒK``write_waveform`` write driver specific waveform presentation to hardware ”h]”(jž)�”}”(hŒ``write_waveform``”h]”jB)�”}”(hj¯Th]”hŒwrite_waveform”…”�”}”(hj±Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj­Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M"hj©Tubj¸)�”}”(hhh]”j<)�”}”(hŒ7write driver specific waveform presentation to hardware”h]”hŒ7write driver specific waveform presentation to hardware”…”�”}”(hjÈTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÄTh´M"hjÅTubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj©Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÄTh´M"hjSubj˜)�”}”(hŒ,``apply`` atomically apply a new PWM config ”h]”(jž)�”}”(hŒ ``apply``”h]”jB)�”}”(hjèTh]”hŒapply”…”�”}”(hjêTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjæTubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M#hjâTubj¸)�”}”(hhh]”j<)�”}”(hŒ!atomically apply a new PWM config”h]”hŒ!atomically apply a new PWM config”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jýTh´M#hjþTubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjâTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jýTh´M#hjSubj˜)�”}”(hŒ(``get_state`` get the current PWM state.”h]”(jž)�”}”(hŒ ``get_state``”h]”jB)�”}”(hj!Uh]”hŒ get_state”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M#hjUubj¸)�”}”(hhh]”j<)�”}”(hŒget the current PWM state.”h]”hŒget the current PWM state.”…”�”}”(hj:Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M$hj7Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j6Uh´M#hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjÅRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_chip (C struct)”Œ c.pwm_chip”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒpwm_chip”h]”hè)�”}”(hŒstruct pwm_chip”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj{Uh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjwUh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M*ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Uh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjwUh²hh³jˆUh´M*ubhî)�”}”(hŒpwm_chip”h]”hô)�”}”(hjuUh]”hŒpwm_chip”…”�”}”(hj›Uh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj—Uubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjwUh²hh³jˆUh´M*ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjsUh²hh³jˆUh´M*ubah}”(h]”jnUah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jˆUh´M*hjpUh²hubj#)�”}”(hhh]”j<)�”}”(hŒabstract a PWM controller”h]”hŒabstract a PWM controller”…”�”}”(hj½Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M<hjºUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjpUh²hh³jˆUh´M*ubeh}”(h]”h ]”(j0Œstruct”eh"]”h$]”h&]”j5j0j6jÕUj7jÕUj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX· **Definition**:: struct pwm_chip { struct device dev; struct cdev cdev; const struct pwm_ops *ops; struct module *owner; unsigned int id; unsigned int npwm; struct pwm_device * (*of_xlate)(struct pwm_chip *chip, const struct of_phandle_args *args); bool atomic; struct gpio_chip gpio; bool uses_pwmchip_alloc; bool operational; union { struct mutex nonatomic_lock; spinlock_t atomic_lock; }; struct pwm_device pwms[]; }; **Members** ``dev`` device providing the PWMs ``cdev`` :c:type:`struct cdev ` for this device ``ops`` callbacks for this PWM controller ``owner`` module providing this chip ``id`` unique number of this PWM chip ``npwm`` number of PWMs controlled by this chip ``of_xlate`` request a PWM device given a device tree PWM specifier ``atomic`` can the driver's ->apply() be called in atomic context ``gpio`` :c:type:`struct gpio_chip ` to operate this PWM chip's lines as GPO ``uses_pwmchip_alloc`` signals if pwmchip_allow was used to allocate this chip ``operational`` signals if the chip can be used (or is already deregistered) ``{unnamed_union}`` anonymous ``nonatomic_lock`` mutex for nonatomic chips ``atomic_lock`` mutex for atomic chips ``pwms`` array of PWM devices allocated by the framework”h]”(jX)�”}”(hX6**Definition**:: struct pwm_chip { struct device dev; struct cdev cdev; const struct pwm_ops *ops; struct module *owner; unsigned int id; unsigned int npwm; struct pwm_device * (*of_xlate)(struct pwm_chip *chip, const struct of_phandle_args *args); bool atomic; struct gpio_chip gpio; bool uses_pwmchip_alloc; bool operational; union { struct mutex nonatomic_lock; spinlock_t atomic_lock; }; struct pwm_device pwms[]; }; ”h]”(j<)�”}”(hŒ**Definition**::”h]”(j})�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjåUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjáUubhŒ:”…”�”}”(hjáUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M@hjÝUubj¡@)�”}”(hXÿstruct pwm_chip { struct device dev; struct cdev cdev; const struct pwm_ops *ops; struct module *owner; unsigned int id; unsigned int npwm; struct pwm_device * (*of_xlate)(struct pwm_chip *chip, const struct of_phandle_args *args); bool atomic; struct gpio_chip gpio; bool uses_pwmchip_alloc; bool operational; union { struct mutex nonatomic_lock; spinlock_t atomic_lock; }; struct pwm_device pwms[]; };”h]”hXÿstruct pwm_chip { struct device dev; struct cdev cdev; const struct pwm_ops *ops; struct module *owner; unsigned int id; unsigned int npwm; struct pwm_device * (*of_xlate)(struct pwm_chip *chip, const struct of_phandle_args *args); bool atomic; struct gpio_chip gpio; bool uses_pwmchip_alloc; bool operational; union { struct mutex nonatomic_lock; spinlock_t atomic_lock; }; struct pwm_device pwms[]; };”…”�”}”hjþUsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MBhjÝUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jWh³jýUh´M@hjÙUubj<)�”}”(hŒ **Members**”h]”j})�”}”(hjVh]”hŒMembers”…”�”}”(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/miscellaneous:44: ./include/linux/pwm.h”h´MUhjÙUubj“)�”}”(hhh]”(j˜)�”}”(hŒ"``dev`` device providing the PWMs ”h]”(jž)�”}”(hŒ``dev``”h]”jB)�”}”(hj4Vh]”hŒdev”…”�”}”(hj6Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj2Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M>hj.Vubj¸)�”}”(hhh]”j<)�”}”(hŒdevice providing the PWMs”h]”hŒdevice providing the PWMs”…”�”}”(hjMVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jIVh´M>hjJVubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj.Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jIVh´M>hj+Vubj˜)�”}”(hŒ6``cdev`` :c:type:`struct cdev ` for this device ”h]”(jž)�”}”(hŒ``cdev``”h]”jB)�”}”(hjmVh]”hŒcdev”…”�”}”(hjoVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjkVubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M?hjgVubj¸)�”}”(hhh]”j<)�”}”(hŒ,:c:type:`struct cdev ` for this device”h]”(h)�”}”(hŒ:c:type:`struct cdev `”h]”jB)�”}”(hjŒVh]”hŒ struct cdev”…”�”}”(hjŽVh²hh³Nh´Nubah}”(h]”h ]”(jŒ>j0Œc-type”eh"]”h$]”h&]”uh1jAhjŠVubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjž>j¡>Œcdev”uh1hh³j‚Vh´M?hj†VubhŒ for this device”…”�”}”(hj†Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‚Vh´M?hjƒVubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjgVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j‚Vh´M?hj+Vubj˜)�”}”(hŒ*``ops`` callbacks for this PWM controller ”h]”(jž)�”}”(hŒ``ops``”h]”jB)�”}”(hjÅVh]”hŒops”…”�”}”(hjÇVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÃVubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M@hj¿Vubj¸)�”}”(hhh]”j<)�”}”(hŒ!callbacks for this PWM controller”h]”hŒ!callbacks for this PWM controller”…”�”}”(hjÞVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÚVh´M@hjÛVubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¿Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÚVh´M@hj+Vubj˜)�”}”(hŒ%``owner`` module providing this chip ”h]”(jž)�”}”(hŒ ``owner``”h]”jB)�”}”(hjþVh]”hŒowner”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjüVubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MAhjøVubj¸)�”}”(hhh]”j<)�”}”(hŒmodule providing this chip”h]”hŒmodule providing this chip”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jWh´MAhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjøVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jWh´MAhj+Vubj˜)�”}”(hŒ&``id`` unique number of this PWM chip ”h]”(jž)�”}”(hŒ``id``”h]”jB)�”}”(hj7Wh]”hŒid”…”�”}”(hj9Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj5Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MBhj1Wubj¸)�”}”(hhh]”j<)�”}”(hŒunique number of this PWM chip”h]”hŒunique number of this PWM chip”…”�”}”(hjPWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jLWh´MBhjMWubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj1Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jLWh´MBhj+Vubj˜)�”}”(hŒ0``npwm`` number of PWMs controlled by this chip ”h]”(jž)�”}”(hŒ``npwm``”h]”jB)�”}”(hjpWh]”hŒnpwm”…”�”}”(hjrWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjnWubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MChjjWubj¸)�”}”(hhh]”j<)�”}”(hŒ&number of PWMs controlled by this chip”h]”hŒ&number of PWMs controlled by this chip”…”�”}”(hj‰Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j…Wh´MChj†Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j…Wh´MChj+Vubj˜)�”}”(hŒD``of_xlate`` request a PWM device given a device tree PWM specifier ”h]”(jž)�”}”(hŒ ``of_xlate``”h]”jB)�”}”(hj©Wh]”hŒof_xlate”…”�”}”(hj«Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj§Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MDhj£Wubj¸)�”}”(hhh]”j<)�”}”(hŒ6request a PWM device given a device tree PWM specifier”h]”hŒ6request a PWM device given a device tree PWM specifier”…”�”}”(hjÂWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¾Wh´MDhj¿Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj£Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j¾Wh´MDhj+Vubj˜)�”}”(hŒB``atomic`` can the driver's ->apply() be called in atomic context ”h]”(jž)�”}”(hŒ ``atomic``”h]”jB)�”}”(hjâWh]”hŒatomic”…”�”}”(hjäWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjàWubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MEhjÜWubj¸)�”}”(hhh]”j<)�”}”(hŒ6can the driver's ->apply() be called in atomic context”h]”hŒ8can the driver’s ->apply() be called in atomic context”…”�”}”(hjûWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j÷Wh´MEhjøWubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÜWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j÷Wh´MEhj+Vubj˜)�”}”(hŒX``gpio`` :c:type:`struct gpio_chip ` to operate this PWM chip's lines as GPO ”h]”(jž)�”}”(hŒ``gpio``”h]”jB)�”}”(hjXh]”hŒgpio”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MFhjXubj¸)�”}”(hhh]”j<)�”}”(hŒN:c:type:`struct gpio_chip ` to operate this PWM chip's lines as GPO”h]”(h)�”}”(hŒ&:c:type:`struct gpio_chip `”h]”jB)�”}”(hj:Xh]”hŒstruct gpio_chip”…”�”}”(hjj0Œc-type”eh"]”h$]”h&]”uh1jAhj8Xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j˜>Œ refdomain”j0Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjž>j¡>Œ gpio_chip”uh1hh³j0Xh´MFhj4XubhŒ* to operate this PWM chip’s lines as GPO”…”�”}”(hj4Xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0Xh´MFhj1Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j0Xh´MFhj+Vubj˜)�”}”(hŒO``uses_pwmchip_alloc`` signals if pwmchip_allow was used to allocate this chip ”h]”(jž)�”}”(hŒ``uses_pwmchip_alloc``”h]”jB)�”}”(hjsXh]”hŒuses_pwmchip_alloc”…”�”}”(hjuXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjqXubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MGhjmXubj¸)�”}”(hhh]”j<)�”}”(hŒ7signals if pwmchip_allow was used to allocate this chip”h]”hŒ7signals if pwmchip_allow was used to allocate this chip”…”�”}”(hjŒXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jˆXh´MGhj‰Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjmXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jˆXh´MGhj+Vubj˜)�”}”(hŒM``operational`` signals if the chip can be used (or is already deregistered) ”h]”(jž)�”}”(hŒ``operational``”h]”jB)�”}”(hj¬Xh]”hŒ operational”…”�”}”(hj®Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjªXubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MHhj¦Xubj¸)�”}”(hhh]”j<)�”}”(hŒh²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ&pwmchip_supports_waveform (C function)”Œc.pwmchip_supports_waveform”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ6bool pwmchip_supports_waveform (struct pwm_chip *chip)”h]”hè)�”}”(hŒ5bool pwmchip_supports_waveform(struct pwm_chip *chip)”h]”(j†)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjêYh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjæYh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Miubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùYh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjæYh²hh³jøYh´Miubhî)�”}”(hŒpwmchip_supports_waveform”h]”hô)�”}”(hŒpwmchip_supports_waveform”h]”hŒpwmchip_supports_waveform”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjZubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjæYh²hh³jøYh´MiubjÁ)�”}”(hŒ(struct pwm_chip *chip)”h]”jÇ)�”}”(hŒstruct pwm_chip *chip”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj'Zh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj#Zubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Zh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj#Zubh)�”}”(hhh]”hô)�”}”(hŒpwm_chip”h]”hŒpwm_chip”…”�”}”(hjEZh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjBZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jGZŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj ZsbŒc.pwmchip_supports_waveform”†”asbuh1hhj#Zubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeZh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj#Zubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjsZh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj#Zubhô)�”}”(hŒchip”h]”hŒchip”…”�”}”(hj€Zh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj#Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjZubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjæYh²hh³jøYh´Miubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjâYh²hh³jøYh´Miubah}”(h]”jÝYah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jøYh´MihjßYh²hubj#)�”}”(hhh]”j<)�”}”(hŒ4checks if the given chip supports waveform callbacks”h]”hŒ4checks if the given chip supports waveform callbacks”…”�”}”(hjªZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´Mihj§Zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjßYh²hh³jøYh´Miubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jÂZj7jÂZj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒË**Parameters** ``struct pwm_chip *chip`` The pwm_chip to test **Return** true iff the pwm chip support the waveform functions like pwm_set_waveform_might_sleep() and pwm_round_waveform_might_sleep()”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjÌZh]”hŒ Parameters”…”�”}”(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/miscellaneous:44: ./include/linux/pwm.h”h´MmhjÆZubj“)�”}”(hhh]”j˜)�”}”(hŒ/``struct pwm_chip *chip`` The pwm_chip to test ”h]”(jž)�”}”(hŒ``struct pwm_chip *chip``”h]”jB)�”}”(hjëZh]”hŒstruct pwm_chip *chip”…”�”}”(hjíZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjéZubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MjhjåZubj¸)�”}”(hhh]”j<)�”}”(hŒThe pwm_chip to test”h]”hŒThe pwm_chip to test”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j[h´Mjhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjåZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³•j[h´MjhjâZubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjÆZubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj&[h]”hŒReturn”…”�”}”(hj([h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj$[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MlhjÆZubj<)�”}”(hŒ}true iff the pwm chip support the waveform functions like pwm_set_waveform_might_sleep() and pwm_round_waveform_might_sleep()”h]”hŒ}true iff the pwm chip support the waveform functions like pwm_set_waveform_might_sleep() and pwm_round_waveform_might_sleep()”…”�”}”(hj<[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MlhjÆZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_config (C function)”Œ c.pwm_config”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒCint pwm_config (struct pwm_device *pwm, int duty_ns, int period_ns)”h]”hè)�”}”(hŒBint pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjk[h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjg[h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M”ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz[h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjg[h²hh³jy[h´M”ubhî)�”}”(hŒ pwm_config”h]”hô)�”}”(hŒ pwm_config”h]”hŒ pwm_config”…”�”}”(hjŒ[h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjˆ[ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjg[h²hh³jy[h´M”ubjÁ)�”}”(hŒ4(struct pwm_device *pwm, int duty_ns, int period_ns)”h]”(jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjÆ[h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÃ[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jÈ[Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjŽ[sbŒ c.pwm_config”†”asbuh1hhj¤[ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ[h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¤[ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjô[h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj¤[ubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¤[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj [ubjÇ)�”}”(hŒ int duty_ns”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\ubhô)�”}”(hŒduty_ns”h]”hŒduty_ns”…”�”}”(hj6\h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj [ubjÇ)�”}”(hŒ int period_ns”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjO\h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjK\ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]\h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjK\ubhô)�”}”(hŒ period_ns”h]”hŒ period_ns”…”�”}”(hjk\h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjK\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj [ubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjg[h²hh³jy[h´M”ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjc[h²hh³jy[h´M”ubah}”(h]”j^[ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jy[h´M”hj`[h²hubj#)�”}”(hhh]”j<)�”}”(hŒ!change a PWM device configuration”h]”hŒ!change a PWM device configuration”…”�”}”(hj•\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M”hj’\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj`[h²hh³jy[h´M”ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j­\j7j­\j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒà**Parameters** ``struct pwm_device *pwm`` PWM device ``int duty_ns`` "on" time (in nanoseconds) ``int period_ns`` duration (in nanoseconds) of one cycle **Return** 0 on success or a negative error code on failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj·\h]”hŒ Parameters”…”�”}”(hj¹\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjµ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M˜hj±\ubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjÖ\h]”hŒstruct pwm_device *pwm”…”�”}”(hjØ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÔ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M•hjÐ\ubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hjï\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jë\h´M•hjì\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÐ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jë\h´M•hjÍ\ubj˜)�”}”(hŒ+``int duty_ns`` "on" time (in nanoseconds) ”h]”(jž)�”}”(hŒ``int duty_ns``”h]”jB)�”}”(hj]h]”hŒ int duty_ns”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M–hj ]ubj¸)�”}”(hhh]”j<)�”}”(hŒ"on" time (in nanoseconds)”h]”hŒ“onâ€� time (in nanoseconds)”…”�”}”(hj(]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j$]h´M–hj%]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j$]h´M–hjÍ\ubj˜)�”}”(hŒ9``int period_ns`` duration (in nanoseconds) of one cycle ”h]”(jž)�”}”(hŒ``int period_ns``”h]”jB)�”}”(hjH]h]”hŒ int period_ns”…”�”}”(hjJ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjF]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M—hjB]ubj¸)�”}”(hhh]”j<)�”}”(hŒ&duration (in nanoseconds) of one cycle”h]”hŒ&duration (in nanoseconds) of one cycle”…”�”}”(hja]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j]]h´M—hj^]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjB]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j]]h´M—hjÍ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj±\ubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjƒ]h]”hŒReturn”…”�”}”(hj…]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj�]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M™hj±\ubj<)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj™]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M™hj±\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_enable (C function)”Œ c.pwm_enable”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ'int pwm_enable (struct pwm_device *pwm)”h]”hè)�”}”(hŒ&int pwm_enable(struct pwm_device *pwm)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈ]h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjÄ]h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.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°ubhî)�”}”(hŒ pwm_enable”h]”hô)�”}”(hŒ pwm_enable”h]”hŒ pwm_enable”…”�”}”(hjé]h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjå]ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjÄ]h²hh³jÖ]h´M°ubjÁ)�”}”(hŒ(struct pwm_device *pwm)”h]”jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hj#^h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j%^Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjë]sbŒ c.pwm_enable”†”asbuh1hhj^ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC^h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj^ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjQ^h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj^ubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hj^^h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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ˆuh1hçjjhjÀ]h²hh³jÖ]h´M°ubah}”(h]”j»]ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jÖ]h´M°hj½]h²hubj#)�”}”(hhh]”j<)�”}”(hŒstart a PWM output toggling”h]”hŒstart a PWM output toggling”…”�”}”(hjˆ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M°hj…^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj½]h²hh³jÖ]h´M°ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j ^j7j ^j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒv**Parameters** ``struct pwm_device *pwm`` PWM device **Return** 0 on success or a negative error code on failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjª^h]”hŒ Parameters”…”�”}”(hj¬^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¨^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M´hj¤^ubj“)�”}”(hhh]”j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjÉ^h]”hŒstruct pwm_device *pwm”…”�”}”(hjË^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÇ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M±hjÃ^ubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hjâ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÞ^h´M±hjß^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÃ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÞ^h´M±hjÀ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj¤^ubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj_h]”hŒReturn”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M³hj¤^ubj<)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´M³hj¤^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_disable (C function)”Œ c.pwm_disable”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ)void pwm_disable (struct pwm_device *pwm)”h]”hè)�”}”(hŒ(void pwm_disable(struct pwm_device *pwm)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjI_h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjE_h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÅubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX_h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjE_h²hh³jW_h´MÅubhî)�”}”(hŒ pwm_disable”h]”hô)�”}”(hŒ pwm_disable”h]”hŒ pwm_disable”…”�”}”(hjj_h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjf_ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjE_h²hh³jW_h´MÅubjÁ)�”}”(hŒ(struct pwm_device *pwm)”h]”jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hj¤_h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¡_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j¦_Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjl_sbŒ c.pwm_disable”†”asbuh1hhj‚_ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ_h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj‚_ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÒ_h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj‚_ubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hjß_h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‚_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj~_ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjE_h²hh³jW_h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjA_h²hh³jW_h´MÅubah}”(h]”j<_ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jW_h´MÅhj>_h²hubj#)�”}”(hhh]”j<)�”}”(hŒstop a PWM output toggling”h]”hŒstop a PWM output toggling”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÅhj`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj>_h²hh³jW_h´MÅubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j!`j7j!`j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒ7**Parameters** ``struct pwm_device *pwm`` PWM device”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj+`h]”hŒ Parameters”…”�”}”(hj-`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj)`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÉhj%`ubj“)�”}”(hhh]”j˜)�”}”(hŒ%``struct pwm_device *pwm`` PWM device”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjJ`h]”hŒstruct pwm_device *pwm”…”�”}”(hjL`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjH`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MËhjD`ubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hjc`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÆhj``ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjD`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j_`h´MËhjA`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj%`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_might_sleep (C function)”Œc.pwm_might_sleep”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ-bool pwm_might_sleep (struct pwm_device *pwm)”h]”hè)�”}”(hŒ,bool pwm_might_sleep(struct pwm_device *pwm)”h]”(j†)�”}”(hjìYh]”hŒbool”…”�”}”(hj¤`h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj `h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.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Øubhî)�”}”(hŒpwm_might_sleep”h]”hô)�”}”(hŒpwm_might_sleep”h]”hŒpwm_might_sleep”…”�”}”(hjÄ`h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÀ`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj `h²hh³j±`h´MØubjÁ)�”}”(hŒ(struct pwm_device *pwm)”h]”jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjþ`h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjû`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jaŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjÆ`sbŒc.pwm_might_sleep”†”asbuh1hhjÜ`ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÜ`ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj,ah²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÜ`ubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hó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ˆuh1hçjjhjœ`h²hh³j±`h´MØubah}”(h]”j—`ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j±`h´MØhj™`h²hubj#)�”}”(hhh]”j<)�”}”(hŒ is pwm_apply_atomic() supported?”h]”hŒ is pwm_apply_atomic() supported?”…”�”}”(hjcah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MØhj`ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj™`h²hh³j±`h´MØubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j{aj7j{aj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒƒ**Parameters** ``struct pwm_device *pwm`` PWM device **Return** false if pwm_apply_atomic() can be called from atomic context.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj…ah]”hŒ Parameters”…”�”}”(hj‡ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjƒaubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÜhjaubj“)�”}”(hhh]”j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hj¤ah]”hŒstruct pwm_device *pwm”…”�”}”(hj¦ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¢aubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÙhjžaubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj½ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¹ah´MÙhjºaubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjžaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j¹ah´MÙhj›aubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjaubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjßah]”hŒReturn”…”�”}”(hjáah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÝaubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÛhjaubj<)�”}”(hŒ>false if pwm_apply_atomic() can be called from atomic context.”h]”hŒ>false if pwm_apply_atomic() can be called from atomic context.”…”�”}”(hjõah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:44: ./include/linux/pwm.h”h´MÛhjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ+pwm_round_waveform_might_sleep (C function)”Œ c.pwm_round_waveform_might_sleep”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒTint pwm_round_waveform_might_sleep (struct pwm_device *pwm, struct pwm_waveform *wf)”h]”hè)�”}”(hŒSint pwm_round_waveform_might_sleep(struct pwm_device *pwm, struct pwm_waveform *wf)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj$bh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj bh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KÖubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3bh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj bh²hh³j2bh´KÖubhî)�”}”(hŒpwm_round_waveform_might_sleep”h]”hô)�”}”(hŒpwm_round_waveform_might_sleep”h]”hŒpwm_round_waveform_might_sleep”…”�”}”(hjEbh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjAbubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj bh²hh³j2bh´KÖubjÁ)�”}”(hŒ1(struct pwm_device *pwm, struct pwm_waveform *wf)”h]”(jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjabh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj]bubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnbh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj]bubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj|bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j�bŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjGbsbŒ c.pwm_round_waveform_might_sleep”†”asbuh1hhj]bubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸbh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj]bubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj­bh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj]bubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hjºbh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj]bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjYbubjÇ)�”}”(hŒstruct pwm_waveform *wf”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_waveform”h]”hŒ pwm_waveform”…”�”}”(hjñbh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjîbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jóbŒmodname”NŒ classname”Njj )�”}”j]”j›bŒ c.pwm_round_waveform_might_sleep”†”asbuh1hhjÏbubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÏbubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÏbubhô)�”}”(hŒwf”h]”hŒwf”…”�”}”(hj*ch²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÏbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjYbubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj bh²hh³j2bh´KÖubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjbh²hh³j2bh´KÖubah}”(h]”jbah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j2bh´KÖhjbh²hubj#)�”}”(hhh]”j<)�”}”(hŒ=Query hardware capabilities Cannot be used in atomic context.”h]”hŒ=Query hardware capabilities Cannot be used in atomic context.”…”�”}”(hjTch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KÖhjQch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjbh²hh³j2bh´KÖubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jlcj7jlcj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX¥**Parameters** ``struct pwm_device *pwm`` PWM device ``struct pwm_waveform *wf`` waveform to round and output parameter **Description** Typically a given waveform cannot be implemented exactly by hardware, e.g. because hardware only supports coarse period resolution or no duty_offset. This function returns the actually implemented waveform if you pass **wf** to pwm_set_waveform_might_sleep() now. Note however that the world doesn't stop turning when you call it, so when doing:: pwm_round_waveform_might_sleep(mypwm, &wf); pwm_set_waveform_might_sleep(mypwm, &wf, true); the latter might fail, e.g. because an input clock changed its rate between these two calls and the waveform determined by pwm_round_waveform_might_sleep() cannot be implemented any more. Usually all values passed in **wf** are rounded down to the nearest possible value (in the order period_length_ns, duty_length_ns and then duty_offset_ns). Only if this isn't possible, a value might grow. See the documentation for pwm_set_waveform_might_sleep() for a more formal description. **Return** 0 on success, 1 if at least one value had to be rounded up or a negative errno. **Context** May sleep.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjvch]”hŒ Parameters”…”�”}”(hjxch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjtcubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KÚhjpcubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hj•ch]”hŒstruct pwm_device *pwm”…”�”}”(hj—ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj“cubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KØhj�cubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj®ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jªch´KØhj«cubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj�cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jªch´KØhjŒcubj˜)�”}”(hŒC``struct pwm_waveform *wf`` waveform to round and output parameter ”h]”(jž)�”}”(hŒ``struct pwm_waveform *wf``”h]”jB)�”}”(hjÎch]”hŒstruct pwm_waveform *wf”…”�”}”(hjÐch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÌcubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KÙhjÈcubj¸)�”}”(hhh]”j<)�”}”(hŒ&waveform to round and output parameter”h]”hŒ&waveform to round and output parameter”…”�”}”(hjçch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jãch´KÙhjäcubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÈcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jãch´KÙhjŒcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjpcubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj dh]”hŒ Description”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KÛhjpcubj<)�”}”(hXTypically a given waveform cannot be implemented exactly by hardware, e.g. because hardware only supports coarse period resolution or no duty_offset. This function returns the actually implemented waveform if you pass **wf** to pwm_set_waveform_might_sleep() now.”h]”(hŒÚTypically a given waveform cannot be implemented exactly by hardware, e.g. because hardware only supports coarse period resolution or no duty_offset. This function returns the actually implemented waveform if you pass ”…”�”}”(hjdh²hh³Nh´Nubj})�”}”(hŒ**wf**”h]”hŒwf”…”�”}”(hj'dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjdubhŒ' to pwm_set_waveform_might_sleep() now.”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´KÚhjpcubj<)�”}”(hŒRNote however that the world doesn't stop turning when you call it, so when doing::”h]”hŒSNote however that the world doesn’t stop turning when you call it, so when doing:”…”�”}”(hj@dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kßhjpcubj¡@)�”}”(hŒ[pwm_round_waveform_might_sleep(mypwm, &wf); pwm_set_waveform_might_sleep(mypwm, &wf, true);”h]”hŒ[pwm_round_waveform_might_sleep(mypwm, &wf); pwm_set_waveform_might_sleep(mypwm, &wf, true);”…”�”}”hjOdsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kâhjpcubj<)�”}”(hŒ»the latter might fail, e.g. because an input clock changed its rate between these two calls and the waveform determined by pwm_round_waveform_might_sleep() cannot be implemented any more.”h]”hŒ»the latter might fail, e.g. because an input clock changed its rate between these two calls and the waveform determined by pwm_round_waveform_might_sleep() cannot be implemented any more.”…”�”}”(hj^dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kåhjpcubj<)�”}”(hX$Usually all values passed in **wf** are rounded down to the nearest possible value (in the order period_length_ns, duty_length_ns and then duty_offset_ns). Only if this isn't possible, a value might grow. See the documentation for pwm_set_waveform_might_sleep() for a more formal description.”h]”(hŒUsually all values passed in ”…”�”}”(hjmdh²hh³Nh´Nubj})�”}”(hŒ**wf**”h]”hŒwf”…”�”}”(hjudh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjmdubhX are rounded down to the nearest possible value (in the order period_length_ns, duty_length_ns and then duty_offset_ns). Only if this isn’t possible, a value might grow. See the documentation for pwm_set_waveform_might_sleep() for a more formal description.”…”�”}”(hjmdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kéhjpcubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj�dh]”hŒReturn”…”�”}”(hj’dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjŽdubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kïhjpcubj<)�”}”(hŒO0 on success, 1 if at least one value had to be rounded up or a negative errno.”h]”hŒO0 on success, 1 if at least one value had to be rounded up or a negative errno.”…”�”}”(hj¦dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kðhjpcubj<)�”}”(hŒ **Context**”h]”j})�”}”(hj·dh]”hŒContext”…”�”}”(hj¹dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjµdubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kóhjpcubj<)�”}”(hŒ May sleep.”h]”hŒ May sleep.”…”�”}”(hjÍdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Kòhjpcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ)pwm_get_waveform_might_sleep (C function)”Œc.pwm_get_waveform_might_sleep”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒRint pwm_get_waveform_might_sleep (struct pwm_device *pwm, struct pwm_waveform *wf)”h]”hè)�”}”(hŒQint pwm_get_waveform_might_sleep(struct pwm_device *pwm, struct pwm_waveform *wf)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjüdh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjødh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M$ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjødh²hh³j eh´M$ubhî)�”}”(hŒpwm_get_waveform_might_sleep”h]”hô)�”}”(hŒpwm_get_waveform_might_sleep”h]”hŒpwm_get_waveform_might_sleep”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjeubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjødh²hh³j eh´M$ubjÁ)�”}”(hŒ1(struct pwm_device *pwm, struct pwm_waveform *wf)”h]”(jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj9eh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj5eubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFeh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj5eubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjWeh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjTeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jYeŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjesbŒc.pwm_get_waveform_might_sleep”†”asbuh1hhj5eubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjweh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj5eubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj…eh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj5eubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hj’eh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj5eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj1eubjÇ)�”}”(hŒstruct pwm_waveform *wf”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_waveform”h]”hŒ pwm_waveform”…”�”}”(hjÉeh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÆeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jËeŒmodname”NŒ classname”Njj )�”}”j]”jseŒc.pwm_get_waveform_might_sleep”†”asbuh1hhj§eubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçeh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj§eubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjõeh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj§eubhô)�”}”(hŒwf”h]”hŒwf”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj§eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj1eubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjødh²hh³j eh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjôdh²hh³j eh´M$ubah}”(h]”jïdah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j eh´M$hjñdh²hubj#)�”}”(hhh]”j<)�”}”(hŒLQuery hardware about current configuration Cannot be used in atomic context.”h]”hŒLQuery hardware about current configuration Cannot be used in atomic context.”…”�”}”(hj,fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M$hj)fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjñdh²hh³j eh´M$ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jDfj7jDfj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXU**Parameters** ``struct pwm_device *pwm`` PWM device ``struct pwm_waveform *wf`` output parameter **Description** Stores the current configuration of the PWM in **wf**. Note this is the equivalent of pwm_get_state_hw() (and not pwm_get_state()) for pwm_waveform. **Return** 0 on success or a negative errno **Context** May sleep.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjNfh]”hŒ Parameters”…”�”}”(hjPfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjLfubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M(hjHfubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjmfh]”hŒstruct pwm_device *pwm”…”�”}”(hjofh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjkfubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M&hjgfubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj†fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‚fh´M&hjƒfubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjgfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j‚fh´M&hjdfubj˜)�”}”(hŒ-``struct pwm_waveform *wf`` output parameter ”h]”(jž)�”}”(hŒ``struct pwm_waveform *wf``”h]”jB)�”}”(hj¦fh]”hŒstruct pwm_waveform *wf”…”�”}”(hj¨fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¤fubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M'hj fubj¸)�”}”(hhh]”j<)�”}”(hŒoutput parameter”h]”hŒoutput parameter”…”�”}”(hj¿fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j»fh´M'hj¼fubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j»fh´M'hjdfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjHfubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjáfh]”hŒ Description”…”�”}”(hjãfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjßfubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M)hjHfubj<)�”}”(hŒ”Stores the current configuration of the PWM in **wf**. Note this is the equivalent of pwm_get_state_hw() (and not pwm_get_state()) for pwm_waveform.”h]”(hŒ/Stores the current configuration of the PWM in ”…”�”}”(hj÷fh²hh³Nh´Nubj})�”}”(hŒ**wf**”h]”hŒwf”…”�”}”(hjÿfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj÷fubhŒ_. Note this is the equivalent of pwm_get_state_hw() (and not pwm_get_state()) for pwm_waveform.”…”�”}”(hj÷fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M(hjHfubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjgh]”hŒReturn”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M+hjHfubj<)�”}”(hŒ 0 on success or a negative errno”h]”hŒ 0 on success or a negative errno”…”�”}”(hj0gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M,hjHfubj<)�”}”(hŒ **Context**”h]”j})�”}”(hjAgh]”hŒContext”…”�”}”(hjCgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj?gubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M.hjHfubj<)�”}”(hŒ May sleep.”h]”hŒ May sleep.”…”�”}”(hjWgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M-hjHfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ)pwm_set_waveform_might_sleep (C function)”Œc.pwm_set_waveform_might_sleep”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒdint pwm_set_waveform_might_sleep (struct pwm_device *pwm, const struct pwm_waveform *wf, bool exact)”h]”hè)�”}”(hŒcint pwm_set_waveform_might_sleep(struct pwm_device *pwm, const struct pwm_waveform *wf, bool exact)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj†gh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj‚gh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.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î)�”}”(hŒpwm_set_waveform_might_sleep”h]”hô)�”}”(hŒpwm_set_waveform_might_sleep”h]”hŒpwm_set_waveform_might_sleep”…”�”}”(hj§gh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj£gubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj‚gh²hh³j”gh´M’ubjÁ)�”}”(hŒC(struct pwm_device *pwm, const struct pwm_waveform *wf, bool exact)”h]”(jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjÃgh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj¿gubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐgh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¿gubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjágh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÞgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jãgŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj©gsbŒc.pwm_set_waveform_might_sleep”†”asbuh1hhj¿gubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¿gubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj¿gubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¿gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj»gubjÇ)�”}”(hŒconst struct pwm_waveform *wf”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hj5hh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj1hubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBhh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj1hubjÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjPhh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj1hubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]hh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj1hubh)�”}”(hhh]”hô)�”}”(hŒ pwm_waveform”h]”hŒ pwm_waveform”…”�”}”(hjnhh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjkhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jphŒmodname”NŒ classname”Njj )�”}”j]”jýgŒc.pwm_set_waveform_might_sleep”†”asbuh1hhj1hubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒhh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj1hubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjšhh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj1hubhô)�”}”(hŒwf”h]”hŒwf”…”�”}”(hj§hh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj1hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj»gubjÇ)�”}”(hŒ bool exact”h]”(j†)�”}”(hjìYh]”hŒbool”…”�”}”(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ô)�”}”(hŒexact”h]”hŒexact”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¼hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj»gubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj‚gh²hh³j”gh´M’ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj~gh²hh³j”gh´M’ubah}”(h]”jygah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j”gh´M’hj{gh²hubj#)�”}”(hhh]”j<)�”}”(hŒ6Apply a new waveform Cannot be used in atomic context.”h]”hŒ6Apply a new waveform Cannot be used in atomic context.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M’hjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj{gh²hh³j”gh´M’ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jij7jij8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX–**Parameters** ``struct pwm_device *pwm`` PWM device ``const struct pwm_waveform *wf`` The waveform to apply ``bool exact`` If true no rounding is allowed **Description** Typically a requested waveform cannot be implemented exactly, e.g. because you requested .period_length_ns = 100 ns, but the hardware can only set periods that are a multiple of 8.5 ns. With that hardware passing **exact** = true results in pwm_set_waveform_might_sleep() failing and returning -EDOM. If **exact** = false you get a period of 93.5 ns (i.e. the biggest period not bigger than the requested value). Note that even with **exact** = true, some rounding by less than 1 ns is possible/needed. In the above example requesting .period_length_ns = 94 and **exact** = true, you get the hardware configured with period = 93.5 ns. Let C be the set of possible hardware configurations for a given PWM device, consisting of tuples (p, d, o) where p is the period length, d is the duty length and o the duty offset. The following algorithm is implemented to pick the hardware setting (p, d, o) ∈ C for a given request (p', d', o') with **exact** = false:: p = max( { á¹— | ∃ ḋ, ȯ : (á¹—, ḋ, ȯ) ∈ C ∧ á¹— ≤ p' } ∪ { min({ á¹— | ∃ ḋ, ȯ : (á¹—, ḋ, ȯ) ∈ C }) }) d = max( { ḋ | ∃ ȯ : (p, ḋ, ȯ) ∈ C ∧ ḋ ≤ d' } ∪ { min({ ḋ | ∃ ȯ : (p, ḋ, ȯ) ∈ C }) }) o = max( { ȯ | (p, d, ȯ) ∈ C ∧ ȯ ≤ o' } ∪ { min({ ȯ | (p, d, ȯ) ∈ C }) }) In words: The chosen period length is the maximal possible period length not bigger than the requested period length and if that doesn't exist, the minimal period length. The chosen duty length is the maximal possible duty length that is compatible with the chosen period length and isn't bigger than the requested duty length. Again if such a value doesn't exist, the minimal duty length compatible with the chosen period is picked. After that the duty offset compatible with the chosen period and duty length is chosen in the same way. **Return** 0 on success, -EDOM if setting failed due to the exact waveform not being possible (if **exact**), or a different negative errno on failure. **Context** May sleep.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj'ih]”hŒ Parameters”…”�”}”(hj)ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj%iubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M–hj!iubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjFih]”hŒstruct pwm_device *pwm”…”�”}”(hjHih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjDiubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M”hj@iubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj_ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j[ih´M”hj\iubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj@iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j[ih´M”hj=iubj˜)�”}”(hŒ8``const struct pwm_waveform *wf`` The waveform to apply ”h]”(jž)�”}”(hŒ!``const struct pwm_waveform *wf``”h]”jB)�”}”(hjih]”hŒconst struct pwm_waveform *wf”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj}iubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M•hjyiubj¸)�”}”(hhh]”j<)�”}”(hŒThe waveform to apply”h]”hŒThe waveform to apply”…”�”}”(hj˜ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j”ih´M•hj•iubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjyiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j”ih´M•hj=iubj˜)�”}”(hŒ.``bool exact`` If true no rounding is allowed ”h]”(jž)�”}”(hŒ``bool exact``”h]”jB)�”}”(hj¸ih]”hŒ bool exact”…”�”}”(hjºih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¶iubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M–hj²iubj¸)�”}”(hhh]”j<)�”}”(hŒIf true no rounding is allowed”h]”hŒIf true no rounding is allowed”…”�”}”(hjÑih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÍih´M–hjÎiubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj²iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÍih´M–hj=iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj!iubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjóih]”hŒ Description”…”�”}”(hjõih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjñiubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M˜hj!iubj<)�”}”(hXzTypically a requested waveform cannot be implemented exactly, e.g. because you requested .period_length_ns = 100 ns, but the hardware can only set periods that are a multiple of 8.5 ns. With that hardware passing **exact** = true results in pwm_set_waveform_might_sleep() failing and returning -EDOM. If **exact** = false you get a period of 93.5 ns (i.e. the biggest period not bigger than the requested value). Note that even with **exact** = true, some rounding by less than 1 ns is possible/needed. In the above example requesting .period_length_ns = 94 and **exact** = true, you get the hardware configured with period = 93.5 ns.”h]”(hŒÕTypically a requested waveform cannot be implemented exactly, e.g. because you requested .period_length_ns = 100 ns, but the hardware can only set periods that are a multiple of 8.5 ns. With that hardware passing ”…”�”}”(hj jh²hh³Nh´Nubj})�”}”(hŒ **exact**”h]”hŒexact”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj jubhŒR = true results in pwm_set_waveform_might_sleep() failing and returning -EDOM. If ”…”�”}”(hj jh²hh³Nh´Nubj})�”}”(hŒ **exact**”h]”hŒexact”…”�”}”(hj#jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj jubhŒx = false you get a period of 93.5 ns (i.e. the biggest period not bigger than the requested value). Note that even with ”…”�”}”(hj jh²hh³Nh´Nubj})�”}”(hŒ **exact**”h]”hŒexact”…”�”}”(hj5jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj jubhŒx = true, some rounding by less than 1 ns is possible/needed. In the above example requesting .period_length_ns = 94 and ”…”�”}”(hj jh²hh³Nh´Nubj})�”}”(hŒ **exact**”h]”hŒexact”…”�”}”(hjGjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj jubhŒ? = true, you get the hardware configured with period = 93.5 ns.”…”�”}”(hj jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M—hj!iubj<)�”}”(hŒµLet C be the set of possible hardware configurations for a given PWM device, consisting of tuples (p, d, o) where p is the period length, d is the duty length and o the duty offset.”h]”hŒµLet C be the set of possible hardware configurations for a given PWM device, consisting of tuples (p, d, o) where p is the period length, d is the duty length and o the duty offset.”…”�”}”(hj`jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¡hj!iubj<)�”}”(hŒ�The following algorithm is implemented to pick the hardware setting (p, d, o) ∈ C for a given request (p', d', o') with **exact** = false::”h]”(hŒ€The following algorithm is implemented to pick the hardware setting (p, d, o) ∈ C for a given request (p’, d’, o’) with ”…”�”}”(hjojh²hh³Nh´Nubj})�”}”(hŒ **exact**”h]”hŒexact”…”�”}”(hjwjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjojubhŒ = false:”…”�”}”(hjojh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¥hj!iubj¡@)�”}”(hXJp = max( { á¹— | ∃ ḋ, ȯ : (á¹—, ḋ, ȯ) ∈ C ∧ á¹— ≤ p' } ∪ { min({ á¹— | ∃ ḋ, ȯ : (á¹—, ḋ, ȯ) ∈ C }) }) d = max( { ḋ | ∃ ȯ : (p, ḋ, ȯ) ∈ C ∧ ḋ ≤ d' } ∪ { min({ ḋ | ∃ ȯ : (p, ḋ, ȯ) ∈ C }) }) o = max( { ȯ | (p, d, ȯ) ∈ C ∧ ȯ ≤ o' } ∪ { min({ ȯ | (p, d, ȯ) ∈ C }) })”h]”hXJp = max( { á¹— | ∃ ḋ, ȯ : (á¹—, ḋ, ȯ) ∈ C ∧ á¹— ≤ p' } ∪ { min({ á¹— | ∃ ḋ, ȯ : (á¹—, ḋ, ȯ) ∈ C }) }) d = max( { ḋ | ∃ ȯ : (p, ḋ, ȯ) ∈ C ∧ ḋ ≤ d' } ∪ { min({ ḋ | ∃ ȯ : (p, ḋ, ȯ) ∈ C }) }) o = max( { ȯ | (p, d, ȯ) ∈ C ∧ ȯ ≤ o' } ∪ { min({ ȯ | (p, d, ȯ) ∈ C }) })”…”�”}”hj�jsbah}”(h]”h ]”h"]”h$]”h&]”j j uh1j @h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¨hj!iubj<)�”}”(hXIn words: The chosen period length is the maximal possible period length not bigger than the requested period length and if that doesn't exist, the minimal period length. The chosen duty length is the maximal possible duty length that is compatible with the chosen period length and isn't bigger than the requested duty length. Again if such a value doesn't exist, the minimal duty length compatible with the chosen period is picked. After that the duty offset compatible with the chosen period and duty length is chosen in the same way.”h]”hXIn words: The chosen period length is the maximal possible period length not bigger than the requested period length and if that doesn’t exist, the minimal period length. The chosen duty length is the maximal possible duty length that is compatible with the chosen period length and isn’t bigger than the requested duty length. Again if such a value doesn’t exist, the minimal duty length compatible with the chosen period is picked. After that the duty offset compatible with the chosen period and duty length is chosen in the same way.”…”�”}”(hjŸjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¬hj!iubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj°jh]”hŒReturn”…”�”}”(hj²jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj®jubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mµhj!iubj<)�”}”(hŒŒ0 on success, -EDOM if setting failed due to the exact waveform not being possible (if **exact**), or a different negative errno on failure.”h]”(hŒW0 on success, -EDOM if setting failed due to the exact waveform not being possible (if ”…”�”}”(hjÆjh²hh³Nh´Nubj})�”}”(hŒ **exact**”h]”hŒexact”…”�”}”(hjÎjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÆjubhŒ,), or a different negative errno on failure.”…”�”}”(hjÆjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¶hj!iubj<)�”}”(hŒ **Context**”h]”j})�”}”(hjéjh]”hŒContext”…”�”}”(hjëjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjçjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¹hj!iubj<)�”}”(hŒ May sleep.”h]”hŒ May sleep.”…”�”}”(hjÿjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M¸hj!iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ"pwm_apply_might_sleep (C function)”Œc.pwm_apply_might_sleep”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒQint pwm_apply_might_sleep (struct pwm_device *pwm, const struct pwm_state *state)”h]”hè)�”}”(hŒPint pwm_apply_might_sleep(struct pwm_device *pwm, const struct pwm_state *state)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj.kh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj*kh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MÕubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=kh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj*kh²hh³jh³Nh´Nubjs)�”}”(hŒ·**Parameters** ``struct pwm_device *pwm`` PWM device ``const struct pwm_state *state`` new state to apply **Return** 0 on success, or a negative errno **Context** May sleep.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj›lh]”hŒ Parameters”…”�”}”(hj�lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj™lubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MÙhj•lubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjºlh]”hŒstruct pwm_device *pwm”…”�”}”(hj¼lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj¸lubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M×hj´lubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hjÓlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÏlh´M×hjÐlubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj´lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÏlh´M×hj±lubj˜)�”}”(hŒ5``const struct pwm_state *state`` new state to apply ”h]”(jž)�”}”(hŒ!``const struct pwm_state *state``”h]”jB)�”}”(hjólh]”hŒconst struct pwm_state *state”…”�”}”(hjõlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjñlubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MØhjílubj¸)�”}”(hhh]”j<)�”}”(hŒnew state to apply”h]”hŒnew state to apply”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jmh´MØhj mubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjílubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jmh´MØhj±lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj•lubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj.mh]”hŒReturn”…”�”}”(hj0mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj,mubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MÚhj•lubj<)�”}”(hŒ!0 on success, or a negative errno”h]”hŒ!0 on success, or a negative errno”…”�”}”(hjDmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MÚhj•lubj<)�”}”(hŒ **Context**”h]”j})�”}”(hjUmh]”hŒContext”…”�”}”(hjWmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjSmubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MÜhj•lubj<)�”}”(hŒ May sleep.”h]”hŒ May sleep.”…”�”}”(hjkmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MÛhj•lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_apply_atomic (C function)”Œc.pwm_apply_atomic”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒLint pwm_apply_atomic (struct pwm_device *pwm, const struct pwm_state *state)”h]”hè)�”}”(hŒKint pwm_apply_atomic(struct pwm_device *pwm, const struct pwm_state *state)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjšmh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj–mh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©mh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj–mh²hh³j¨mh´Mubhî)�”}”(hŒpwm_apply_atomic”h]”hô)�”}”(hŒpwm_apply_atomic”h]”hŒpwm_apply_atomic”…”�”}”(hj»mh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj·mubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj–mh²hh³j¨mh´MubjÁ)�”}”(hŒ7(struct pwm_device *pwm, const struct pwm_state *state)”h]”(jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj×mh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjÓmubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjämh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÓmubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjõmh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjòmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j÷mŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj½msbŒc.pwm_apply_atomic”†”asbuh1hhjÓmubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÓmubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj#nh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÓmubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hj0nh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÓmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjÏmubjÇ)�”}”(hŒconst struct pwm_state *state”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjInh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjEnubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVnh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjEnubjÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjdnh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjEnubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqnh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjEnubh)�”}”(hhh]”hô)�”}”(hŒ pwm_state”h]”hŒ pwm_state”…”�”}”(hj‚nh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j„nŒmodname”NŒ classname”Njj )�”}”j]”jnŒc.pwm_apply_atomic”†”asbuh1hhjEnubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjEnubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj®nh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjEnubhô)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj»nh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjEnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjÏmubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj–mh²hh³j¨mh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj’mh²hh³j¨mh´Mubah}”(h]”j�mah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j¨mh´Mhj�mh²hubj#)�”}”(hhh]”j<)�”}”(hŒ~apply a new state to a PWM device from atomic context Not all PWM devices support this function, check with pwm_might_sleep().”h]”hŒ~apply a new state to a PWM device from atomic context Not all PWM devices support this function, check with pwm_might_sleep().”…”�”}”(hjånh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhjânh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj�mh²hh³j¨mh´Mubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jýnj7jýnj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒ°**Parameters** ``struct pwm_device *pwm`` PWM device ``const struct pwm_state *state`` new state to apply **Return** 0 on success, or a negative errno **Context** Any”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjoh]”hŒ Parameters”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhjoubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hj&oh]”hŒstruct pwm_device *pwm”…”�”}”(hj(oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj$ouba•–Þh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj oubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj?oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j;oh´Mhjh²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_get_state_hw (C function)”Œc.pwm_get_state_hw”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒFint pwm_get_state_hw (struct pwm_device *pwm, struct pwm_state *state)”h]”hè)�”}”(hŒEint pwm_get_state_hw(struct pwm_device *pwm, struct pwm_state *state)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjph²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjph²hh³jph´Mubhî)�”}”(hŒpwm_get_state_hw”h]”hô)�”}”(hŒpwm_get_state_hw”h]”hŒpwm_get_state_hw”…”�”}”(hj'ph²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj#pubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjph²hh³jph´MubjÁ)�”}”(hŒ1(struct pwm_device *pwm, struct pwm_state *state)”h]”(jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjCph²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj?pubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPph²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj?pubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjaph²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj^pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jcpŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj)psbŒc.pwm_get_state_hw”†”asbuh1hhj?pubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj?pubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj?pubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hjœph²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj?pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj;pubjÇ)�”}”(hŒstruct pwm_state *state”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_state”h]”hŒ pwm_state”…”�”}”(hjÓph²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÐpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jÕpŒmodname”NŒ classname”Njj )�”}”j]”j}pŒc.pwm_get_state_hw”†”asbuh1hhj±pubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñph²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj±pubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÿph²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj±pubhô)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj±pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj;pubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjph²hh³jph´Mubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjþoh²hh³jph´Mubah}”(h]”jùoah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jph´Mhjûoh²hubj#)�”}”(hhh]”j<)�”}”(hŒ'get the current PWM state from hardware”h]”hŒ'get the current PWM state from hardware”…”�”}”(hj6qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj3qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjûoh²hh³jph´Mubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jNqj7jNqj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXR**Parameters** ``struct pwm_device *pwm`` PWM device ``struct pwm_state *state`` state to fill with the current PWM state **Description** Similar to pwm_get_state() but reads the current PWM state from hardware instead of the requested state. **Return** 0 on success or a negative error code on failure. **Context** May sleep.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjXqh]”hŒ Parameters”…”�”}”(hjZqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjVqubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MhjRqubj“)�”}”(hhh]”(j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjwqh]”hŒstruct pwm_device *pwm”…”�”}”(hjyqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjuqubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhjqqubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŒqh´Mhj�qubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjqqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jŒqh´Mhjnqubj˜)�”}”(hŒE``struct pwm_state *state`` state to fill with the current PWM state ”h]”(jž)�”}”(hŒ``struct pwm_state *state``”h]”jB)�”}”(hj°qh]”hŒstruct pwm_state *state”…”�”}”(hj²qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj®qubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhjªqubj¸)�”}”(hhh]”j<)�”}”(hŒ(state to fill with the current PWM state”h]”hŒ(state to fill with the current PWM state”…”�”}”(hjÉqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÅqh´MhjÆqubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjªqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÅqh´Mhjnqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjRqubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjëqh]”hŒ Description”…”�”}”(hjíqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjéqubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MhjRqubj<)�”}”(hŒhSimilar to pwm_get_state() but reads the current PWM state from hardware instead of the requested state.”h]”hŒhSimilar to pwm_get_state() but reads the current PWM state from hardware instead of the requested state.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MhjRqubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjrh]”hŒReturn”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M hjRqubj<)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj(rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M!hjRqubj<)�”}”(hŒ **Context**”h]”j})�”}”(hj9rh]”hŒContext”…”�”}”(hj;rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj7rubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M#hjRqubj<)�”}”(hŒ May sleep.”h]”hŒ May sleep.”…”�”}”(hjOrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M"hjRqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_adjust_config (C function)”Œc.pwm_adjust_config”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ.int pwm_adjust_config (struct pwm_device *pwm)”h]”hè)�”}”(hŒ-int pwm_adjust_config(struct pwm_device *pwm)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hj~rh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjzrh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MKubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjzrh²hh³jŒrh´MKubhî)�”}”(hŒpwm_adjust_config”h]”hô)�”}”(hŒpwm_adjust_config”h]”hŒpwm_adjust_config”…”�”}”(hjŸrh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj›rubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjzrh²hh³jŒrh´MKubjÁ)�”}”(hŒ(struct pwm_device *pwm)”h]”jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjÙrh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÖrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jÛrŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jj¡rsbŒc.pwm_adjust_config”†”asbuh1hhj·rubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùrh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj·rubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj·rubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj·rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj³rubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjzrh²hh³jŒrh´MKubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjvrh²hh³jŒrh´MKubah}”(h]”jqrah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jŒrh´MKhjsrh²hubj#)�”}”(hhh]”j<)�”}”(hŒ2adjust the current PWM config to the PWM arguments”h]”hŒ2adjust the current PWM config to the PWM arguments”…”�”}”(hj>sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MKhj;sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjsrh²hh³jŒrh´MKubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jVsj7jVsj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXT**Parameters** ``struct pwm_device *pwm`` PWM device **Description** This function will adjust the PWM config to the PWM arguments provided by the DT or PWM lookup table. This is particularly useful to adapt the bootloader config to the Linux one. **Return** 0 on success or a negative error code on failure. **Context** May sleep.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj`sh]”hŒ Parameters”…”�”}”(hjbsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj^subah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MOhjZsubj“)�”}”(hhh]”j˜)�”}”(hŒ&``struct pwm_device *pwm`` PWM device ”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjsh]”hŒstruct pwm_device *pwm”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj}subah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MLhjysubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hj˜sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j”sh´MLhj•subah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjysubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j”sh´MLhjvsubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjZsubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjºsh]”hŒ Description”…”�”}”(hj¼sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj¸subah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MNhjZsubj<)�”}”(hŒ²This function will adjust the PWM config to the PWM arguments provided by the DT or PWM lookup table. This is particularly useful to adapt the bootloader config to the Linux one.”h]”hŒ²This function will adjust the PWM config to the PWM arguments provided by the DT or PWM lookup table. This is particularly useful to adapt the bootloader config to the Linux one.”…”�”}”(hjÐsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MMhjZsubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjásh]”hŒReturn”…”�”}”(hjãsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjßsubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MQhjZsubj<)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj÷sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MRhjZsubj<)�”}”(hŒ **Context**”h]”j})�”}”(hjth]”hŒContext”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MThjZsubj<)�”}”(hŒ May sleep.”h]”hŒ May sleep.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MShjZsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_get (C function)”Œ c.pwm_get”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒDstruct pwm_device * pwm_get (struct device *dev, const char *con_id)”h]”hè)�”}”(hŒBstruct pwm_device *pwm_get(struct device *dev, const char *con_id)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjMth²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjIth²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mjubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[th²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjIth²hh³jZth´Mjubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjlth²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjitubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jntŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒpwm_get”sbŒ c.pwm_get”†”asbuh1hhjIth²hh³jZth´Mjubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjIth²hh³jZth´Mjubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj›th²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjIth²hh³jZth´Mjubhî)�”}”(hŒpwm_get”h]”hô)�”}”(hjŠth]”hŒpwm_get”…”�”}”(hj¬th²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¨tubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjIth²hh³jZth´MjubjÁ)�”}”(hŒ((struct device *dev, const char *con_id)”h]”(jÇ)�”}”(hŒstruct device *dev”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjåth²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjâtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jçtŒmodname”NŒ classname”Njj )�”}”j]”jˆtŒ c.pwm_get”†”asbuh1hhjÃtubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÃtubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÃtubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÃtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj¿tubjÇ)�”}”(hŒconst char *con_id”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hj7uh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj3uubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDuh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj3uubj†)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjRuh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj3uubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`uh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj3uubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjnuh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj3uubhô)�”}”(hŒcon_id”h]”hŒcon_id”…”�”}”(hj{uh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj3uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj¿tubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjIth²hh³jZth´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjEth²hh³jZth´Mjubah}”(h]”j@tah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jZth´MjhjBth²hubj#)�”}”(hhh]”j<)�”}”(hŒ look up and request a PWM device”h]”hŒ look up and request a PWM device”…”�”}”(hj¥uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mjhj¢uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjBth²hh³jZth´Mjubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j½uj7j½uj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX**Parameters** ``struct device *dev`` device for PWM consumer ``const char *con_id`` consumer name **Description** Lookup is first attempted using DT. If the device was not instantiated from a device tree, a PWM chip and a relative index is looked up via a table supplied by board setup code (see pwm_add_table()). Once a PWM chip has been found the specified PWM device will be requested and is ready to be used. **Return** A pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjÇuh]”hŒ Parameters”…”�”}”(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/miscellaneous:47: ./drivers/pwm/core.c”h´MnhjÁuubj“)�”}”(hhh]”(j˜)�”}”(hŒ/``struct device *dev`` device for PWM consumer ”h]”(jž)�”}”(hŒ``struct device *dev``”h]”jB)�”}”(hjæuh]”hŒstruct device *dev”…”�”}”(hjèuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjäuubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mkhjàuubj¸)�”}”(hhh]”j<)�”}”(hŒdevice for PWM consumer”h]”hŒdevice for PWM consumer”…”�”}”(hjÿuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jûuh´Mkhjüuubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjàuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jûuh´MkhjÝuubj˜)�”}”(hŒ%``const char *con_id`` consumer name ”h]”(jž)�”}”(hŒ``const char *con_id``”h]”jB)�”}”(hjvh]”hŒconst char *con_id”…”�”}”(hj!vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mlhjvubj¸)�”}”(hhh]”j<)�”}”(hŒ consumer name”h]”hŒ consumer name”…”�”}”(hj8vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j4vh´Mlhj5vubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j4vh´MlhjÝuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjÁuubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjZvh]”hŒ Description”…”�”}”(hj\vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjXvubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MnhjÁuubj<)�”}”(hŒÇLookup is first attempted using DT. If the device was not instantiated from a device tree, a PWM chip and a relative index is looked up via a table supplied by board setup code (see pwm_add_table()).”h]”hŒÇLookup is first attempted using DT. If the device was not instantiated from a device tree, a PWM chip and a relative index is looked up via a table supplied by board setup code (see pwm_add_table()).”…”�”}”(hjpvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MmhjÁuubj<)�”}”(hŒbOnce a PWM chip has been found the specified PWM device will be requested and is ready to be used.”h]”hŒbOnce a PWM chip has been found the specified PWM device will be requested and is ready to be used.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MqhjÁuubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj�vh]”hŒReturn”…”�”}”(hj’vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjŽvubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MthjÁuubj<)�”}”(hŒTA pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”h]”hŒTA pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”…”�”}”(hj¦vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MuhjÁuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwm_put (C function)”Œ c.pwm_put”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ%void pwm_put (struct pwm_device *pwm)”h]”hè)�”}”(hŒ$void pwm_put(struct pwm_device *pwm)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÕvh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjÑvh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mýubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjävh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjÑvh²hh³jãvh´Mýubhî)�”}”(hŒpwm_put”h]”hô)�”}”(hŒpwm_put”h]”hŒpwm_put”…”�”}”(hjövh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjòvubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjÑvh²hh³jãvh´MýubjÁ)�”}”(hŒ(struct pwm_device *pwm)”h]”jÇ)�”}”(hŒstruct pwm_device *pwm”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjwubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjwubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hj0wh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj-wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j2wŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjøvsbŒ c.pwm_put”†”asbuh1hhjwubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPwh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjwubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj^wh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjwubhô)�”}”(hŒpwm”h]”hŒpwm”…”�”}”(hjkwh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj wubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhjÑvh²hh³jãvh´Mýubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhjÍvh²hh³jãvh´Mýubah}”(h]”jÈvah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jãvh´MýhjÊvh²hubj#)�”}”(hhh]”j<)�”}”(hŒrelease a PWM device”h]”hŒrelease a PWM device”…”�”}”(hj•wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mýhj’wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÊvh²hh³jãvh´Mýubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j­wj7j­wj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒ7**Parameters** ``struct pwm_device *pwm`` PWM device”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj·wh]”hŒ Parameters”…”�”}”(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/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj±wubj“)�”}”(hhh]”j˜)�”}”(hŒ%``struct pwm_device *pwm`` PWM device”h]”(jž)�”}”(hŒ``struct pwm_device *pwm``”h]”jB)�”}”(hjÖwh]”hŒstruct pwm_device *pwm”…”�”}”(hjØwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÔwubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MhjÐwubj¸)�”}”(hhh]”j<)�”}”(hŒ PWM device”h]”hŒ PWM device”…”�”}”(hjïwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mþhjìwubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÐwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jëwh´MhjÍwubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj±wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒdevm_pwm_get (C function)”Œc.devm_pwm_get”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒIstruct pwm_device * devm_pwm_get (struct device *dev, const char *con_id)”h]”hè)�”}”(hŒGstruct pwm_device *devm_pwm_get(struct device *dev, const char *con_id)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj0xh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj,xh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>xh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj,xh²hh³j=xh´Mubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjOxh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjLxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jQxŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒ devm_pwm_get”sbŒc.devm_pwm_get”†”asbuh1hhj,xh²hh³j=xh´Mubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpxh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj,xh²hh³j=xh´Mubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj~xh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj,xh²hh³j=xh´Mubhî)�”}”(hŒ devm_pwm_get”h]”hô)�”}”(hjmxh]”hŒ devm_pwm_get”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj‹xubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj,xh²hh³j=xh´MubjÁ)�”}”(hŒ((struct device *dev, const char *con_id)”h]”(jÇ)�”}”(hŒstruct device *dev”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÈxh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÅxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jÊxŒmodname”NŒ classname”Njj )�”}”j]”jkxŒc.devm_pwm_get”†”asbuh1hhj¦xubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¦xubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjôxh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj¦xubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj¦xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj¢xubjÇ)�”}”(hŒconst char *con_id”h]”(jÍ)�”}”(hjÉh]”hŒconst”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjyubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'yh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjyubj†)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj5yh²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjyubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCyh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjyubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjQyh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjyubhô)�”}”(hŒcon_id”h]”hŒcon_id”…”�”}”(hj^yh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj¢xubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj,xh²hh³j=xh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj(xh²hh³j=xh´Mubah}”(h]”j#xah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j=xh´Mhj%xh²hubj#)�”}”(hhh]”j<)�”}”(hŒresource managed pwm_get()”h]”hŒresource managed pwm_get()”…”�”}”(hjˆyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj…yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj%xh²hh³j=xh´Mubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j yj7j yj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXO**Parameters** ``struct device *dev`` device for PWM consumer ``const char *con_id`` consumer name **Description** This function performs like pwm_get() but the acquired PWM device will automatically be released on driver detach. **Return** A pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjªyh]”hŒ Parameters”…”�”}”(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/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj¤yubj“)�”}”(hhh]”(j˜)�”}”(hŒ/``struct device *dev`` device for PWM consumer ”h]”(jž)�”}”(hŒ``struct device *dev``”h]”jB)�”}”(hjÉyh]”hŒstruct device *dev”…”�”}”(hjËyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjÇyubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MhjÃyubj¸)�”}”(hhh]”j<)�”}”(hŒdevice for PWM consumer”h]”hŒdevice for PWM consumer”…”�”}”(hjâyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÞyh´Mhjßyubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÃyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÞyh´MhjÀyubj˜)�”}”(hŒ%``const char *con_id`` consumer name ”h]”(jž)�”}”(hŒ``const char *con_id``”h]”jB)�”}”(hjzh]”hŒconst char *con_id”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhjüyubj¸)�”}”(hhh]”j<)�”}”(hŒ consumer name”h]”hŒ consumer name”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jzh´Mhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjüyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jzh´MhjÀyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj¤yubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj=zh]”hŒ Description”…”�”}”(hj?zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj;zubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj¤yubj<)�”}”(hŒrThis function performs like pwm_get() but the acquired PWM device will automatically be released on driver detach.”h]”hŒrThis function performs like pwm_get() but the acquired PWM device will automatically be released on driver detach.”…”�”}”(hjSzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj¤yubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjdzh]”hŒReturn”…”�”}”(hjfzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjbzubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj¤yubj<)�”}”(hŒTA pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”h]”hŒTA pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”…”�”}”(hjzzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mhj¤yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ devm_fwnode_pwm_get (C function)”Œc.devm_fwnode_pwm_get”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒnstruct pwm_device * devm_fwnode_pwm_get (struct device *dev, struct fwnode_handle *fwnode, const char *con_id)”h]”hè)�”}”(hŒlstruct pwm_device *devm_fwnode_pwm_get(struct device *dev, struct fwnode_handle *fwnode, const char *con_id)”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj©zh²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj¥zh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M-ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·zh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¥zh²hh³j¶zh´M-ubh)�”}”(hhh]”hô)�”}”(hŒ pwm_device”h]”hŒ pwm_device”…”�”}”(hjÈzh²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÅzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jÊzŒmodname”NŒ classname”Njj )�”}”j]”j)�”}”jŒdevm_fwnode_pwm_get”sbŒc.devm_fwnode_pwm_get”†”asbuh1hhj¥zh²hh³j¶zh´M-ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjézh²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj¥zh²hh³j¶zh´M-ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj÷zh²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj¥zh²hh³j¶zh´M-ubhî)�”}”(hŒdevm_fwnode_pwm_get”h]”hô)�”}”(hjæzh]”hŒdevm_fwnode_pwm_get”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj¥zh²hh³j¶zh´M-ubjÁ)�”}”(hŒF(struct device *dev, struct fwnode_handle *fwnode, const char *con_id)”h]”(jÇ)�”}”(hŒstruct device *dev”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hj#{h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhj{ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0{h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj{ubh)�”}”(hhh]”hô)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjA{h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj>{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jC{Œmodname”NŒ classname”Njj )�”}”j]”jäzŒc.devm_fwnode_pwm_get”†”asbuh1hhj{ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_{h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj{ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjm{h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj{ubhô)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjz{h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj{ubjÇ)�”}”(hŒstruct fwnode_handle *fwnode”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒ fwnode_handle”h]”hŒ fwnode_handle”…”�”}”(hj±{h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj®{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j³{Œmodname”NŒ classname”Njj )�”}”j]”jäzŒc.devm_fwnode_pwm_get”†”asbuh1hhj�{ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ{h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj�{ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÝ{h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj�{ubhô)�”}”(hŒfwnode”h]”hŒfwnode”…”�”}”(hjê{h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj�{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj{ubjÇ)�”}”(hŒconst char *con_id”h]”(jÍ)�”}”(hjÉh]”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ÿ{ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj:|h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjÿ{ubhô)�”}”(hŒcon_id”h]”hŒcon_id”…”�”}”(hjG|h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjÿ{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj{ubeh}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj¥zh²hh³j¶zh´M-ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj¡zh²hh³j¶zh´M-ubah}”(h]”jœzah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j¶zh´M-hjžzh²hubj#)�”}”(hhh]”j<)�”}”(hŒ1request a resource managed PWM from firmware node”h]”hŒ1request a resource managed PWM from firmware node”…”�”}”(hjq|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M-hjn|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjžzh²hh³j¶zh´M-ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j‰|j7j‰|j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hX˜**Parameters** ``struct device *dev`` device for PWM consumer ``struct fwnode_handle *fwnode`` firmware node to get the PWM from ``const char *con_id`` consumer name **Description** Returns the PWM device parsed from the firmware node. See of_pwm_get() and acpi_pwm_get() for a detailed description. **Return** A pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj“|h]”hŒ Parameters”…”�”}”(hj•|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj‘|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M1hj�|ubj“)�”}”(hhh]”(j˜)�”}”(hŒ/``struct device *dev`` device for PWM consumer ”h]”(jž)�”}”(hŒ``struct device *dev``”h]”jB)�”}”(hj²|h]”hŒstruct device *dev”…”�”}”(hj´|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj°|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M.hj¬|ubj¸)�”}”(hhh]”j<)�”}”(hŒdevice for PWM consumer”h]”hŒdevice for PWM consumer”…”�”}”(hjË|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÇ|h´M.hjÈ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj¬|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jÇ|h´M.hj©|ubj˜)�”}”(hŒC``struct fwnode_handle *fwnode`` firmware node to get the PWM from ”h]”(jž)�”}”(hŒ ``struct fwnode_handle *fwnode``”h]”jB)�”}”(hjë|h]”hŒstruct fwnode_handle *fwnode”…”�”}”(hjí|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjé|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M/hjå|ubj¸)�”}”(hhh]”j<)�”}”(hŒ!firmware node to get the PWM from”h]”hŒ!firmware node to get the PWM from”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j}h´M/hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjå|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j}h´M/hj©|ubj˜)�”}”(hŒ%``const char *con_id`` consumer name ”h]”(jž)�”}”(hŒ``const char *con_id``”h]”jB)�”}”(hj$}h]”hŒconst char *con_id”…”�”}”(hj&}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj"}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M0hj}ubj¸)�”}”(hhh]”j<)�”}”(hŒ consumer name”h]”hŒ consumer name”…”�”}”(hj=}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j9}h´M0hj:}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³j9}h´M0hj©|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hj�|ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj_}h]”hŒ Description”…”�”}”(hja}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj]}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M2hj�|ubj<)�”}”(hŒuReturns the PWM device parsed from the firmware node. See of_pwm_get() and acpi_pwm_get() for a detailed description.”h]”hŒuReturns the PWM device parsed from the firmware node. See of_pwm_get() and acpi_pwm_get() for a detailed description.”…”�”}”(hju}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M1hj�|ubj<)�”}”(hŒ **Return**”h]”j})�”}”(hj†}h]”hŒReturn”…”�”}”(hjˆ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj„}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M4hj�|ubj<)�”}”(hŒTA pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”h]”hŒTA pointer to the requested PWM device or an ERR_PTR()-encoded error code on failure.”…”�”}”(hjœ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M5hj�|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒ__pwmchip_add (C function)”Œc.__pwmchip_add”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ?int __pwmchip_add (struct pwm_chip *chip, struct module *owner)”h]”hè)�”}”(hŒ>int __pwmchip_add(struct pwm_chip *chip, struct module *owner)”h]”(j†)�”}”(hŒint”h]”hŒint”…”�”}”(hjË}h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hjÇ}h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.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î)�”}”(hŒ __pwmchip_add”h]”hô)�”}”(hŒ __pwmchip_add”h]”hŒ __pwmchip_add”…”�”}”(hjì}h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjè}ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhjÇ}h²hh³jÙ}h´M‹ ubjÁ)�”}”(hŒ-(struct pwm_chip *chip, struct module *owner)”h]”(jÇ)�”}”(hŒstruct pwm_chip *chip”h]”(jÍ)�”}”(hjÐh]”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]”hô)�”}”(hŒpwm_chip”h]”hŒpwm_chip”…”�”}”(hj&~h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj#~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j(~Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjî}sbŒc.__pwmchip_add”†”asbuh1hhj~ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF~h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hj~ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjT~h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hj~ubhô)�”}”(hŒchip”h]”hŒchip”…”�”}”(hja~h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhj~ubjÇ)�”}”(hŒstruct module *owner”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(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~ubh)�”}”(hhh]”hô)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj˜~h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj•~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”jš~Œmodname”NŒ classname”Njj )�”}”j]”jB~Œc.__pwmchip_add”†”asbuh1hhjv~ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶~h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjv~ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hjÄ~h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjv~ubhô)�”}”(hŒowner”h]”hŒowner”…”�”}”(hjÑ~h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjv~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ˆuh1hçjjhjÃ}h²hh³jÙ}h´M‹ ubah}”(h]”j¾}ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³jÙ}h´M‹ hjÀ}h²hubj#)�”}”(hhh]”j<)�”}”(hŒregister a new PWM chip”h]”hŒregister a new PWM chip”…”�”}”(hjû~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M‹ hjø~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjÀ}h²hh³jÙ}h´M‹ ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6jj7jj8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hXH**Parameters** ``struct pwm_chip *chip`` the PWM chip to add ``struct module *owner`` reference to the module providing the chip. **Description** Register a new PWM chip. **owner** is supposed to be THIS_MODULE, use the pwmchip_add wrapper to do this right. **Return** 0 on success or a negative error code on failure.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M� hjubj“)�”}”(hhh]”(j˜)�”}”(hŒ.``struct pwm_chip *chip`` the PWM chip to add ”h]”(jž)�”}”(hŒ``struct pwm_chip *chip``”h]”jB)�”}”(hj<h]”hŒstruct pwm_chip *chip”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MŒ hj6ubj¸)�”}”(hhh]”j<)�”}”(hŒthe PWM chip to add”h]”hŒthe PWM chip to add”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jQh´MŒ hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jQh´MŒ hj3ubj˜)�”}”(hŒE``struct module *owner`` reference to the module providing the chip. ”h]”(jž)�”}”(hŒ``struct module *owner``”h]”jB)�”}”(hjuh]”hŒstruct module *owner”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M� hjoubj¸)�”}”(hhh]”j<)�”}”(hŒ+reference to the module providing the chip.”h]”hŒ+reference to the module providing the chip.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŠh´M� hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jŠh´M� hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j’hjubj<)�”}”(hŒ**Description**”h]”j})�”}”(hj°h]”hŒ Description”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M� hjubj<)�”}”(hŒoRegister a new PWM chip. **owner** is supposed to be THIS_MODULE, use the pwmchip_add wrapper to do this right.”h]”(hŒRegister a new PWM chip. ”…”�”}”(hjÆh²hh³Nh´Nubj})�”}”(hŒ **owner**”h]”hŒowner”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjÆubhŒM is supposed to be THIS_MODULE, use the pwmchip_add wrapper to do this right.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´MŽ hjubj<)�”}”(hŒ **Return**”h]”j})�”}”(hjéh]”hŒReturn”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M‘ hjubj<)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M’ hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´NubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hØŒpwmchip_remove (C function)”Œc.pwmchip_remove”hNt”auh1hËhjW>h²hh³Nh´NubhÝ)�”}”(hhh]”(hâ)�”}”(hŒ+void pwmchip_remove (struct pwm_chip *chip)”h]”hè)�”}”(hŒ*void pwmchip_remove(struct pwm_chip *chip)”h]”(j†)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.€h²hh³Nh´Nubah}”(h]”h ]”j’ah"]”h$]”h&]”uh1j…hj*€h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.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î)�”}”(hŒpwmchip_remove”h]”hô)�”}”(hŒpwmchip_remove”h]”hŒpwmchip_remove”…”�”}”(hjO€h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjK€ubah}”(h]”h ]”(jjeh"]”h$]”h&]”j j uh1híhj*€h²hh³j<€h´Mô ubjÁ)�”}”(hŒ(struct pwm_chip *chip)”h]”jÇ)�”}”(hŒstruct pwm_chip *chip”h]”(jÍ)�”}”(hjÐh]”hŒstruct”…”�”}”(hjk€h²hh³Nh´Nubah}”(h]”h ]”jÙah"]”h$]”h&]”uh1jÌhjg€ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx€h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjg€ubh)�”}”(hhh]”hô)�”}”(hŒpwm_chip”h]”hŒpwm_chip”…”�”}”(hj‰€h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhj†€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j0Œreftype”jŒ reftarget”j‹€Œmodname”NŒ classname”Njj )�”}”j]”j)�”}”jjQ€sbŒc.pwmchip_remove”†”asbuh1hhjg€ubj˜)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©€h²hh³Nh´Nubah}”(h]”h ]”j¤ah"]”h$]”h&]”uh1j—hjg€ubj%)�”}”(hj(h]”hŒ*”…”�”}”(hj·€h²hh³Nh´Nubah}”(h]”h ]”j1ah"]”h$]”h&]”uh1j$hjg€ubhô)�”}”(hŒchip”h]”hŒchip”…”�”}”(hjÄ€h²hh³Nh´Nubah}”(h]”h ]”hÿah"]”h$]”h&]”uh1hóhjg€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj j uh1jÆhjc€ubah}”(h]”h ]”h"]”h$]”h&]”j j uh1jÀhj*€h²hh³j<€h´Mô ubeh}”(h]”h ]”h"]”h$]”h&]”j j jˆuh1hçjjhj&€h²hh³j<€h´Mô ubah}”(h]”j!€ah ]”(jjeh"]”h$]”h&]”jˆj )j!huh1háh³j<€h´Mô hj#€h²hubj#)�”}”(hhh]”j<)�”}”(hŒremove a PWM chip”h]”hŒremove a PWM chip”…”�”}”(hjî€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mô hjë€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj#€h²hh³j<€h´Mô ubeh}”(h]”h ]”(j0Œfunction”eh"]”h$]”h&]”j5j0j6j�j7j�j8‰j9‰j:‰uh1hÜh²hhjW>h³Nh´Nubjs)�”}”(hŒh**Parameters** ``struct pwm_chip *chip`` the PWM chip to remove **Description** Removes a PWM chip.”h]”(j<)�”}”(hŒ**Parameters**”h]”j})�”}”(hj�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mø hj �ubj“)�”}”(hhh]”j˜)�”}”(hŒ1``struct pwm_chip *chip`` the PWM chip to remove ”h]”(jž)�”}”(hŒ``struct pwm_chip *chip``”h]”jB)�”}”(hj/�h]”hŒstruct pwm_chip *chip”…”�”}”(hj1�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj-�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mõ hj)�ubj¸)�”}”(hhh]”j<)�”}”(hŒthe PWM chip to remove”h]”hŒthe PWM chip to remove”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jD�h´Mõ hjE�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj)�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—h³jD�h´Mõ hj&�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj �ubj<)�”}”(hŒ**Description**”h]”j})�”}”(hjj�h]”hŒ Description”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j|hjh�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´M÷ hj �ubj<)�”}”(hŒRemoves a PWM chip.”h]”hŒRemoves a PWM chip.”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/miscellaneous:47: ./drivers/pwm/core.c”h´Mö hj �ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jrhjW>h²hh³Nh´Nubeh}”(h]”Œpulse-width-modulation-pwm”ah ]”h"]”Œpulse-width modulation (pwm)”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�7jŒ7jT>jQ>j›�j˜�uŒ nametypes”}”(j�7‰jT>‰j›�‰uh}”(jŒ7h·hÚhãjnjsjxj}j"j'j£j¨jÙjÞjÌ jÑ jø jý jjjjj+j0jRjWjüjjÂjÇjMjRj"j"j�#j¢#jX%j]%j**j/*j´+j¹+j`-je-j(/j-/j³0j¸0j>2jC2jÉ3jÎ3j 6j6jQ>j’7j¯7j´7j99j>9jÃ:jÈ:jÂ<jÇ<j˜�jW>jø>jý>j@j@j”Aj™Aj^CjcCjÇEjÌEj HjHj`JjeJjMMjRMjQjQjZRj_RjnUjsUjÝYjâYj^[jc[j»]jÀ]j<_jA_j—`jœ`jbjbjïdjôdjygj~gj!kj&kj�mj’mjùojþojqrjvrj@tjEtjÈvjÍvj#xj(xjœzj¡zj¾}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.