€•0hŒ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/media/tx-rx”Œ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/media/tx-rx”Œ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/media/tx-rx”Œ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/media/tx-rx”Œ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/media/tx-rx”Œ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/media/tx-rx”Œ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/media/tx-rx”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒD/var/lib/git/docbuild/linux/Documentation/driver-api/media/tx-rx.rst”h´KubhŒtarget”“”)”}”(hŒ.. _transmitter-receiver:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œtransmitter-receiver”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ+Pixel data transmitter and receiver drivers”h]”hŒ+Pixel data transmitter and receiver drivers”…””}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ¹V4L2 supports various devices that transmit and receive pixel data. Examples of these devices include a camera sensor, a TV tuner and a parallel, a BT.656 or a CSI-2 receiver in an SoC.”h]”hŒ¹V4L2 supports various devices that transmit and receive pixel data. Examples of these devices include a camera sensor, a TV tuner and a parallel, a BT.656 or a CSI-2 receiver in an SoC.”…””}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubh×)”}”(hhh]”(hÜ)”}”(hŒ Bus types”h]”hŒ Bus types”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhûh²hh³hÇh´K ubhì)”}”(hŒOThe following buses are the most common. This section discusses these two only.”h]”hŒOThe following buses are the most common. This section discusses these two only.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khhûh²hubh×)”}”(hhh]”(hÜ)”}”(hŒ MIPI CSI-2”h]”hŒ MIPI CSI-2”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´Kubhì)”}”(hŒyCSI-2 is a data bus intended for transferring images from cameras to the host SoC. It is defined by the `MIPI alliance`_.”h]”(hŒhCSI-2 is a data bus intended for transferring images from cameras to the host SoC. It is defined by the ”…””}”(hj+h²hh³Nh´NubhŒ reference”“”)”}”(hŒ`MIPI alliance`_”h]”hŒ MIPI alliance”…””}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ MIPI alliance”Œrefuri”Œhttps://www.mipi.org/”uh1j3hj+Œresolved”KubhŒ.”…””}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khjh²hubhÉ)”}”(hŒ*.. _`MIPI alliance`: https://www.mipi.org/”h]”h}”(h]”Œ mipi-alliance”ah ]”h"]”Œ mipi alliance”ah$]”h&]”jEjFuh1hÈh´Khjh²hh³hÇŒ referenced”Kubeh}”(h]”Œ mipi-csi-2”ah ]”h"]”Œ mipi csi-2”ah$]”h&]”uh1hÖhhûh²hh³hÇh´Kubh×)”}”(hhh]”(hÜ)”}”(hŒParallel and BT.656”h]”hŒParallel and BT.656”…””}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjgh²hh³hÇh´Kubhì)”}”(hŒÇThe parallel and `BT.656`_ buses transport one bit of data on each clock cycle per data line. The parallel bus uses synchronisation and other additional signals whereas BT.656 embeds synchronisation.”h]”(hŒThe parallel and ”…””}”(hjxh²hh³Nh´Nubj4)”}”(hŒ `BT.656`_”h]”hŒBT.656”…””}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒBT.656”jEŒ*https://en.wikipedia.org/wiki/ITU-R_BT.656”uh1j3hjxjGKubhŒ­ buses transport one bit of data on each clock cycle per data line. The parallel bus uses synchronisation and other additional signals whereas BT.656 embeds synchronisation.”…””}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khjgh²hubhÉ)”}”(hŒ8.. _`BT.656`: https://en.wikipedia.org/wiki/ITU-R_BT.656”h]”h}”(h]”Œbt-656”ah ]”h"]”Œbt.656”ah$]”h&]”jEjuh1hÈh´K hjgh²hh³hÇj^Kubeh}”(h]”Œparallel-and-bt-656”ah ]”h"]”Œparallel and bt.656”ah$]”h&]”uh1hÖhhûh²hh³hÇh´Kubeh}”(h]”Œ bus-types”ah ]”h"]”Œ bus types”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K ubh×)”}”(hhh]”(hÜ)”}”(hŒTransmitter drivers”h]”hŒTransmitter drivers”…””}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj·h²hh³hÇh´K#ubhì)”}”(hŒ¿Transmitter drivers generally need to provide the receiver drivers with the configuration of the transmitter. What is required depends on the type of the bus. These are common for both buses.”h]”hŒ¿Transmitter drivers generally need to provide the receiver drivers with the configuration of the transmitter. What is required depends on the type of the bus. These are common for both buses.”…””}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K%hj·h²hubh×)”}”(hhh]”(hÜ)”}”(hŒMedia bus pixel code”h]”hŒMedia bus pixel code”…””}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÖh²hh³hÇh´K*ubhì)”}”(hŒSee :ref:`v4l2-mbus-pixelcode`.”h]”(hŒSee ”…””}”(hjçh²hh³Nh´Nubh)”}”(hŒ:ref:`v4l2-mbus-pixelcode`”h]”hŒinline”“”)”}”(hjñh]”hŒv4l2-mbus-pixelcode”…””}”(hjõh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jóhjïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/media/tx-rx”Œ refdomain”jŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œv4l2-mbus-pixelcode”uh1hh³hÇh´K,hjçubhŒ.”…””}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K,hjÖh²hubeh}”(h]”Œmedia-bus-pixel-code”ah ]”h"]”Œmedia bus pixel code”ah$]”h&]”uh1hÖhj·h²hh³hÇh´K*ubh×)”}”(hhh]”(hÜ)”}”(hŒLink frequency”h]”hŒLink frequency”…””}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj&h²hh³hÇh´K/ubhì)”}”(hŒžThe :ref:`V4L2_CID_LINK_FREQ ` control is used to tell the receiver the frequency of the bus (i.e. it is not the same as the symbol rate).”h]”(hŒThe ”…””}”(hj7h²hh³Nh´Nubh)”}”(hŒ.:ref:`V4L2_CID_LINK_FREQ `”h]”jô)”}”(hjAh]”hŒV4L2_CID_LINK_FREQ”…””}”(hjCh²hh³Nh´Nubah}”(h]”h ]”(jÿŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jóhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jMŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒv4l2-cid-link-freq”uh1hh³hÇh´K1hj7ubhŒl control is used to tell the receiver the frequency of the bus (i.e. it is not the same as the symbol rate).”…””}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K1hj&h²hubhì)”}”(hŒ×Drivers that do not have user-configurable link frequency should report it through the ``.get_mbus_config()`` subdev pad operation, in the ``link_freq`` field of struct v4l2_mbus_config, instead of through controls.”h]”(hŒWDrivers that do not have user-configurable link frequency should report it through the ”…””}”(hjih²hh³Nh´NubhŒliteral”“”)”}”(hŒ``.get_mbus_config()``”h]”hŒ.get_mbus_config()”…””}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjiubhŒ subdev pad operation, in the ”…””}”(hjih²hh³Nh´Nubjr)”}”(hŒ ``link_freq``”h]”hŒ link_freq”…””}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjiubhŒ? field of struct v4l2_mbus_config, instead of through controls.”…””}”(hjih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K4hj&h²hubhì)”}”(hŒ}Receiver drivers should use :c:func:`v4l2_get_link_freq` helper to obtain the link frequency from the transmitter sub-device.”h]”(hŒReceiver drivers should use ”…””}”(hjh²hh³Nh´Nubh)”}”(hŒ:c:func:`v4l2_get_link_freq`”h]”jr)”}”(hj§h]”hŒv4l2_get_link_freq()”…””}”(hj©h²hh³Nh´Nubah}”(h]”h ]”(jÿŒc”Œc-func”eh"]”h$]”h&]”uh1jqhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j³Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jŒv4l2_get_link_freq”uh1hh³hÇh´K8hjubhŒE helper to obtain the link frequency from the transmitter sub-device.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K8hj&h²hubeh}”(h]”Œlink-frequency”ah ]”h"]”Œlink frequency”ah$]”h&]”uh1hÖhj·h²hh³hÇh´K/ubh×)”}”(hhh]”(hÜ)”}”(hŒ:``.enable_streams()`` and ``.disable_streams()`` callbacks”h]”(jr)”}”(hŒ``.enable_streams()``”h]”hŒ.enable_streams()”…””}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjÚubhŒ and ”…””}”(hjÚh²hh³Nh´Nubjr)”}”(hŒ``.disable_streams()``”h]”hŒ.disable_streams()”…””}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjÚubhŒ callbacks”…””}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj×h²hh³hÇh´Kenable_streams() and struct v4l2_subdev_pad_ops->disable_streams() callbacks are used by the receiver driver to control the transmitter driver's streaming state. These callbacks may not be called directly, but by using ``v4l2_subdev_enable_streams()`` and ``v4l2_subdev_disable_streams()``.”h]”(hŒýThe struct v4l2_subdev_pad_ops->enable_streams() and struct v4l2_subdev_pad_ops->disable_streams() callbacks are used by the receiver driver to control the transmitter driver’s streaming state. These callbacks may not be called directly, but by using ”…””}”(hjh²hh³Nh´Nubjr)”}”(hŒ ``v4l2_subdev_enable_streams()``”h]”hŒv4l2_subdev_enable_streams()”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjubhŒ and ”…””}”(hjh²hh³Nh´Nubjr)”}”(hŒ!``v4l2_subdev_disable_streams()``”h]”hŒv4l2_subdev_disable_streams()”…””}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjubhŒ.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K>hj×h²hubeh}”(h]”Œ,enable-streams-and-disable-streams-callbacks”ah ]”h"]”Œ2.enable_streams() and .disable_streams() callbacks”ah$]”h&]”uh1hÖhj·h²hh³hÇh´K` control.”h]”hì)”}”(hŒÅThe pixel rate calculated this way is **not** the same thing as the pixel rate on the camera sensor's pixel array which is indicated by the :ref:`V4L2_CID_PIXEL_RATE ` control.”h]”(hŒ&The pixel rate calculated this way is ”…””}”(hj¨h²hh³Nh´NubhŒstrong”“”)”}”(hŒ**not**”h]”hŒnot”…””}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°hj¨ubhŒa the same thing as the pixel rate on the camera sensor’s pixel array which is indicated by the ”…””}”(hj¨h²hh³Nh´Nubh)”}”(hŒ0:ref:`V4L2_CID_PIXEL_RATE `”h]”jô)”}”(hjÆh]”hŒV4L2_CID_PIXEL_RATE”…””}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”(jÿŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jóhjÄubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jÒŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒv4l2-cid-pixel-rate”uh1hh³hÇh´Knhj¨ubhŒ control.”…””}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Knhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj”h²hh³hÇh´Nubeh}”(h]”Œ pixel-rate”ah ]”h"]”Œ pixel rate”ah$]”h&]”uh1hÖhjƒh²hh³hÇh´KRubh×)”}”(hhh]”(hÜ)”}”(hŒLP-11 and LP-111 states”h]”hŒLP-11 and LP-111 states”…””}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjüh²hh³hÇh´Ksubhì)”}”(hXAs part of transitioning to high speed mode, a CSI-2 transmitter typically briefly sets the bus to LP-11 or LP-111 state, depending on the PHY. This period may be as short as 100 µs, during which the receiver observes this state and proceeds its own part of high speed mode transition.”h]”hXAs part of transitioning to high speed mode, a CSI-2 transmitter typically briefly sets the bus to LP-11 or LP-111 state, depending on the PHY. This period may be as short as 100 µs, during which the receiver observes this state and proceeds its own part of high speed mode transition.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kuhjüh²hubhì)”}”(hX;Most receivers are capable of autonomously handling this once the software has configured them to do so, but there are receivers which require software involvement in observing LP-11 or LP-111 state. 100 µs is a brief period to hit in software, especially when there is no interrupt telling something is happening.”h]”hX;Most receivers are capable of autonomously handling this once the software has configured them to do so, but there are receivers which require software involvement in observing LP-11 or LP-111 state. 100 µs is a brief period to hit in software, especially when there is no interrupt telling something is happening.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kzhjüh²hubhì)”}”(hX)One way to address this is to configure the transmitter side explicitly to LP-11 or LP-111 state, which requires support from the transmitter hardware. This is not universally available. Many devices return to this state once streaming is stopped while the state after power-on is LP-00 or LP-000.”h]”hX)One way to address this is to configure the transmitter side explicitly to LP-11 or LP-111 state, which requires support from the transmitter hardware. This is not universally available. Many devices return to this state once streaming is stopped while the state after power-on is LP-00 or LP-000.”…””}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K€hjüh²hubhì)”}”(hX{The ``.pre_streamon()`` callback may be used to prepare a transmitter for transitioning to streaming state, but not yet start streaming. Similarly, the ``.post_streamoff()`` callback is used to undo what was done by the ``.pre_streamon()`` callback. The caller of ``.pre_streamon()`` is thus required to call ``.post_streamoff()`` for each successful call of ``.pre_streamon()``.”h]”(hŒThe ”…””}”(hj7h²hh³Nh´Nubjr)”}”(hŒ``.pre_streamon()``”h]”hŒ.pre_streamon()”…””}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj7ubhŒ callback may be used to prepare a transmitter for transitioning to streaming state, but not yet start streaming. Similarly, the ”…””}”(hj7h²hh³Nh´Nubjr)”}”(hŒ``.post_streamoff()``”h]”hŒ.post_streamoff()”…””}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj7ubhŒ/ callback is used to undo what was done by the ”…””}”(hj7h²hh³Nh´Nubjr)”}”(hŒ``.pre_streamon()``”h]”hŒ.pre_streamon()”…””}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj7ubhŒ callback. The caller of ”…””}”(hj7h²hh³Nh´Nubjr)”}”(hŒ``.pre_streamon()``”h]”hŒ.pre_streamon()”…””}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj7ubhŒ is thus required to call ”…””}”(hj7h²hh³Nh´Nubjr)”}”(hŒ``.post_streamoff()``”h]”hŒ.post_streamoff()”…””}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj7ubhŒ for each successful call of ”…””}”(hj7h²hh³Nh´Nubjr)”}”(hŒ``.pre_streamon()``”h]”hŒ.pre_streamon()”…””}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj7ubhŒ.”…””}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K…hjüh²hubhì)”}”(hŒ×In the context of CSI-2, the ``.pre_streamon()`` callback is used to transition the transmitter to the LP-11 or LP-111 state. This also requires powering on the device, so this should be only done when it is needed.”h]”(hŒIn the context of CSI-2, the ”…””}”(hj±h²hh³Nh´Nubjr)”}”(hŒ``.pre_streamon()``”h]”hŒ.pre_streamon()”…””}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhj±ubhŒ§ callback is used to transition the transmitter to the LP-11 or LP-111 state. This also requires powering on the device, so this should be only done when it is needed.”…””}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K‹hjüh²hubhì)”}”(hŒqReceiver drivers that do not need explicit LP-11 or LP-111 state setup are waived from calling the two callbacks.”h]”hŒqReceiver drivers that do not need explicit LP-11 or LP-111 state setup are waived from calling the two callbacks.”…””}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khjüh²hubeh}”(h]”Œlp-11-and-lp-111-states”ah ]”h"]”Œlp-11 and lp-111 states”ah$]”h&]”uh1hÖhjƒh²hh³hÇh´Ksubeh}”(h]”Œcsi-2-transmitter-drivers”ah ]”h"]”Œcsi-2 transmitter drivers”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KOubeh}”(h]”(Œ+pixel-data-transmitter-and-receiver-drivers”hÕeh ]”h"]”(Œ+pixel data transmitter and receiver drivers”Œtransmitter-receiver”eh$]”h&]”uh1hÖhhh²hh³hÇh´KŒexpect_referenced_by_name”}”jõhÊsŒexpect_referenced_by_id”}”hÕhÊsubeh}”(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”jŒ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”}”(Œ mipi alliance”]”j5aŒbt.656”]”j€auŒrefids”}”hÕ]”hÊasŒnameids”}”(jõhÕjôjñj´j±jdjaj[jXj¬j©j¤j¡j€j}j#j jÔjÑj?j<jxjujìjéjùjöjäjáuŒ nametypes”}”(jõˆjô‰j´‰jd‰j[ˆj¬‰j¤ˆj€‰j#‰jÔ‰j?‰jx‰jì‰jù‰jä‰uh}”(hÕhØjñhØj±hûjajjXjRj©jgj¡j›j}j·j jÖjÑj&j<j×jujBjéjƒjöj”jájüj}jÓuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j,Ks…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hì)”}”(hhh]”hŒ:Hyperlink target "transmitter-receiver" is not referenced.”…””}”hjŒsbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j‡ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.