€•Œ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/usb/typec_bus”Œ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/usb/typec_bus”Œ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/usb/typec_bus”Œ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/usb/typec_bus”Œ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/usb/typec_bus”Œ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/usb/typec_bus”Œ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/usb/typec_bus”Œ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Œ)API for USB Type-C Alternate Mode drivers”h]”hŒ)API for USB Type-C Alternate Mode drivers”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hX1Alternate modes require communication with the partner using Vendor Defined Messages (VDM) as defined in USB Type-C and USB Power Delivery Specifications. The communication is SVID (Standard or Vendor ID) specific, i.e. specific for every alternate mode, so every alternate mode will need a custom driver.”h]”hX1Alternate modes require communication with the partner using Vendor Defined Messages (VDM) as defined in USB Type-C and USB Power Delivery Specifications. The communication is SVID (Standard or Vendor ID) specific, i.e. specific for every alternate mode, so every alternate mode will need a custom driver.”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhÝ)�”}”(hŒwUSB Type-C bus allows binding a driver to the discovered partner alternate modes by using the SVID and the mode number.”h]”hŒwUSB Type-C bus allows binding a driver to the discovered partner alternate modes by using the SVID and the mode number.”…”�”}”(hhìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hhËh²hubhÝ)�”}”(hXF:ref:`USB Type-C Connector Class ` provides a device for every alternate mode a port supports, and separate device for every alternate mode the partner supports. The drivers for the alternate modes are bound to the partner alternate mode devices, and the port alternate mode devices must be handled by the port drivers.”h]”(h)�”}”(hŒ):ref:`USB Type-C Connector Class `”h]”hŒinline”“”)�”}”(hjh]”hŒUSB Type-C Connector Class”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhhþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/usb/typec_bus”Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œtypec”uh1hh³hÊh´KhhúubhX provides a device for every alternate mode a port supports, and separate device for every alternate mode the partner supports. The drivers for the alternate modes are bound to the partner alternate mode devices, and the port alternate mode devices must be handled by the port drivers.”…”�”}”(hhúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhÝ)�”}”(hXWhen a new partner alternate mode device is registered, it is linked to the alternate mode device of the port that the partner is attached to, that has matching SVID and mode. Communication between the port driver and alternate mode driver will happen using the same API.”h]”hXWhen a new partner alternate mode device is registered, it is linked to the alternate mode device of the port that the partner is attached to, that has matching SVID and mode. Communication between the port driver and alternate mode driver will happen using the same API.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhÝ)�”}”(hX The port alternate mode devices are used as a proxy between the partner and the alternate mode drivers, so the port drivers are only expected to pass the SVID specific commands from the alternate mode drivers to the partner, and from the partners to the alternate mode drivers. No direct SVID specific communication is needed from the port drivers, but the port drivers need to provide the operation callbacks for the port alternate mode devices, just like the alternate mode drivers need to provide them for the partner alternate mode devices.”h]”hX The port alternate mode devices are used as a proxy between the partner and the alternate mode drivers, so the port drivers are only expected to pass the SVID specific commands from the alternate mode drivers to the partner, and from the partners to the alternate mode drivers. No direct SVID specific communication is needed from the port drivers, but the port drivers need to provide the operation callbacks for the port alternate mode devices, just like the alternate mode drivers need to provide them for the partner alternate mode devices.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒUsage:”h]”hŒUsage:”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjQh²hh³hÊh´K$ubh¶)�”}”(hhh]”(h»)�”}”(hŒGeneral”h]”hŒGeneral”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjbh²hh³hÊh´K'ubhÝ)�”}”(hX By default, the alternate mode drivers are responsible for entering the mode. It is also possible to leave the decision about entering the mode to the user space (See Documentation/ABI/testing/sysfs-class-typec). Port drivers should not enter any modes on their own.”h]”hX By default, the alternate mode drivers are responsible for entering the mode. It is also possible to leave the decision about entering the mode to the user space (See Documentation/ABI/testing/sysfs-class-typec). Port drivers should not enter any modes on their own.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K)hjbh²hubhÝ)�”}”(hX;``->vdm`` is the most important callback in the operation callbacks vector. It will be used to deliver all the SVID specific commands from the partner to the alternate mode driver, and vice versa in case of port drivers. The drivers send the SVID specific commands to each other using :c:func:`typec_altmode_vdm()`.”h]”(hŒliteral”“”)�”}”(hŒ ``->vdm``”h]”hŒ->vdm”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj�ubhX is the most important callback in the operation callbacks vector. It will be used to deliver all the SVID specific commands from the partner to the alternate mode driver, and vice versa in case of port drivers. The drivers send the SVID specific commands to each other using ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ:c:func:`typec_altmode_vdm()`”h]”j†)�”}”(hj›h]”hŒtypec_altmode_vdm()”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(jŒc”Œc-func”eh"]”h$]”h&]”uh1j…hj™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j§Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰j!Œtypec_altmode_vdm”uh1hh³hÊh´K.hj�ubhŒ.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K.hjbh²hubhÝ)�”}”(hX°If the communication with the partner using the SVID specific commands results in need to reconfigure the pins on the connector, the alternate mode driver needs to notify the bus using :c:func:`typec_altmode_notify()`. The driver passes the negotiated SVID specific pin configuration value to the function as parameter. The bus driver will then configure the mux behind the connector using that value as the state value for the mux.”h]”(hŒ¹If the communication with the partner using the SVID specific commands results in need to reconfigure the pins on the connector, the alternate mode driver needs to notify the bus using ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒ :c:func:`typec_altmode_notify()`”h]”j†)�”}”(hjÍh]”hŒtypec_altmode_notify()”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”(jj§Œc-func”eh"]”h$]”h&]”uh1j…hjËubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j§Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰j!Œtypec_altmode_notify”uh1hh³hÊh´K3hjÃubhŒ×. The driver passes the negotiated SVID specific pin configuration value to the function as parameter. The bus driver will then configure the mux behind the connector using that value as the state value for the mux.”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K3hjbh²hubhÝ)�”}”(hX*NOTE: The SVID specific pin configuration values must always start from ``TYPEC_STATE_MODAL``. USB Type-C specification defines two default states for the connector: ``TYPEC_STATE_USB`` and ``TYPEC_STATE_SAFE``. These values are reserved by the bus as the first possible values for the state. When the alternate mode is entered, the bus will put the connector into ``TYPEC_STATE_SAFE`` before sending Enter or Exit Mode command as defined in USB Type-C Specification, and also put the connector back to ``TYPEC_STATE_USB`` after the mode has been exited.”h]”(hŒHNOTE: The SVID specific pin configuration values must always start from ”…”�”}”(hjôh²hh³Nh´Nubj†)�”}”(hŒ``TYPEC_STATE_MODAL``”h]”hŒTYPEC_STATE_MODAL”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjôubhŒI. USB Type-C specification defines two default states for the connector: ”…”�”}”(hjôh²hh³Nh´Nubj†)�”}”(hŒ``TYPEC_STATE_USB``”h]”hŒTYPEC_STATE_USB”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjôubhŒ and ”…”�”}”(hjôh²hh³Nh´Nubj†)�”}”(hŒ``TYPEC_STATE_SAFE``”h]”hŒTYPEC_STATE_SAFE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjôubhŒ›. These values are reserved by the bus as the first possible values for the state. When the alternate mode is entered, the bus will put the connector into ”…”�”}”(hjôh²hh³Nh´Nubj†)�”}”(hŒ``TYPEC_STATE_SAFE``”h]”hŒTYPEC_STATE_SAFE”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjôubhŒv before sending Enter or Exit Mode command as defined in USB Type-C Specification, and also put the connector back to ”…”�”}”(hjôh²hh³Nh´Nubj†)�”}”(hŒ``TYPEC_STATE_USB``”h]”hŒTYPEC_STATE_USB”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjôubhŒ after the mode has been exited.”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K:hjbh²hubhÝ)�”}”(hŒ]An example of working definitions for SVID specific pin configurations would look like this::”h]”hŒ\An example of working definitions for SVID specific pin configurations would look like this:”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KChjbh²hubhŒ literal_block”“”)�”}”(hŒOenum { ALTMODEX_CONF_A = TYPEC_STATE_MODAL, ALTMODEX_CONF_B, ... };”h]”hŒOenum { ALTMODEX_CONF_A = TYPEC_STATE_MODAL, ALTMODEX_CONF_B, ... };”…”�”}”hjlsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jjh³hÊh´KFhjbh²hubhÝ)�”}”(hŒ7Helper macro ``TYPEC_MODAL_STATE()`` can also be used::”h]”(hŒ Helper macro ”…”�”}”(hj|h²hh³Nh´Nubj†)�”}”(hŒ``TYPEC_MODAL_STATE()``”h]”hŒTYPEC_MODAL_STATE()”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj|ubhŒ can also be used:”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KLhjbh²hubjk)�”}”(hŒ_#define ALTMODEX_CONF_A = TYPEC_MODAL_STATE(0); #define ALTMODEX_CONF_B = TYPEC_MODAL_STATE(1);”h]”hŒ_#define ALTMODEX_CONF_A = TYPEC_MODAL_STATE(0); #define ALTMODEX_CONF_B = TYPEC_MODAL_STATE(1);”…”�”}”hjœsbah}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jjh³hÊh´KNhjbh²hubeh}”(h]”Œgeneral”ah ]”h"]”Œgeneral”ah$]”h&]”uh1hµhjQh²hh³hÊh´K'ubh¶)�”}”(hhh]”(h»)�”}”(hŒCable plug alternate modes”h]”hŒCable plug alternate modes”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj²h²hh³hÊh´KRubhÝ)�”}”(hX•The alternate mode drivers are not bound to cable plug alternate mode devices, only to the partner alternate mode devices. If the alternate mode supports, or requires, a cable that responds to SOP Prime, and optionally SOP Double Prime messages, the driver for that alternate mode must request handle to the cable plug alternate modes using :c:func:`typec_altmode_get_plug()`, and take over their control.”h]”(hXUThe alternate mode drivers are not bound to cable plug alternate mode devices, only to the partner alternate mode devices. If the alternate mode supports, or requires, a cable that responds to SOP Prime, and optionally SOP Double Prime messages, the driver for that alternate mode must request handle to the cable plug alternate modes using ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒ":c:func:`typec_altmode_get_plug()`”h]”j†)�”}”(hjÍh]”hŒtypec_altmode_get_plug()”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”(jj§Œc-func”eh"]”h$]”h&]”uh1j…hjËubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j§Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰j!Œtypec_altmode_get_plug”uh1hh³hÊh´KThjÃubhŒ, and take over their control.”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KThj²h²hubeh}”(h]”Œcable-plug-alternate-modes”ah ]”h"]”Œcable plug alternate modes”ah$]”h&]”uh1hµhjQh²hh³hÊh´KRubeh}”(h]”Œusage”ah ]”h"]”Œusage:”ah$]”h&]”uh1hµhh·h²hh³hÊh´K$ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Driver API”h]”hŒ Driver API”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K\ubh¶)�”}”(hhh]”(h»)�”}”(hŒAlternate mode structs”h]”hŒAlternate mode structs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K_ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œtypec_altmode_ops (C struct)”Œc.typec_altmode_ops”hNt”auh1j&hjh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒtypec_altmode_ops”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct typec_altmode_ops”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jIhjEh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j[hjEh²hh³jZh´KubhŒ desc_name”“”)�”}”(hŒtypec_altmode_ops”h]”hŒ desc_sig_name”“”)�”}”(hjAh]”hŒtypec_altmode_ops”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jrhjnubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”jzj{uh1jlhjEh²hh³jZh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jzj{Œ add_permalink”ˆuh1jCŒsphinx_line_type”Œ declarator”hj?h²hh³jZh´Kubah}”(h]”j5ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j=h³jZh´Khj:h²hubhŒ desc_content”“”)�”}”(hhh]”hÝ)�”}”(hŒ)Alternate mode specific operations vector”h]”hŒ)Alternate mode specific operations vector”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´K@hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj:h²hh³jZh´Kubeh}”(h]”h ]”(j§Œstruct”eh"]”h$]”h&]”Œdomain”j§Œobjtype”j»Œdesctype”j»Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j8h²hhjh³j7h´NubhŒ container”“”)�”}”(hX6**Definition**:: struct typec_altmode_ops { int (*enter)(struct typec_altmode *altmode, u32 *vdo); int (*exit)(struct typec_altmode *altmode); void (*attention)(struct typec_altmode *altmode, u32 vdo); int (*vdm)(struct typec_altmode *altmode, const u32 hdr, const u32 *vdo, int cnt); int (*notify)(struct typec_altmode *altmode, unsigned long conf, void *data); int (*activate)(struct typec_altmode *altmode, int activate); }; **Members** ``enter`` Operations to be executed with Enter Mode Command ``exit`` Operations to be executed with Exit Mode Command ``attention`` Callback for Attention Command ``vdm`` Callback for SVID specific commands ``notify`` Communication channel for platform and the alternate mode ``activate`` User callback for Enter/Exit Mode”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËubhŒ:”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KDhjÇubjk)�”}”(hX²struct typec_altmode_ops { int (*enter)(struct typec_altmode *altmode, u32 *vdo); int (*exit)(struct typec_altmode *altmode); void (*attention)(struct typec_altmode *altmode, u32 vdo); int (*vdm)(struct typec_altmode *altmode, const u32 hdr, const u32 *vdo, int cnt); int (*notify)(struct typec_altmode *altmode, unsigned long conf, void *data); int (*activate)(struct typec_altmode *altmode, int activate); };”h]”hX²struct typec_altmode_ops { int (*enter)(struct typec_altmode *altmode, u32 *vdo); int (*exit)(struct typec_altmode *altmode); void (*attention)(struct typec_altmode *altmode, u32 vdo); int (*vdm)(struct typec_altmode *altmode, const u32 hdr, const u32 *vdo, int cnt); int (*notify)(struct typec_altmode *altmode, unsigned long conf, void *data); int (*activate)(struct typec_altmode *altmode, int activate); };”…”�”}”hjêsbah}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jjh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KFhjÇubhÝ)�”}”(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&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KOhjÇubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ<``enter`` Operations to be executed with Enter Mode Command ”h]”(hŒterm”“”)�”}”(hŒ ``enter``”h]”j†)�”}”(hj h]”hŒenter”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KBhjubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒ1Operations to be executed with Enter Mode Command”h]”hŒ1Operations to be executed with Enter Mode Command”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j5h´KBhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j5h´KBhjubj)�”}”(hŒ:``exit`` Operations to be executed with Exit Mode Command ”h]”(j)�”}”(hŒ``exit``”h]”j†)�”}”(hj[h]”hŒexit”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KChjUubj7)�”}”(hhh]”hÝ)�”}”(hŒ0Operations to be executed with Exit Mode Command”h]”hŒ0Operations to be executed with Exit Mode Command”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jph´KChjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jph´KChjubj)�”}”(hŒ-``attention`` Callback for Attention Command ”h]”(j)�”}”(hŒ ``attention``”h]”j†)�”}”(hj”h]”hŒ attention”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KDhjŽubj7)�”}”(hhh]”hÝ)�”}”(hŒCallback for Attention Command”h]”hŒCallback for Attention Command”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j©h´KDhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j©h´KDhjubj)�”}”(hŒ,``vdm`` Callback for SVID specific commands ”h]”(j)�”}”(hŒ``vdm``”h]”j†)�”}”(hjÍh]”hŒvdm”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KEhjÇubj7)�”}”(hhh]”hÝ)�”}”(hŒ#Callback for SVID specific commands”h]”hŒ#Callback for SVID specific commands”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jâh´KEhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâh´KEhjubj)�”}”(hŒE``notify`` Communication channel for platform and the alternate mode ”h]”(j)�”}”(hŒ ``notify``”h]”j†)�”}”(hjh]”hŒnotify”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KFhjubj7)�”}”(hhh]”hÝ)�”}”(hŒ9Communication channel for platform and the alternate mode”h]”hŒ9Communication channel for platform and the alternate mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´KFhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´KFhjubj)�”}”(hŒ.``activate`` User callback for Enter/Exit Mode”h]”(j)�”}”(hŒ ``activate``”h]”j†)�”}”(hj?h]”hŒactivate”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KFhj9ubj7)�”}”(hhh]”hÝ)�”}”(hŒ!User callback for Enter/Exit Mode”h]”hŒ!User callback for Enter/Exit Mode”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KGhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jTh´KFhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhjh²hh³j7h´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œtypec_altmode_driver (C struct)”Œc.typec_altmode_driver”hNt”auh1j&hjh²hh³j7h´Nubj9)�”}”(hhh]”(j>)�”}”(hŒtypec_altmode_driver”h]”jD)�”}”(hŒstruct typec_altmode_driver”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj•h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KMubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj•h²hh³j¦h´KMubjm)�”}”(hŒtypec_altmode_driver”h]”js)�”}”(hj“h]”hŒtypec_altmode_driver”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjµubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhj•h²hh³j¦h´KMubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hj‘h²hh³j¦h´KMubah}”(h]”jŒah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³j¦h´KMhjŽh²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ'USB Type-C alternate mode device driver”h]”hŒ'USB Type-C alternate mode device driver”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÊhjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjŽh²hh³j¦h´KMubeh}”(h]”h ]”(j§Œstruct”eh"]”h$]”h&]”j¿j§jÀjójÁjój‰jÉjĉuh1j8h²hhjh³j7h´NubjÆ)�”}”(hX©**Definition**:: struct typec_altmode_driver { const struct typec_device_id *id_table; int (*probe)(struct typec_altmode *altmode); void (*remove)(struct typec_altmode *altmode); struct device_driver driver; }; **Members** ``id_table`` Null terminated array of SVIDs ``probe`` Callback for device binding ``remove`` Callback for device unbinding ``driver`` Device driver model driver”h]”(hÝ)�”}”(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&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÎhj÷ubjk)�”}”(hŒÑstruct typec_altmode_driver { const struct typec_device_id *id_table; int (*probe)(struct typec_altmode *altmode); void (*remove)(struct typec_altmode *altmode); struct device_driver driver; };”h]”hŒÑstruct typec_altmode_driver { const struct typec_device_id *id_table; int (*probe)(struct typec_altmode *altmode); void (*remove)(struct typec_altmode *altmode); struct device_driver driver; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jjh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÐhj÷ubhÝ)�”}”(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&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´K×hj÷ubj)�”}”(hhh]”(j)�”}”(hŒ,``id_table`` Null terminated array of SVIDs ”h]”(j)�”}”(hŒ ``id_table``”h]”j†)�”}”(hjHh]”hŒid_table”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÌhjBubj7)�”}”(hhh]”hÝ)�”}”(hŒNull terminated array of SVIDs”h]”hŒNull terminated array of SVIDs”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j]h´KÌhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j]h´KÌhj?ubj)�”}”(hŒ&``probe`` Callback for device binding ”h]”(j)�”}”(hŒ ``probe``”h]”j†)�”}”(hj�h]”hŒprobe”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÍhj{ubj7)�”}”(hhh]”hÝ)�”}”(hŒCallback for device binding”h]”hŒCallback for device binding”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j–h´KÍhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j–h´KÍhj?ubj)�”}”(hŒ)``remove`` Callback for device unbinding ”h]”(j)�”}”(hŒ ``remove``”h]”j†)�”}”(hjºh]”hŒremove”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÎhj´ubj7)�”}”(hhh]”hÝ)�”}”(hŒCallback for device unbinding”h]”hŒCallback for device unbinding”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÏh´KÎhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÏh´KÎhj?ubj)�”}”(hŒ%``driver`` Device driver model driver”h]”(j)�”}”(hŒ ``driver``”h]”j†)�”}”(hjóh]”hŒdriver”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÎhjíubj7)�”}”(hhh]”hÝ)�”}”(hŒDevice driver model driver”h]”hŒDevice driver model driver”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´KÎhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhjh²hh³j7h´NubhÝ)�”}”(hŒ**Description**”h]”jÐ)�”}”(hj6h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÒhjh²hubhÝ)�”}”(hŒsThese drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”h]”hŒsThese drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:97: ./include/linux/usb/typec_altmode.h”h´KÏhjh²hubeh}”(h]”Œalternate-mode-structs”ah ]”h"]”Œalternate mode structs”ah$]”h&]”uh1hµhjh²hh³hÊh´K_ubh¶)�”}”(hhh]”(h»)�”}”(hŒ/Alternate mode driver registering/unregistering”h]”hŒ/Alternate mode driver registering/unregistering”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjch²hh³hÊh´Keubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ'typec_altmode_register_driver (C macro)”Œc.typec_altmode_register_driver”hNt”auh1j&hjch²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒtypec_altmode_register_driver”h]”jD)�”}”(hŒtypec_altmode_register_driver”h]”jm)�”}”(hŒtypec_altmode_register_driver”h]”js)�”}”(hj‡h]”hŒtypec_altmode_register_driver”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj�ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhj‰h²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´KÞubah}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hj…h²hh³j¤h´KÞubah}”(h]”j€ah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³j¤h´KÞhj‚h²hubjŸ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jžhj‚h²hh³j¤h´KÞubeh}”(h]”h ]”(j§Œmacro”eh"]”h$]”h&]”j¿j§jÀj½jÁj½j‰jÉjĉuh1j8h²hhjch³Nh´NubhÝ)�”}”(hŒ'``typec_altmode_register_driver (drv)``”h]”j†)�”}”(hjÃh]”hŒ#typec_altmode_register_driver (drv)”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kàhjch²hubhŒ block_quote”“”)�”}”(hŒ4registers a USB Type-C alternate mode device driver ”h]”hÝ)�”}”(hŒ3registers a USB Type-C alternate mode device driver”h]”hŒ3registers a USB Type-C alternate mode device driver”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´KÞhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jÙh³jíh´KÞhjch²hubjÆ)�”}”(hŒÆ**Parameters** ``drv`` pointer to struct typec_altmode_driver **Description** These drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kâhjôubj)�”}”(hhh]”j)�”}”(hŒ/``drv`` pointer to struct typec_altmode_driver ”h]”(j)�”}”(hŒ``drv``”h]”j†)�”}”(hjh]”hŒdrv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kàhjubj7)�”}”(hhh]”hÝ)�”}”(hŒ&pointer to struct typec_altmode_driver”h]”hŒ&pointer to struct typec_altmode_driver”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j.h´Kàhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j.h´Kàhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôubhÝ)�”}”(hŒ**Description**”h]”jÐ)�”}”(hjTh]”hŒ Description”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´KâhjôubhÝ)�”}”(hŒsThese drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”h]”hŒsThese drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Káhjôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhjch²hh³Nh´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ,typec_altmode_unregister_driver (C function)”Œ!c.typec_altmode_unregister_driver”hNt”auh1j&hjch²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒGvoid typec_altmode_unregister_driver (struct typec_altmode_driver *drv)”h]”jD)�”}”(hŒFvoid typec_altmode_unregister_driver(struct typec_altmode_driver *drv)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j™hj•h²hh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kêubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj•h²hh³jªh´Kêubjm)�”}”(hŒtypec_altmode_unregister_driver”h]”js)�”}”(hŒtypec_altmode_unregister_driver”h]”hŒtypec_altmode_unregister_driver”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj¹ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhj•h²hh³jªh´KêubhŒdesc_parameterlist”“”)�”}”(hŒ"(struct typec_altmode_driver *drv)”h]”hŒdesc_parameter”“”)�”}”(hŒ struct typec_altmode_driver *drv”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÙubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÙubh)�”}”(hhh]”js)�”}”(hŒtypec_altmode_driver”h]”hŒtypec_altmode_driver”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”Œ identifier”Œ reftarget”jýŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j Œ ASTIdentifier”“”)�”}”j j¿sbŒ!c.typec_altmode_unregister_driver”†”asbuh1hhjÙubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÙubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j1 hjÙubjs)�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÓubah}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhj•h²hh³jªh´Kêubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hj‘h²hh³jªh´Kêubah}”(h]”jŒah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jªh´KêhjŽh²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ5unregisters a USB Type-C alternate mode device driver”h]”hŒ5unregisters a USB Type-C alternate mode device driver”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kêhji h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjŽh²hh³jªh´Kêubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀj„ jÁj„ j‰jÉjĉuh1j8h²hhjch³Nh´NubjÆ)�”}”(hŒã**Parameters** ``struct typec_altmode_driver *drv`` pointer to struct typec_altmode_driver **Description** These drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kîhjˆ ubj)�”}”(hhh]”j)�”}”(hŒL``struct typec_altmode_driver *drv`` pointer to struct typec_altmode_driver ”h]”(j)�”}”(hŒ$``struct typec_altmode_driver *drv``”h]”j†)�”}”(hj­ h]”hŒ struct typec_altmode_driver *drv”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj« ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kìhj§ ubj7)�”}”(hhh]”hÝ)�”}”(hŒ&pointer to struct typec_altmode_driver”h]”hŒ&pointer to struct typec_altmode_driver”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´Kìhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj§ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´Kìhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ ubhÝ)�”}”(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&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kîhjˆ ubhÝ)�”}”(hŒsThese drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”h]”hŒsThese drivers will be bind to the partner alternate mode devices. They will handle all SVID specific communication.”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œk/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:103: ./include/linux/usb/typec_altmode.h”h´Kíhjˆ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhjch²hh³Nh´Nubeh}”(h]”Œ/alternate-mode-driver-registering-unregistering”ah ]”h"]”Œ/alternate mode driver registering/unregistering”ah$]”h&]”uh1hµhjh²hh³hÊh´Keubh¶)�”}”(hhh]”(h»)�”}”(hŒ Alternate mode driver operations”h]”hŒ Alternate mode driver operations”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´Kkubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ!typec_altmode_notify (C function)”Œc.typec_altmode_notify”hNt”auh1j&hj h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒUint typec_altmode_notify (struct typec_altmode *adev, unsigned long conf, void *data)”h]”jD)�”}”(hŒTint typec_altmode_notify(struct typec_altmode *adev, unsigned long conf, void *data)”h]”(jš)�”}”(hŒint”h]”hŒint”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjB h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KJubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjB h²hh³jT h´KJubjm)�”}”(hŒtypec_altmode_notify”h]”js)�”}”(hŒtypec_altmode_notify”h]”hŒtypec_altmode_notify”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjc ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhjB h²hh³jT h´KJubjÒ)�”}”(hŒ<(struct typec_altmode *adev, unsigned long conf, void *data)”h]”(jØ)�”}”(hŒstruct typec_altmode *adev”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj ubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjž ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”j£ Œmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j ji sbŒc.typec_altmode_notify”†”asbuh1hhj ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hj ubjs)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hj{ ubjØ)�”}”(hŒunsigned long conf”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 ]”jhah"]”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 ]”jhah"]”h$]”h&]”uh1j[hjñ ubjs)�”}”(hŒconf”h]”hŒconf”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjñ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hj{ ubjØ)�”}”(hŒ void *data”h]”(jš)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjB ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjB ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjB ubjs)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjB ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hj{ ubeh}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhjB h²hh³jT h´KJubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hj> h²hh³jT h´KJubah}”(h]”j9 ah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jT h´KJhj; h²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ6Communication between the OS and alternate mode driver”h]”hŒ6Communication between the OS and alternate mode driver”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KJhj– h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj; h²hh³jT h´KJubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀj± jÁj± j‰jÉjĉuh1j8h²hhj h³Nh´NubjÆ)�”}”(hXw**Parameters** ``struct typec_altmode *adev`` Handle to the alternate mode ``unsigned long conf`` Alternate mode specific configuration value ``void *data`` Alternate mode specific data **Description** The primary purpose for this function is to allow the alternate mode drivers to tell which pin configuration has been negotiated with the partner. That information will then be used for example to configure the muxes. Communication to the other direction is also possible, and low level device drivers can also send notifications to the alternate mode drivers. The actual communication will be specific for every SVID.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KNhjµ ubj)�”}”(hhh]”(j)�”}”(hŒ<``struct typec_altmode *adev`` Handle to the alternate mode ”h]”(j)�”}”(hŒ``struct typec_altmode *adev``”h]”j†)�”}”(hjÚ h]”hŒstruct typec_altmode *adev”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjØ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KKhjÔ ubj7)�”}”(hhh]”hÝ)�”}”(hŒHandle to the alternate mode”h]”hŒHandle to the alternate mode”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jï h´KKhjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jï h´KKhjÑ ubj)�”}”(hŒC``unsigned long conf`` Alternate mode specific configuration value ”h]”(j)�”}”(hŒ``unsigned long conf``”h]”j†)�”}”(hj h]”hŒunsigned long conf”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KLhj ubj7)�”}”(hhh]”hÝ)�”}”(hŒ+Alternate mode specific configuration value”h]”hŒ+Alternate mode specific configuration value”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j( h´KLhj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j( h´KLhjÑ ubj)�”}”(hŒ,``void *data`` Alternate mode specific data ”h]”(j)�”}”(hŒ``void *data``”h]”j†)�”}”(hjL h]”hŒ void *data”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjJ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KMhjF ubj7)�”}”(hhh]”hÝ)�”}”(hŒAlternate mode specific data”h]”hŒAlternate mode specific data”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ja h´KMhjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ja h´KMhjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ ubhÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KOhjµ ubhÝ)�”}”(hX¢The primary purpose for this function is to allow the alternate mode drivers to tell which pin configuration has been negotiated with the partner. That information will then be used for example to configure the muxes. Communication to the other direction is also possible, and low level device drivers can also send notifications to the alternate mode drivers. The actual communication will be specific for every SVID.”h]”hX¢The primary purpose for this function is to allow the alternate mode drivers to tell which pin configuration has been negotiated with the partner. That information will then be used for example to configure the muxes. Communication to the other direction is also possible, and low level device drivers can also send notifications to the alternate mode drivers. The actual communication will be specific for every SVID.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KNhjµ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj h²hh³Nh´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ typec_altmode_enter (C function)”Œc.typec_altmode_enter”hNt”auh1j&hj h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒ>int typec_altmode_enter (struct typec_altmode *adev, u32 *vdo)”h]”jD)�”}”(hŒ=int typec_altmode_enter(struct typec_altmode *adev, u32 *vdo)”h]”(jš)�”}”(hŒint”h]”hŒint”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjÈ h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´Kuubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÈ h²hh³jÚ h´Kuubjm)�”}”(hŒtypec_altmode_enter”h]”js)�”}”(hŒtypec_altmode_enter”h]”hŒtypec_altmode_enter”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjé ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhjÈ h²hh³jÚ h´KuubjÒ)�”}”(hŒ&(struct typec_altmode *adev, u32 *vdo)”h]”(jØ)�”}”(hŒstruct typec_altmode *adev”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj ubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj$ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”j) Œmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j jï sbŒc.typec_altmode_enter”†”asbuh1hhj ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hj ubjs)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hj ubjØ)�”}”(hŒu32 *vdo”h]”(h)�”}”(hhh]”js)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj{ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”j€ Œmodname”NŒ classname”Nj j )�”}”j ]”jC Œc.typec_altmode_enter”†”asbuh1hhjw ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjw ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjw ubjs)�”}”(hŒvdo”h]”hŒvdo”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjw ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hj ubeh}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhjÈ h²hh³jÚ h´Kuubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hjÄ h²hh³jÚ h´Kuubah}”(h]”j¿ ah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jÚ h´KuhjÁ h²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ Enter Mode”h]”hŒ Enter Mode”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KuhjÞ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjÁ h²hh³jÚ h´Kuubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀjù jÁjù j‰jÉjĉuh1j8h²hhj h³Nh´NubjÆ)�”}”(hXt**Parameters** ``struct typec_altmode *adev`` The alternate mode ``u32 *vdo`` VDO for the Enter Mode command **Description** The alternate mode drivers use this function to enter mode. The port drivers use this to inform the alternate mode drivers that the partner has initiated Enter Mode command. If the alternate mode does not require VDO, **vdo** must be NULL.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jÐ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´Kyhjý ubj)�”}”(hhh]”(j)�”}”(hŒ2``struct typec_altmode *adev`` The alternate mode ”h]”(j)�”}”(hŒ``struct typec_altmode *adev``”h]”j†)�”}”(hj"h]”hŒstruct typec_altmode *adev”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´Kvhjubj7)�”}”(hhh]”hÝ)�”}”(hŒThe alternate mode”h]”hŒThe alternate mode”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7h´Kvhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j7h´Kvhjubj)�”}”(hŒ,``u32 *vdo`` VDO for the Enter Mode command ”h]”(j)�”}”(hŒ ``u32 *vdo``”h]”j†)�”}”(hj[h]”hŒu32 *vdo”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KwhjUubj7)�”}”(hhh]”hÝ)�”}”(hŒVDO for the Enter Mode command”h]”hŒVDO for the Enter Mode command”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jph´Kwhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jph´Kwhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjý ubhÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´Kyhjý ubhÝ)�”}”(hŒïThe alternate mode drivers use this function to enter mode. The port drivers use this to inform the alternate mode drivers that the partner has initiated Enter Mode command. If the alternate mode does not require VDO, **vdo** must be NULL.”h]”(hŒÚThe alternate mode drivers use this function to enter mode. The port drivers use this to inform the alternate mode drivers that the partner has initiated Enter Mode command. If the alternate mode does not require VDO, ”…”�”}”(hj¬h²hh³Nh´NubjÐ)�”}”(hŒ**vdo**”h]”hŒvdo”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬ubhŒ must be NULL.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´Kxhjý ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj h²hh³Nh´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œtypec_altmode_exit (C function)”Œc.typec_altmode_exit”hNt”auh1j&hj h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒ3int typec_altmode_exit (struct typec_altmode *adev)”h]”jD)�”}”(hŒ2int typec_altmode_exit(struct typec_altmode *adev)”h]”(jš)�”}”(hŒint”h]”hŒint”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjéh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K˜ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjéh²hh³jûh´K˜ubjm)�”}”(hŒtypec_altmode_exit”h]”js)�”}”(hŒtypec_altmode_exit”h]”hŒtypec_altmode_exit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhjéh²hh³jûh´K˜ubjÒ)�”}”(hŒ(struct typec_altmode *adev)”h]”jØ)�”}”(hŒstruct typec_altmode *adev”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj&ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj&ubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jJŒmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j jsbŒc.typec_altmode_exit”†”asbuh1hhj&ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj&ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hj&ubjs)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hj"ubah}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhjéh²hh³jûh´K˜ubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hjåh²hh³jûh´K˜ubah}”(h]”jàah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jûh´K˜hjâh²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ Exit Mode”h]”hŒ Exit Mode”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K˜hjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjâh²hh³jûh´K˜ubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀjÅjÁjÅj‰jÉjĉuh1j8h²hhj h³Nh´NubjÆ)�”}”(hŒŽ**Parameters** ``struct typec_altmode *adev`` The alternate mode **Description** The partner of **adev** has initiated Exit Mode command.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KœhjÉubj)�”}”(hhh]”j)�”}”(hŒ2``struct typec_altmode *adev`` The alternate mode ”h]”(j)�”}”(hŒ``struct typec_altmode *adev``”h]”j†)�”}”(hjîh]”hŒstruct typec_altmode *adev”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K™hjèubj7)�”}”(hhh]”hÝ)�”}”(hŒThe alternate mode”h]”hŒThe alternate mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´K™hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K™hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubhÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K›hjÉubhÝ)�”}”(hŒ8The partner of **adev** has initiated Exit Mode command.”h]”(hŒThe partner of ”…”�”}”(hj?h²hh³Nh´NubjÐ)�”}”(hŒ**adev**”h]”hŒadev”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?ubhŒ! has initiated Exit Mode command.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KšhjÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj h²hh³Nh´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ$typec_altmode_attention (C function)”Œc.typec_altmode_attention”hNt”auh1j&hj h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒAint typec_altmode_attention (struct typec_altmode *adev, u32 vdo)”h]”jD)�”}”(hŒ@int typec_altmode_attention(struct typec_altmode *adev, u32 vdo)”h]”(jš)�”}”(hŒint”h]”hŒint”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hj|h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K´ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj|h²hh³jŽh´K´ubjm)�”}”(hŒtypec_altmode_attention”h]”js)�”}”(hŒtypec_altmode_attention”h]”hŒtypec_altmode_attention”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj�ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhj|h²hh³jŽh´K´ubjÒ)�”}”(hŒ%(struct typec_altmode *adev, u32 vdo)”h]”(jØ)�”}”(hŒstruct typec_altmode *adev”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj¹ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj¹ubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jÝŒmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j j£sbŒc.typec_altmode_attention”†”asbuh1hhj¹ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj¹ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hj¹ubjs)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjµubjØ)�”}”(hŒu32 vdo”h]”(h)�”}”(hhh]”js)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”j4Œmodname”NŒ classname”Nj j )�”}”j ]”j÷Œc.typec_altmode_attention”†”asbuh1hhj+ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj+ubjs)�”}”(hŒvdo”h]”hŒvdo”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjµubeh}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhj|h²hh³jŽh´K´ubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hjxh²hh³jŽh´K´ubah}”(h]”jsah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jŽh´K´hjuh²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒAttention command”h]”hŒAttention command”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K´hj…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjuh²hh³jŽh´K´ubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀj jÁj j‰jÉjĉuh1j8h²hhj h³Nh´NubjÆ)�”}”(hŒ¼**Parameters** ``struct typec_altmode *adev`` The alternate mode ``u32 vdo`` VDO for the Attention command **Description** Notifies the partner of **adev** about Attention command.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K¸hj¤ubj)�”}”(hhh]”(j)�”}”(hŒ2``struct typec_altmode *adev`` The alternate mode ”h]”(j)�”}”(hŒ``struct typec_altmode *adev``”h]”j†)�”}”(hjÉh]”hŒstruct typec_altmode *adev”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KµhjÃubj7)�”}”(hhh]”hÝ)�”}”(hŒThe alternate mode”h]”hŒThe alternate mode”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÞh´Kµhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÞh´KµhjÀubj)�”}”(hŒ*``u32 vdo`` VDO for the Attention command ”h]”(j)�”}”(hŒ ``u32 vdo``”h]”j†)�”}”(hjh]”hŒu32 vdo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K¶hjüubj7)�”}”(hhh]”hÝ)�”}”(hŒVDO for the Attention command”h]”hŒVDO for the Attention command”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´K¶hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K¶hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubhÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K¸hj¤ubhÝ)�”}”(hŒ9Notifies the partner of **adev** about Attention command.”h]”(hŒNotifies the partner of ”…”�”}”(hjSh²hh³Nh´NubjÐ)�”}”(hŒ**adev**”h]”hŒadev”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjSubhŒ about Attention command.”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´K·hj¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj h²hh³Nh´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œtypec_altmode_vdm (C function)”Œc.typec_altmode_vdm”hNt”auh1j&hj h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒ_int typec_altmode_vdm (struct typec_altmode *adev, const u32 header, const u32 *vdo, int count)”h]”jD)�”}”(hŒ^int typec_altmode_vdm(struct typec_altmode *adev, const u32 header, const u32 *vdo, int count)”h]”(jš)�”}”(hŒint”h]”hŒint”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hj�h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÌubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jha•~h"]”h$]”h&]”uh1j[hj�h²hh³j¢h´KÌubjm)�”}”(hŒtypec_altmode_vdm”h]”js)�”}”(hŒtypec_altmode_vdm”h]”hŒtypec_altmode_vdm”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj±ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhj�h²hh³j¢h´KÌubjÒ)�”}”(hŒI(struct typec_altmode *adev, const u32 header, const u32 *vdo, int count)”h]”(jØ)�”}”(hŒstruct typec_altmode *adev”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÍubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÍubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jñŒmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j j·sbŒc.typec_altmode_vdm”†”asbuh1hhjÍubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÍubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjÍubjs)�”}”(hŒadev”h]”hŒadev”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÉubjØ)�”}”(hŒconst u32 header”h]”(jJ)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj?ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj?ubh)�”}”(hhh]”js)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jdŒmodname”NŒ classname”Nj j )�”}”j ]”j Œc.typec_altmode_vdm”†”asbuh1hhj?ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj?ubjs)�”}”(hŒheader”h]”hŒheader”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÉubjØ)�”}”(hŒconst u32 *vdo”h]”(jJ)�”}”(hjEh]”hŒconst”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj£ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj£ubh)�”}”(hhh]”js)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jÇŒmodname”NŒ classname”Nj j )�”}”j ]”j Œc.typec_altmode_vdm”†”asbuh1hhj£ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj£ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hj£ubjs)�”}”(hŒvdo”h]”hŒvdo”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÉubjØ)�”}”(hŒ int count”h]”(jš)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hjubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjubjs)�”}”(hŒcount”h]”hŒcount”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÉubeh}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhj�h²hh³j¢h´KÌubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hjŒh²hh³j¢h´KÌubah}”(h]”j‡ah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³j¢h´KÌhj‰h²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ1Send Vendor Defined Messages (VDM) to the partner”h]”hŒ1Send Vendor Defined Messages (VDM) to the partner”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÌhjZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj‰h²hh³j¢h´KÌubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀjujÁjuj‰jÉjĉuh1j8h²hhj h³Nh´NubjÆ)�”}”(hX®**Parameters** ``struct typec_altmode *adev`` Alternate mode handle ``const u32 header`` VDM Header ``const u32 *vdo`` Array of Vendor Defined Data Objects ``int count`` Number of Data Objects **Description** The alternate mode drivers use this function for SVID specific communication with the partner. The port drivers use it to deliver the Structured VDMs received from the partners to the alternate mode drivers.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”jÐ)�”}”(hjh]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÐhjyubj)�”}”(hhh]”(j)�”}”(hŒ5``struct typec_altmode *adev`` Alternate mode handle ”h]”(j)�”}”(hŒ``struct typec_altmode *adev``”h]”j†)�”}”(hjžh]”hŒstruct typec_altmode *adev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÍhj˜ubj7)�”}”(hhh]”hÝ)�”}”(hŒAlternate mode handle”h]”hŒAlternate mode handle”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j³h´KÍhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j³h´KÍhj•ubj)�”}”(hŒ ``const u32 header`` VDM Header ”h]”(j)�”}”(hŒ``const u32 header``”h]”j†)�”}”(hj×h]”hŒconst u32 header”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÎhjÑubj7)�”}”(hhh]”hÝ)�”}”(hŒ VDM Header”h]”hŒ VDM Header”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jìh´KÎhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jìh´KÎhj•ubj)�”}”(hŒ8``const u32 *vdo`` Array of Vendor Defined Data Objects ”h]”(j)�”}”(hŒ``const u32 *vdo``”h]”j†)�”}”(hjh]”hŒconst u32 *vdo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÏhj ubj7)�”}”(hhh]”hÝ)�”}”(hŒ$Array of Vendor Defined Data Objects”h]”hŒ$Array of Vendor Defined Data Objects”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j%h´KÏhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%h´KÏhj•ubj)�”}”(hŒ%``int count`` Number of Data Objects ”h]”(j)�”}”(hŒ ``int count``”h]”j†)�”}”(hjIh]”hŒ int count”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÐhjCubj7)�”}”(hhh]”hÝ)�”}”(hŒNumber of Data Objects”h]”hŒNumber of Data Objects”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^h´KÐhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j^h´KÐhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubhÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÒhjyubhÝ)�”}”(hŒÏThe alternate mode drivers use this function for SVID specific communication with the partner. The port drivers use it to deliver the Structured VDMs received from the partners to the alternate mode drivers.”h]”hŒÏThe alternate mode drivers use this function for SVID specific communication with the partner. The port drivers use it to deliver the Structured VDMs received from the partners to the alternate mode drivers.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:109: ./drivers/usb/typec/bus.c”h´KÑhjyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj h²hh³Nh´Nubeh}”(h]”Œ alternate-mode-driver-operations”ah ]”h"]”Œ alternate mode driver operations”ah$]”h&]”uh1hµhjh²hh³hÊh´Kkubh¶)�”}”(hhh]”(h»)�”}”(hŒAPI for the port drivers”h]”hŒAPI for the port drivers”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¸h²hh³hÊh´Kqubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ typec_match_altmode (C function)”Œc.typec_match_altmode”hNt”auh1j&hj¸h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒistruct typec_altmode * typec_match_altmode (struct typec_altmode **altmodes, size_t n, u16 svid, u8 mode)”h]”jD)�”}”(hŒgstruct typec_altmode *typec_match_altmode(struct typec_altmode **altmodes, size_t n, u16 svid, u8 mode)”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÞh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´M˜ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÞh²hh³jïh´M˜ubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jŒmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j Œtypec_match_altmode”sbŒc.typec_match_altmode”†”asbuh1hhjÞh²hh³jïh´M˜ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÞh²hh³jïh´M˜ubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjÞh²hh³jïh´M˜ubjm)�”}”(hŒtypec_match_altmode”h]”js)�”}”(hjh]”hŒtypec_match_altmode”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj=ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhjÞh²hh³jïh´M˜ubjÒ)�”}”(hŒ>(struct typec_altmode **altmodes, size_t n, u16 svid, u8 mode)”h]”(jØ)�”}”(hŒstruct typec_altmode **altmodes”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjXubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjXubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”j|Œmodname”NŒ classname”Nj j )�”}”j ]”jŒc.typec_match_altmode”†”asbuh1hhjXubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjXubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjXubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjXubjs)�”}”(hŒaltmodes”h]”hŒaltmodes”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjTubjØ)�”}”(hŒsize_t n”h]”(h)�”}”(hhh]”js)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jÞŒmodname”NŒ classname”Nj j )�”}”j ]”jŒc.typec_match_altmode”†”asbuh1hhjÕubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÕubjs)�”}”(hj~h]”hŒn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjTubjØ)�”}”(hŒu16 svid”h]”(h)�”}”(hhh]”js)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”j%Œmodname”NŒ classname”Nj j )�”}”j ]”jŒc.typec_match_altmode”†”asbuh1hhjubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjubjs)�”}”(hŒsvid”h]”hŒsvid”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjTubjØ)�”}”(hŒu8 mode”h]”(h)�”}”(hhh]”js)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jmŒmodname”NŒ classname”Nj j )�”}”j ]”jŒc.typec_match_altmode”†”asbuh1hhjdubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjdubjs)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjTubeh}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhjÞh²hh³jïh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hjÚh²hh³jïh´M˜ubah}”(h]”jÕah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jïh´M˜hj×h²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ2Match SVID and mode to an array of alternate modes”h]”hŒ2Match SVID and mode to an array of alternate modes”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´M˜hj¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj×h²hh³jïh´M˜ubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀjÙjÁjÙj‰jÉjĉuh1j8h²hhj¸h³Nh´NubjÆ)�”}”(hXi**Parameters** ``struct typec_altmode **altmodes`` Array of alternate modes ``size_t n`` Number of elements in the array, or -1 for NULL terminated arrays ``u16 svid`` Standard or Vendor ID to match with ``u8 mode`` Mode to match with **Description** Return pointer to an alternate mode with SVID matching **svid**, or NULL when no match is found.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´MœhjÝubj)�”}”(hhh]”(j)�”}”(hŒ=``struct typec_altmode **altmodes`` Array of alternate modes ”h]”(j)�”}”(hŒ#``struct typec_altmode **altmodes``”h]”j†)�”}”(hjh]”hŒstruct typec_altmode **altmodes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´M™hjüubj7)�”}”(hhh]”hÝ)�”}”(hŒArray of alternate modes”h]”hŒArray of alternate modes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M™hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´M™hjùubj)�”}”(hŒO``size_t n`` Number of elements in the array, or -1 for NULL terminated arrays ”h]”(j)�”}”(hŒ ``size_t n``”h]”j†)�”}”(hj;h]”hŒsize_t n”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´Mšhj5ubj7)�”}”(hhh]”hÝ)�”}”(hŒANumber of elements in the array, or -1 for NULL terminated arrays”h]”hŒANumber of elements in the array, or -1 for NULL terminated arrays”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPh´MšhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jPh´Mšhjùubj)�”}”(hŒ1``u16 svid`` Standard or Vendor ID to match with ”h]”(j)�”}”(hŒ ``u16 svid``”h]”j†)�”}”(hjth]”hŒu16 svid”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´M›hjnubj7)�”}”(hhh]”hÝ)�”}”(hŒ#Standard or Vendor ID to match with”h]”hŒ#Standard or Vendor ID to match with”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‰h´M›hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‰h´M›hjùubj)�”}”(hŒ``u8 mode`` Mode to match with ”h]”(j)�”}”(hŒ ``u8 mode``”h]”j†)�”}”(hj­h]”hŒu8 mode”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´Mœhj§ubj7)�”}”(hhh]”hÝ)�”}”(hŒMode to match with”h]”hŒMode to match with”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÂh´MœhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÂh´Mœhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubhÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´MžhjÝubhÝ)�”}”(hŒ`Return pointer to an alternate mode with SVID matching **svid**, or NULL when no match is found.”h]”(hŒ7Return pointer to an alternate mode with SVID matching ”…”�”}”(hjþh²hh³Nh´NubjÐ)�”}”(hŒ**svid**”h]”hŒsvid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþubhŒ!, or NULL when no match is found.”…”�”}”(hjþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:115: ./drivers/usb/typec/bus.c”h´M�hjÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj¸h²hh³Nh´Nubeh}”(h]”Œapi-for-the-port-drivers”ah ]”h"]”Œapi for the port drivers”ah$]”h&]”uh1hµhjh²hh³hÊh´Kqubh¶)�”}”(hhh]”(h»)�”}”(hŒCable Plug operations”h]”hŒCable Plug operations”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj.h²hh³hÊh´Kwubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ#typec_altmode_get_plug (C function)”Œc.typec_altmode_get_plug”hNt”auh1j&hj.h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒgstruct typec_altmode * typec_altmode_get_plug (struct typec_altmode *adev, enum typec_plug_index index)”h]”jD)�”}”(hŒestruct typec_altmode *typec_altmode_get_plug(struct typec_altmode *adev, enum typec_plug_index index)”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjTh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´Maubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjTh²hh³jeh´Maubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jyŒmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j Œtypec_altmode_get_plug”sbŒc.typec_altmode_get_plug”†”asbuh1hhjTh²hh³jeh´Maubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjTh²hh³jeh´Maubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjTh²hh³jeh´Maubjm)�”}”(hŒtypec_altmode_get_plug”h]”js)�”}”(hj•h]”hŒtypec_altmode_get_plug”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj³ubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhjTh²hh³jeh´MaubjÒ)�”}”(hŒ9(struct typec_altmode *adev, enum typec_plug_index index)”h]”(jØ)�”}”(hŒstruct typec_altmode *adev”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÎubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÎubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jòŒmodname”NŒ classname”Nj j )�”}”j ]”j“Œc.typec_altmode_get_plug”†”asbuh1hhjÎubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjÎubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjÎubjs)�”}”(hŒadev”h]”hŒadev”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÊubjØ)�”}”(hŒenum typec_plug_index index”h]”(jJ)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj>ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj>ubh)�”}”(hhh]”js)�”}”(hŒtypec_plug_index”h]”hŒtypec_plug_index”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jcŒmodname”NŒ classname”Nj j )�”}”j ]”j“Œc.typec_altmode_get_plug”†”asbuh1hhj>ubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj>ubjs)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjÊubeh}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhjTh²hh³jeh´Maubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hjPh²hh³jeh´Maubah}”(h]”jKah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³jeh´MahjMh²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒFind cable plug alternate mode”h]”hŒFind cable plug alternate mode”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´Mahj´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjMh²hh³jeh´Maubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀjÏjÁjÏj‰jÉjĉuh1j8h²hhj.h³Nh´NubjÆ)�”}”(hX"**Parameters** ``struct typec_altmode *adev`` Handle to partner alternate mode ``enum typec_plug_index index`` Cable plug index **Description** Increment reference count for cable plug alternate mode device. Returns handle to the cable plug alternate mode, or NULL if none is found.”h]”(hÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´MehjÓubj)�”}”(hhh]”(j)�”}”(hŒ@``struct typec_altmode *adev`` Handle to partner alternate mode ”h]”(j)�”}”(hŒ``struct typec_altmode *adev``”h]”j†)�”}”(hjøh]”hŒstruct typec_altmode *adev”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´Mbhjòubj7)�”}”(hhh]”hÝ)�”}”(hŒ Handle to partner alternate mode”h]”hŒ Handle to partner alternate mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´Mbhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´Mbhjïubj)�”}”(hŒ1``enum typec_plug_index index`` Cable plug index ”h]”(j)�”}”(hŒ``enum typec_plug_index index``”h]”j†)�”}”(hj1h]”hŒenum typec_plug_index index”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´Mchj+ubj7)�”}”(hhh]”hÝ)�”}”(hŒCable plug index”h]”hŒCable plug index”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jFh´MchjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jFh´Mchjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓubhÝ)�”}”(hŒ**Description**”h]”jÐ)�”}”(hjlh]”hŒ Description”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´MehjÓubhÝ)�”}”(hŒŠIncrement reference count for cable plug alternate mode device. Returns handle to the cable plug alternate mode, or NULL if none is found.”h]”hŒŠIncrement reference count for cable plug alternate mode device. Returns handle to the cable plug alternate mode, or NULL if none is found.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´MdhjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj.h²hh³Nh´Nubj')�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j3Œ#typec_altmode_put_plug (C function)”Œc.typec_altmode_put_plug”hNt”auh1j&hj.h²hh³Nh´Nubj9)�”}”(hhh]”(j>)�”}”(hŒ8void typec_altmode_put_plug (struct typec_altmode *plug)”h]”jD)�”}”(hŒ7void typec_altmode_put_plug(struct typec_altmode *plug)”h]”(jš)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j¦ah"]”h$]”h&]”uh1j™hj­h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´Mwubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hj­h²hh³j¿h´Mwubjm)�”}”(hŒtypec_altmode_put_plug”h]”js)�”}”(hŒtypec_altmode_put_plug”h]”hŒtypec_altmode_put_plug”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjÎubah}”(h]”h ]”(j…j†eh"]”h$]”h&]”jzj{uh1jlhj­h²hh³j¿h´MwubjÒ)�”}”(hŒ(struct typec_altmode *plug)”h]”jØ)�”}”(hŒstruct typec_altmode *plug”h]”(jJ)�”}”(hjMh]”hŒstruct”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjêubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjêubh)�”}”(hhh]”js)�”}”(hŒ typec_altmode”h]”hŒ typec_altmode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j§Œreftype”j Œ reftarget”jŒmodname”NŒ classname”Nj j )�”}”j ]”j )�”}”j jÔsbŒc.typec_altmode_put_plug”†”asbuh1hhjêubj\)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jhah"]”h$]”h&]”uh1j[hjêubj2 )�”}”(hj5 h]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j> ah"]”h$]”h&]”uh1j1 hjêubjs)�”}”(hŒplug”h]”hŒplug”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j~ah"]”h$]”h&]”uh1jrhjêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjzj{uh1j×hjæubah}”(h]”h ]”h"]”h$]”h&]”jzj{uh1jÑhj­h²hh³j¿h´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jzj{j�ˆuh1jCj‘j’hj©h²hh³j¿h´Mwubah}”(h]”j¤ah ]”(j–j—eh"]”h$]”h&]”j›ˆjœ)j�huh1j=h³j¿h´Mwhj¦h²hubjŸ)�”}”(hhh]”hÝ)�”}”(hŒ3Decrement cable plug alternate mode reference count”h]”hŒ3Decrement cable plug alternate mode reference count”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´Mwhjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj¦h²hh³j¿h´Mwubeh}”(h]”h ]”(j§Œfunction”eh"]”h$]”h&]”j¿j§jÀj‰jÁj‰j‰jÉjĉuh1j8h²hhj.h³Nh´NubjÆ)�”}”(hŒX**Parameters** ``struct typec_altmode *plug`` Handle to the cable plug alternate mode”h]”(hÝ)�”}”(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&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´M{hj�ubj)�”}”(hhh]”j)�”}”(hŒF``struct typec_altmode *plug`` Handle to the cable plug alternate mode”h]”(j)�”}”(hŒ``struct typec_altmode *plug``”h]”j†)�”}”(hj²h]”hŒstruct typec_altmode *plug”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j…hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´M}hj¬ubj7)�”}”(hhh]”hÝ)�”}”(hŒ'Handle to the cable plug alternate mode”h]”hŒ'Handle to the cable plug alternate mode”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/usb/typec_bus:121: ./drivers/usb/typec/bus.c”h´MxhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÇh´M}hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÅhj.h²hh³Nh´Nubeh}”(h]”Œcable-plug-operations”ah ]”h"]”Œcable plug operations”ah$]”h&]”uh1hµhjh²hh³hÊh´Kwubeh}”(h]”Œ driver-api”ah ]”h"]”Œ driver api”ah$]”h&]”uh1hµhh·h²hh³hÊh´K\ubeh}”(h]”Œ)api-for-usb-type-c-alternate-mode-drivers”ah ]”h"]”Œ)api for usb type-c alternate mode drivers”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”}”(jjjNjKjjþj¯j¬jùjöjjýj`j]j j jµj²j+j(jøjõuŒ nametypes”}”(j‰jN‰j‰j¯‰jù‰j‰j`‰j ‰jµ‰j+‰jø‰uh}”(jh·jKhËjþjQj¬jbjöj²jýjj]jj5j?jŒj‘j jcj€j…jŒj‘j²j j9 j> j¿ jÄ jàjåjsjxj‡jŒj(j¸jÕjÚjõj.jKjPj¤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.