€•õèŒ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/admin-guide/media/mali-c55”Œ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/admin-guide/media/mali-c55”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/admin-guide/media/mali-c55”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/admin-guide/media/mali-c55”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/admin-guide/media/mali-c55”Œ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/admin-guide/media/mali-c55”Œ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/admin-guide/media/mali-c55”Œ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³ŒH/var/lib/git/docbuild/linux/Documentation/admin-guide/media/mali-c55.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ*ARM Mali-C55 Image Signal Processor driver”h]”hŒ*ARM Mali-C55 Image Signal Processor driver”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇ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”“”)�”}”(hŒŠThis file documents the driver for ARM's Mali-C55 Image Signal Processor. The driver is located under drivers/media/platform/arm/mali-c55.”h]”hŒŒThis file documents the driver for ARM’s Mali-C55 Image Signal Processor. The driver is located under drivers/media/platform/arm/mali-c55.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hXGThe Mali-C55 ISP receives data in either raw Bayer format or RGB/YUV format from sensors through either a parallel interface or a memory bus before processing it and outputting it through an internal DMA engine. Two output pipelines are possible (though one may not be fitted, depending on the implementation). These are referred to as "Full resolution" and "Downscale", but the naming is historic and both pipes are capable of cropping/scaling operations. The full resolution pipe is also capable of outputting RAW data, bypassing much of the ISP's processing. The downscale pipe cannot output RAW data. An integrated test pattern generator can be used to drive the ISP and produce image data in the absence of a connected camera sensor. The driver module is named mali_c55, and is enabled through the CONFIG_VIDEO_MALI_C55 config option.”h]”hXQThe Mali-C55 ISP receives data in either raw Bayer format or RGB/YUV format from sensors through either a parallel interface or a memory bus before processing it and outputting it through an internal DMA engine. Two output pipelines are possible (though one may not be fitted, depending on the implementation). These are referred to as “Full resolutionâ€� and “Downscaleâ€�, but the naming is historic and both pipes are capable of cropping/scaling operations. The full resolution pipe is also capable of outputting RAW data, bypassing much of the ISP’s processing. The downscale pipe cannot output RAW data. An integrated test pattern generator can be used to drive the ISP and produce image data in the absence of a connected camera sensor. The driver module is named mali_c55, and is enabled through the CONFIG_VIDEO_MALI_C55 config option.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hŒ�The driver implements V4L2, Media Controller and V4L2 Subdevice interfaces and expects camera sensors connected to the ISP to have V4L2 subdevice interfaces.”h]”hŒ�The driver implements V4L2, Media Controller and V4L2 Subdevice interfaces and expects camera sensors connected to the ISP to have V4L2 subdevice interfaces.”…”�”}”(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ŒMali-C55 ISP hardware”h]”hŒMali-C55 ISP hardware”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj"h²hh³hÇh´Kubhï)�”}”(hŒÀA high level functional view of the Mali-C55 ISP is presented below. The ISP takes input from either a live source or through a DMA engine for memory input, depending on the SoC integration.::”h]”hŒ¿A high level functional view of the Mali-C55 ISP is presented below. The ISP takes input from either a live source or through a DMA engine for memory input, depending on the SoC integration.:”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"h²hubhŒ literal_block”“”)�”}”(hX+---------+ +----------+ +--------+ | Sensor |--->| CSI-2 Rx | "Full Resolution" | DMA | +---------+ +----------+ |\ Output +--->| Writer | | | \ | +--------+ | | \ +----------+ +------+---> Streaming I/O +------------+ +------->| | | | | | | | |-->| Mali-C55 |--+ | DMA Reader |--------------->| | | ISP | | | | | / | | | +---> Streaming I/O +------------+ | / +----------+ | | |/ +------+ | +--------+ +--->| DMA | "Downscaled" | Writer | Output +--------+”h]”hX+---------+ +----------+ +--------+ | Sensor |--->| CSI-2 Rx | "Full Resolution" | DMA | +---------+ +----------+ |\ Output +--->| Writer | | | \ | +--------+ | | \ +----------+ +------+---> Streaming I/O +------------+ +------->| | | | | | | | |-->| Mali-C55 |--+ | DMA Reader |--------------->| | | ISP | | | | | / | | | +---> Streaming I/O +------------+ | / +----------+ | | |/ +------+ | +--------+ +--->| DMA | "Downscaled" | Writer | Output +--------+”…”�”}”hjCsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jAh³hÇh´K#hj"h²hubeh}”(h]”Œmali-c55-isp-hardware”ah ]”h"]”Œmali-c55 isp hardware”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMedia Controller Topology”h]”hŒMedia Controller Topology”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjYh²hh³hÇh´K4ubhï)�”}”(hŒAn example of the ISP's topology (as implemented in a system with an IMX415 camera sensor and generic CSI-2 receiver) is below:”h]”hŒ�An example of the ISP’s topology (as implemented in a system with an IMX415 camera sensor and generic CSI-2 receiver) is below:”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K6hjYh²hubŒkfigure”Œ kernel_figure”“”)�”}”(hhh]”hŒfigure”“”)�”}”(hhh]”hŒimage”“”)�”}”(hŒX.. kernel-figure:: mali-c55-graph.dot :alt: mali-c55-graph.dot :align: center ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œalt”Œmali-c55-graph.dot”Œuri”Œ$admin-guide/media/mali-c55-graph.dot”Œ candidates”}”Œ*”j’suh1jƒhj€h³hÇh´Kubah}”(h]”h ]”h"]”h$]”h&]”Œalign”Œcenter”uh1j~hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jyhjYh²hh³hÇh´Nubhï)�”}”(hŒ!The driver has 4 V4L2 subdevices:”h]”hŒ!The driver has 4 V4L2 subdevices:”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K>hjYh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒa`mali_c55 isp`: Responsible for configuring input crop and color space conversion”h]”hŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒQ`mali_c55 isp`: Responsible for configuring input crop and color space conversion”h]”(hŒterm”“”)�”}”(hŒF`mali_c55 isp`: Responsible for configuring input crop and color space”h]”(hŒtitle_reference”“”)�”}”(hŒ`mali_c55 isp`”h]”hŒ mali_c55 isp”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhjÊubhŒ8: Responsible for configuring input crop and color space”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÈh³hÇh´K@hjÄubhŒ definition”“”)�”}”(hhh]”hï)�”}”(hŒ conversion”h]”hŒ conversion”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KAhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂh³hÇh´K@hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj´h²hh³Nh´Nubj¸)�”}”(hŒF`mali_c55 tpg`: The test pattern generator, emulating a camera sensor.”h]”hï)�”}”(hjh]”(jÏ)�”}”(hŒ`mali_c55 tpg`”h]”hŒ mali_c55 tpg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhjubhŒ8: The test pattern generator, emulating a camera sensor.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj´h²hh³hÇh´Nubj¸)�”}”(hŒ7`mali_c55 resizer fr`: The Full-Resolution pipe resizer”h]”hï)�”}”(hj:h]”(jÏ)�”}”(hŒ`mali_c55 resizer fr`”h]”hŒmali_c55 resizer fr”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhj<ubhŒ": The Full-Resolution pipe resizer”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KChj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj´h²hh³hÇh´Nubj¸)�”}”(hŒ2`mali_c55 resizer ds`: The Downscale pipe resizer ”h]”hï)�”}”(hŒ1`mali_c55 resizer ds`: The Downscale pipe resizer”h]”(jÏ)�”}”(hŒ`mali_c55 resizer ds`”h]”hŒmali_c55 resizer ds”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhjaubhŒ: The Downscale pipe resizer”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KDhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj´h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j²h³hÇh´K@hjYh²hubhï)�”}”(hŒ$The driver has 3 V4L2 video devices:”h]”hŒ$The driver has 3 V4L2 video devices:”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KFhjYh²hubj³)�”}”(hhh]”(j¸)�”}”(hŒ8`mali-c55 fr`: The full-resolution pipe's capture device”h]”hï)�”}”(hjžh]”(jÏ)�”}”(hŒ `mali-c55 fr`”h]”hŒ mali-c55 fr”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhj ubhŒ-: The full-resolution pipe’s capture device”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KHhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj™h²hh³hÇh´Nubj¸)�”}”(hŒ2`mali-c55 ds`: The downscale pipe's capture device”h]”hï)�”}”(hjÃh]”(jÏ)�”}”(hŒ `mali-c55 ds`”h]”hŒ mali-c55 ds”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhjÅubhŒ': The downscale pipe’s capture device”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KIhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj™h²hh³hÇh´Nubj¸)�”}”(hŒ6`mali-c55 3a stats`: The 3A statistics capture device ”h]”hï)�”}”(hŒ5`mali-c55 3a stats`: The 3A statistics capture device”h]”(jÏ)�”}”(hŒ`mali-c55 3a stats`”h]”hŒmali-c55 3a stats”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhjêubhŒ": The 3A statistics capture device”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KJhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj™h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j‰jŠuh1j²h³hÇh´KHhjYh²hubhï)�”}”(hŒãFrame sequences are synchronised across to two capture devices, meaning if one pipe is started later than the other the sequence numbers returned in its buffers will match those of the other pipe rather than starting from zero.”h]”hŒãFrame sequences are synchronised across to two capture devices, meaning if one pipe is started later than the other the sequence numbers returned in its buffers will match those of the other pipe rather than starting from zero.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KLhjYh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒIdiosyncrasies”h]”hŒIdiosyncrasies”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´KQubhï)�”}”(hXŽ**mali-c55 isp** The `mali-c55 isp` subdevice has a single sink pad to which all sources of data should be connected. The active source is selected by enabling the appropriate media link and disabling all others. The ISP has two source pads, reflecting the different paths through which it can internally route data. Tap points within the ISP allow users to divert data to avoid processing by some or all of the hardware's processing steps. The diagram below is intended only to highlight how the bypassing works and is not a true reflection of those processing steps; for a high-level functional block diagram see ARM's developer page for the ISP [3]_::”h]”(hŒstrong”“”)�”}”(hŒ**mali-c55 isp**”h]”hŒ mali-c55 isp”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj1ubhŒ The ”…”�”}”(hj1h²hh³Nh´NubjÏ)�”}”(hŒ`mali-c55 isp`”h]”hŒ mali-c55 isp”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhj1ubhXi subdevice has a single sink pad to which all sources of data should be connected. The active source is selected by enabling the appropriate media link and disabling all others. The ISP has two source pads, reflecting the different paths through which it can internally route data. Tap points within the ISP allow users to divert data to avoid processing by some or all of the hardware’s processing steps. The diagram below is intended only to highlight how the bypassing works and is not a true reflection of those processing steps; for a high-level functional block diagram see ARM’s developer page for the ISP ”…”�”}”(hj1h²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[3]_”h]”hŒ3”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œid6”Œdocname”Œadmin-guide/media/mali-c55”uh1j[hj1Œresolved”KubhŒ:”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KShj h²hubjB)�”}”(hX +--------------------------------------------------------------+ | Possible Internal ISP Data Routes | | +------------+ +----------+ +------------+ | +---+ | | | | | Colour | +---+ | 0 |--+-->| Processing |->| Demosaic |->| Space |--->| 1 | +---+ | | | | | | Conversion | +---+ | | +------------+ +----------+ +------------+ | | | +---+ | +---------------------------------------------------| 2 | | +---+ | | +--------------------------------------------------------------+”h]”hX +--------------------------------------------------------------+ | Possible Internal ISP Data Routes | | +------------+ +----------+ +------------+ | +---+ | | | | | Colour | +---+ | 0 |--+-->| Processing |->| Demosaic |->| Space |--->| 1 | +---+ | | | | | | Conversion | +---+ | | +------------+ +----------+ +------------+ | | | +---+ | +---------------------------------------------------| 2 | | +---+ | | +--------------------------------------------------------------+”…”�”}”hj{sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jAh³hÇh´K^hj h²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hj�ubj”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hj�ubj”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hj�ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hï)�”}”(hŒPad”h]”hŒPad”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kohj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºubj¾)�”}”(hhh]”hï)�”}”(hŒ Direction”h]”hŒ Direction”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KphjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºubj¾)�”}”(hhh]”hï)�”}”(hŒPurpose”h]”hŒPurpose”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kqhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hj�ubhŒtbody”“”)�”}”(hhh]”(j¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hŒ0”h]”hŒ0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kshjubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubj¾)�”}”(hhh]”hï)�”}”(hŒsink”h]”hŒsink”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kthj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubj¾)�”}”(hhh]”hï)�”}”(hŒ3Data input, connected to the TPG and camera sensors”h]”hŒ3Data input, connected to the TPG and camera sensors”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KuhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjubj¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kwhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjcubj¾)�”}”(hhh]”hï)�”}”(hŒsource”h]”hŒsource”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kxhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjcubj¾)�”}”(hhh]”hï)�”}”(hŒ8RGB/YUV data, connected to the FR and DS V4L2 subdevices”h]”hŒ8RGB/YUV data, connected to the FR and DS V4L2 subdevices”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kyhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjubj¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hŒ2”h]”hŒ2”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K{hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj±ubj¾)�”}”(hhh]”hï)�”}”(hŒsource”h]”hŒsource”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K|hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj±ubj¾)�”}”(hhh]”hï)�”}”(hŒ3RAW bayer data, connected to the FR V4L2 subdevices”h]”hŒ3RAW bayer data, connected to the FR V4L2 subdevices”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K}hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jŽhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj h²hh³Nh´Nubhï)�”}”(hŒ¦The ISP is limited to both input and output resolutions between 640x480 and 8192x8192, and this is reflected in the ISP and resizer subdevice's .set_fmt() operations.”h]”hŒ¨The ISP is limited to both input and output resolutions between 640x480 and 8192x8192, and this is reflected in the ISP and resizer subdevice’s .set_fmt() operations.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj h²hubhï)�”}”(hŒª**mali-c55 resizer fr** The `mali-c55 resizer fr` subdevice has two _sink_ pads to reflect the different insertion points in the hardware (either RAW or demosaiced data):”h]”(j6)�”}”(hŒ**mali-c55 resizer fr**”h]”hŒmali-c55 resizer fr”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj ubhŒ The ”…”�”}”(hj h²hh³Nh´NubjÏ)�”}”(hŒ`mali-c55 resizer fr`”h]”hŒmali-c55 resizer fr”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhj ubhŒy subdevice has two _sink_ pads to reflect the different insertion points in the hardware (either RAW or demosaiced data):”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kƒhj h²hubjŠ)�”}”(hhh]”j�)�”}”(hhh]”(j”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hjQubj”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hjQubj”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hjQubj´)�”}”(hhh]”j¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hŒPad”h]”hŒPad”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŠhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjuubj¾)�”}”(hhh]”hï)�”}”(hŒ Direction”h]”hŒ Direction”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K‹hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjuubj¾)�”}”(hhh]”hï)�”}”(hŒPurpose”h]”hŒPurpose”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŒhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hjQubj)�”}”(hhh]”(j¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hjh]”hŒ0”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŽhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÌubj¾)�”}”(hhh]”hï)�”}”(hŒsink”h]”hŒsink”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K�hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÌubj¾)�”}”(hhh]”hï)�”}”(hŒ4Data input connected to the ISP's demosaiced stream.”h]”hŒ6Data input connected to the ISP’s demosaiced stream.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K�hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÉubj¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hjkh]”hŒ1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K’hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubj¾)�”}”(hhh]”hï)�”}”(hŒsource”h]”hŒsource”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K“hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubj¾)�”}”(hhh]”hï)�”}”(hŒ1Data output connected to the capture video device”h]”hŒ1Data output connected to the capture video device”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K”hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÉubj¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hj¹h]”hŒ2”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K–hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjfubj¾)�”}”(hhh]”hï)�”}”(hŒsink”h]”hŒsink”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K—hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjfubj¾)�”}”(hhh]”hï)�”}”(hŒ1Data input connected to the ISP's raw data stream”h]”hŒ3Data input connected to the ISP’s raw data stream”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K˜hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jŽhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj h²hh³Nh´Nubhï)�”}”(hŒmThe data source in use is selected through the routing API; two routes each of a single stream are available:”h]”hŒmThe data source in use is selected through the routing API; two routes each of a single stream are available:”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kšhj h²hubjŠ)�”}”(hhh]”j�)�”}”(hhh]”(j”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hj×ubj”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hj×ubj”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1j“hj×ubj´)�”}”(hhh]”j¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hŒSink Pad”h]”hŒSink Pad”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjûubj¾)�”}”(hhh]”hï)�”}”(hŒ Source Pad”h]”hŒ Source Pad”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¡hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjûubj¾)�”}”(hhh]”hï)�”}”(hŒPurpose”h]”hŒPurpose”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¢hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j³hj×ubj)�”}”(hhh]”(j¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hjh]”hŒ0”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¤hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjRubj¾)�”}”(hhh]”hï)�”}”(hjkh]”hŒ1”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¥hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjRubj¾)�”}”(hhh]”hï)�”}”(hŒDemosaiced data route”h]”hŒDemosaiced data route”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¦hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjOubj¹)�”}”(hhh]”(j¾)�”}”(hhh]”hï)�”}”(hj¹h]”hŒ2”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¨hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjžubj¾)�”}”(hhh]”hï)�”}”(hjkh]”hŒ1”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K©hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjžubj¾)�”}”(hhh]”hï)�”}”(hŒRaw data route”h]”hŒRaw data route”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KªhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jŽhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰hj h²hh³Nh´Nubhï)�”}”(hŒËIf the demosaiced route is active then the FR pipe is only capable of output in RGB/YUV formats. If the raw route is active then the output reflects the input (which may be either Bayer or RGB/YUV data).”h]”hŒËIf the demosaiced route is active then the FR pipe is only capable of output in RGB/YUV formats. If the raw route is active then the output reflects the input (which may be either Bayer or RGB/YUV data).”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K­hj h²hubeh}”(h]”Œidiosyncrasies”ah ]”h"]”Œidiosyncrasies”ah$]”h&]”uh1hÈhjYh²hh³hÇh´KQubeh}”(h]”Œmedia-controller-topology”ah ]”h"]”Œmedia controller topology”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K4ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ!Using the driver to capture video”h]”hŒ!Using the driver to capture video”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K²ubhï)�”}”(hXUsing the media controller APIs we can configure the input source and ISP to capture images in a variety of formats. In the examples below, configuring the media graph is done with the v4l-utils [1]_ package's media-ctl utility. Capturing the images is done with yavta [2]_.”h]”(hŒÃUsing the media controller APIs we can configure the input source and ISP to capture images in a variety of formats. In the examples below, configuring the media graph is done with the v4l-utils ”…”�”}”(hj,h²hh³Nh´Nubj\)�”}”(hŒ[1]_”h]”hŒ1”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”jlŒid4”jnjouh1j[hj,jpKubhŒH package’s media-ctl utility. Capturing the images is done with yavta ”…”�”}”(hj,h²hh³Nh´Nubj\)�”}”(hŒ[2]_”h]”hŒ2”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”jlŒid5”jnjouh1j[hj,jpKubhŒ.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K´hjh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒConfiguring the input source”h]”hŒConfiguring the input source”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjbh²hh³hÇh´Kºubhï)�”}”(hŒžThe first step is to set the input source that we wish by enabling the correct media link. Using the example topology above, we can select the TPG as follows:”h]”hŒžThe first step is to set the input source that we wish by enabling the correct media link. Using the example topology above, we can select the TPG as follows:”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¼hjbh²hubjB)�”}”(hŒhmedia-ctl -l "'lte-csi2-rx':1->'mali-c55 isp':0[0]" media-ctl -l "'mali-c55 tpg':0->'mali-c55 isp':0[1]"”h]”hŒhmedia-ctl -l "'lte-csi2-rx':1->'mali-c55 isp':0[0]" media-ctl -l "'mali-c55 tpg':0->'mali-c55 isp':0[1]"”…”�”}”hj�sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œnone”Œhighlight_args”}”uh1jAh³hÇh´K¿hjbh²hubeh}”(h]”Œconfiguring-the-input-source”ah ]”h"]”Œconfiguring the input source”ah$]”h&]”uh1hÈhjh²hh³hÇh´KºubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ0Configuring which video devices will stream data”h]”hŒ0Configuring which video devices will stream data”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjœh²hh³hÇh´KÅubhï)�”}”(hX-The driver will wait for all video devices to have their VIDIOC_STREAMON ioctl called before it tells the sensor to start streaming. To facilitate this we need to enable links to the video devices that we want to use. In the example below we enable the links to both of the image capture video devices”h]”hX-The driver will wait for all video devices to have their VIDIOC_STREAMON ioctl called before it tells the sensor to start streaming. To facilitate this we need to enable links to the video devices that we want to use. In the example below we enable the links to both of the image capture video devices”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÇhjœh²hubjB)�”}”(hŒumedia-ctl -l "'mali-c55 resizer fr':1->'mali-c55 fr':0[1]" media-ctl -l "'mali-c55 resizer ds':1->'mali-c55 ds':0[1]"”h]”hŒumedia-ctl -l "'mali-c55 resizer fr':1->'mali-c55 fr':0[1]" media-ctl -l "'mali-c55 resizer ds':1->'mali-c55 ds':0[1]"”…”�”}”hj»sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´KÌhjœh²hubeh}”(h]”Œ0configuring-which-video-devices-will-stream-data”ah ]”h"]”Œ0configuring which video devices will stream data”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÅubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ>Capturing bayer data from the source and processing to RGB/YUV”h]”hŒ>Capturing bayer data from the source and processing to RGB/YUV”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÓh²hh³hÇh´KÒubhï)�”}”(hXTo capture 1920x1080 bayer data from the source and push it through the ISP's full processing pipeline, we configure the data formats appropriately on the source, ISP and resizer subdevices and set the FR resizer's routing to select processed data. The media bus format on the resizer's source pad will be either RGB121212_1X36 or YUV10_1X30, depending on whether you want to capture RGB or YUV. The ISP's debayering block outputs RGB data natively, setting the source pad format to YUV10_1X30 enables the colour space conversion block.”h]”hX To capture 1920x1080 bayer data from the source and push it through the ISP’s full processing pipeline, we configure the data formats appropriately on the source, ISP and resizer subdevices and set the FR resizer’s routing to select processed data. The media bus format on the resizer’s source pad will be either RGB121212_1X36 or YUV10_1X30, depending on whether you want to capture RGB or YUV. The ISP’s debayering block outputs RGB data natively, setting the source pad format to YUV10_1X30 enables the colour space conversion block.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÔhjÓh²hubhï)�”}”(hŒeIn this example we target RGB565 output, so select RGB121212_1X36 as the resizer source pad's format:”h]”hŒgIn this example we target RGB565 output, so select RGB121212_1X36 as the resizer source pad’s format:”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÜhjÓh²hubjB)�”}”(hX¶# Set formats on the TPG and ISP media-ctl -V "'mali-c55 tpg':0[fmt:SRGGB20_1X20/1920x1080]" media-ctl -V "'mali-c55 isp':0[fmt:SRGGB20_1X20/1920x1080]" media-ctl -V "'mali-c55 isp':1[fmt:SRGGB20_1X20/1920x1080]" # Set routing on the FR resizer media-ctl -R "'mali-c55 resizer fr'[0/0->1/0[1],2/0->1/0[0]]" # Set format on the resizer, must be done AFTER the routing. media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB121212_1X36/1920x1080]"”h]”hX¶# Set formats on the TPG and ISP media-ctl -V "'mali-c55 tpg':0[fmt:SRGGB20_1X20/1920x1080]" media-ctl -V "'mali-c55 isp':0[fmt:SRGGB20_1X20/1920x1080]" media-ctl -V "'mali-c55 isp':1[fmt:SRGGB20_1X20/1920x1080]" # Set routing on the FR resizer media-ctl -R "'mali-c55 resizer fr'[0/0->1/0[1],2/0->1/0[0]]" # Set format on the resizer, must be done AFTER the routing. media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB121212_1X36/1920x1080]"”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´KßhjÓh²hubhï)�”}”(hŒ²The downscale output can also be used to stream data at the same time. In this case since only processed data can be captured through the downscale output no routing need be set:”h]”hŒ²The downscale output can also be used to stream data at the same time. In this case since only processed data can be captured through the downscale output no routing need be set:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KìhjÓh²hubjB)�”}”(hŒ`# Set format on the resizer media-ctl -V "'mali-c55 resizer ds':1[fmt:RGB121212_1X36/1920x1080]"”h]”hŒ`# Set format on the resizer media-ctl -V "'mali-c55 resizer ds':1[fmt:RGB121212_1X36/1920x1080]"”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´KðhjÓh²hubhï)�”}”(hŒsFollowing which images can be captured from both the FR and DS output's video devices (simultaneously, if desired):”h]”hŒuFollowing which images can be captured from both the FR and DS output’s video devices (simultaneously, if desired):”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KõhjÓh²hubjB)�”}”(hŒ[yavta -f RGB565 -s 1920x1080 -c10 /dev/video0 yavta -f RGB565 -s 1920x1080 -c10 /dev/video1”h]”hŒ[yavta -f RGB565 -s 1920x1080 -c10 /dev/video0 yavta -f RGB565 -s 1920x1080 -c10 /dev/video1”…”�”}”hj< sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´KøhjÓh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCropping the image”h]”hŒCropping the image”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjL h²hh³hÇh´Kþubhï)�”}”(hŒÙBoth the full resolution and downscale pipes can crop to a minimum resolution of 640x480. To crop the image simply configure the resizer's sink pad's crop and compose rectangles and set the format on the video device:”h]”hŒÝBoth the full resolution and downscale pipes can crop to a minimum resolution of 640x480. To crop the image simply configure the resizer’s sink pad’s crop and compose rectangles and set the format on the video device:”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MhjL h²hubjB)�”}”(hŒàmedia-ctl -V "'mali-c55 resizer fr':0[fmt:RGB121212_1X36/1920x1080 crop:(480,270)/640x480 compose:(0,0)/640x480]" media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB121212_1X36/640x480]" yavta -f RGB565 -s 640x480 -c10 /dev/video0”h]”hŒàmedia-ctl -V "'mali-c55 resizer fr':0[fmt:RGB121212_1X36/1920x1080 crop:(480,270)/640x480 compose:(0,0)/640x480]" media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB121212_1X36/640x480]" yavta -f RGB565 -s 640x480 -c10 /dev/video0”…”�”}”hjk sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´MhjL h²hubeh}”(h]”Œcropping-the-image”ah ]”h"]”Œcropping the image”ah$]”h&]”uh1hÈhjÓh²hh³hÇh´KþubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDownscaling the image”h]”hŒDownscaling the image”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjƒ h²hh³hÇh´M ubhï)�”}”(hX.Both the full resolution and downscale pipes can downscale the image by up to 8x provided the minimum 640x480 output resolution is adhered to. For the best image result the scaling ratio for each direction should be the same. To configure scaling we use the compose rectangle on the resizer's sink pad:”h]”hX0Both the full resolution and downscale pipes can downscale the image by up to 8x provided the minimum 640x480 output resolution is adhered to. For the best image result the scaling ratio for each direction should be the same. To configure scaling we use the compose rectangle on the resizer’s sink pad:”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M hjƒ h²hubjB)�”}”(hŒÞmedia-ctl -V "'mali-c55 resizer fr':0[fmt:RGB121212_1X36/1920x1080 crop:(0,0)/1920x1080 compose:(0,0)/640x480]" media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB121212_1X36/640x480]" yavta -f RGB565 -s 640x480 -c10 /dev/video0”h]”hŒÞmedia-ctl -V "'mali-c55 resizer fr':0[fmt:RGB121212_1X36/1920x1080 crop:(0,0)/1920x1080 compose:(0,0)/640x480]" media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB121212_1X36/640x480]" yavta -f RGB565 -s 640x480 -c10 /dev/video0”…”�”}”hj¢ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´Mhjƒ h²hubeh}”(h]”Œdownscaling-the-image”ah ]”h"]”Œdownscaling the image”ah$]”h&]”uh1hÈhjÓh²hh³hÇh´M ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCapturing images in YUV formats”h]”hŒCapturing images in YUV formats”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjº h²hh³hÇh´Mubhï)�”}”(hX If we need to output YUV data rather than RGB the color space conversion block needs to be active, which is achieved by setting MEDIA_BUS_FMT_YUV10_1X30 on the resizer's source pad. We can then configure a capture format like NV12 (here in its multi-planar variant)”h]”hX If we need to output YUV data rather than RGB the color space conversion block needs to be active, which is achieved by setting MEDIA_BUS_FMT_YUV10_1X30 on the resizer’s source pad. We can then configure a capture format like NV12 (here in its multi-planar variant)”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjº h²hubjB)�”}”(hŒmmedia-ctl -V "'mali-c55 resizer fr':1[fmt:YUV10_1X30/1920x1080]" yavta -f NV12M -s 1920x1080 -c10 /dev/video0”h]”hŒmmedia-ctl -V "'mali-c55 resizer fr':1[fmt:YUV10_1X30/1920x1080]" yavta -f NV12M -s 1920x1080 -c10 /dev/video0”…”�”}”hjÙ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´M hjº h²hubeh}”(h]”Œcapturing-images-in-yuv-formats”ah ]”h"]”Œcapturing images in yuv formats”ah$]”h&]”uh1hÈhjÓh²hh³hÇh´Mubeh}”(h]”Œ>capturing-bayer-data-from-the-source-and-processing-to-rgb-yuv”ah ]”h"]”Œ>capturing bayer data from the source and processing to rgb/yuv”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÒubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFCapturing RGB data from the source and processing it with the resizers”h]”hŒFCapturing RGB data from the source and processing it with the resizers”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjù h²hh³hÇh´M&ubhï)�”}”(hX%The Mali-C55 ISP can work with sensors capable of outputting RGB data. In this case although none of the image quality blocks would be used it can still crop/scale the data in the usual way. For this reason RGB data input to the ISP still goes through the ISP subdevice's pad 1 to the resizer.”h]”hX'The Mali-C55 ISP can work with sensors capable of outputting RGB data. In this case although none of the image quality blocks would be used it can still crop/scale the data in the usual way. For this reason RGB data input to the ISP still goes through the ISP subdevice’s pad 1 to the resizer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M(hjù h²hubhï)�”}”(hŒúTo achieve this, the ISP's sink pad's format is set to MEDIA_BUS_FMT_RGB202020_1X60 - this reflects the format that data must be in to work with the ISP. Converting the camera sensor's output to that format is the responsibility of external hardware.”h]”hXTo achieve this, the ISP’s sink pad’s format is set to MEDIA_BUS_FMT_RGB202020_1X60 - this reflects the format that data must be in to work with the ISP. Converting the camera sensor’s output to that format is the responsibility of external hardware.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M-hjù h²hubhï)�”}”(hŒWIn this example we ask the test pattern generator to give us RGB data instead of bayer.”h]”hŒWIn this example we ask the test pattern generator to give us RGB data instead of bayer.”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M2hjù h²hubjB)�”}”(hŒ{media-ctl -V "'mali-c55 tpg':0[fmt:RGB202020_1X60/1920x1080]" media-ctl -V "'mali-c55 isp':0[fmt:RGB202020_1X60/1920x1080]"”h]”hŒ{media-ctl -V "'mali-c55 tpg':0[fmt:RGB202020_1X60/1920x1080]" media-ctl -V "'mali-c55 isp':0[fmt:RGB202020_1X60/1920x1080]"”…”�”}”hj4 sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´M5hjù h²hubhï)�”}”(hŒUCropping or scaling the data can be done in exactly the same way as outlined earlier.”h]”hŒUCropping or scaling the data can be done in exactly the same way as outlined earlier.”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M:hjù h²hubeh}”(h]”ŒFcapturing-rgb-data-from-the-source-and-processing-it-with-the-resizers”ah ]”h"]”ŒFcapturing rgb data from the source and processing it with the resizers”ah$]”h&]”uh1hÈhjh²hh³hÇh´M&ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ?Capturing raw data from the source and outputting it unmodified”h]”hŒ?Capturing raw data from the source and outputting it unmodified”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjZ h²hh³hÇh´M>ubhï)�”}”(hŒâThe ISP can additionally capture raw data from the source and output it on the full resolution pipe only, completely unmodified. In this case the downscale pipe can still process the data normally and be used at the same time.”h]”hŒâThe ISP can additionally capture raw data from the source and output it on the full resolution pipe only, completely unmodified. In this case the downscale pipe can still process the data normally and be used at the same time.”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M@hjZ h²hubhï)�”}”(hŒ‰To configure raw bypass the FR resizer's subdevice's routing table needs to be configured, followed by formats in the appropriate places:”h]”hŒ�To configure raw bypass the FR resizer’s subdevice’s routing table needs to be configured, followed by formats in the appropriate places:”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MDhjZ h²hubjB)�”}”(hX`media-ctl -R "'mali-c55 resizer fr'[0/0->1/0[0],2/0->1/0[1]]" media-ctl -V "'mali-c55 isp':0[fmt:RGB202020_1X60/1920x1080]" media-ctl -V "'mali-c55 resizer fr':2[fmt:RGB202020_1X60/1920x1080]" media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB202020_1X60/1920x1080]" # Set format on the video device and stream yavta -f RGB565 -s 1920x1080 -c10 /dev/video0”h]”hX`media-ctl -R "'mali-c55 resizer fr'[0/0->1/0[0],2/0->1/0[1]]" media-ctl -V "'mali-c55 isp':0[fmt:RGB202020_1X60/1920x1080]" media-ctl -V "'mali-c55 resizer fr':2[fmt:RGB202020_1X60/1920x1080]" media-ctl -V "'mali-c55 resizer fr':1[fmt:RGB202020_1X60/1920x1080]" # Set format on the video device and stream yavta -f RGB565 -s 1920x1080 -c10 /dev/video0”…”�”}”hj‡ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´MGhjZ h²hubhŒtarget”“”)�”}”(hŒ.. _mali-c55-3a-stats:”h]”h}”(h]”h ]”h"]”h$]”h&]”jlŒmali-c55-3a-stats”uh1j— h´MQhjZ h²hh³hÇubeh}”(h]”Œ?capturing-raw-data-from-the-source-and-outputting-it-unmodified”ah ]”h"]”Œ?capturing raw data from the source and outputting it unmodified”ah$]”h&]”uh1hÈhjh²hh³hÇh´M>ubeh}”(h]”Œ!using-the-driver-to-capture-video”ah ]”h"]”Œ!using the driver to capture video”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K²ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCapturing ISP Statistics”h]”hŒCapturing ISP Statistics”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj´ h²hh³hÇh´MTubhï)�”}”(hXlThe ISP is capable of producing statistics for consumption by image processing algorithms running in userspace. These statistics can be captured by queueing buffers to the `mali-c55 3a stats` V4L2 Device whilst the ISP is streaming. Only the :ref:`V4L2_META_FMT_MALI_C55_STATS ` format is supported, so no format-setting need be done:”h]”(hŒ¬The ISP is capable of producing statistics for consumption by image processing algorithms running in userspace. These statistics can be captured by queueing buffers to the ”…”�”}”(hjÅ h²hh³Nh´NubjÏ)�”}”(hŒ`mali-c55 3a stats`”h]”hŒmali-c55 3a stats”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhjÅ ubhŒ3 V4L2 Device whilst the ISP is streaming. Only the ”…”�”}”(hjÅ h²hh³Nh´Nubh)�”}”(hŒB:ref:`V4L2_META_FMT_MALI_C55_STATS `”h]”hŒinline”“”)�”}”(hjá h]”hŒV4L2_META_FMT_MALI_C55_STATS”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jã hjß ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”joŒ refdomain”jð Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œv4l2-meta-fmt-mali-c55-stats”uh1hh³hÇh´MVhjÅ ubhŒ8 format is supported, so no format-setting need be done:”…”�”}”(hjÅ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MVhj´ h²hubjB)�”}”(hX# We assume the media graph has been configured to support RGB565 capture # from the mali-c55 fr V4L2 Device, which is at /dev/video0. The statistics # V4L2 device is at /dev/video3 yavta -f RGB565 -s 1920x1080 -c32 /dev/video0 && \ yavta -c10 -F /dev/video3”h]”hX# We assume the media graph has been configured to support RGB565 capture # from the mali-c55 fr V4L2 Device, which is at /dev/video0. The statistics # V4L2 device is at /dev/video3 yavta -f RGB565 -s 1920x1080 -c32 /dev/video0 && \ yavta -c10 -F /dev/video3”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj�‰j�Œnone”j’}”uh1jAh³hÇh´M\hj´ h²hubhï)�”}”(hX·The layout of the buffer is described by :c:type:`mali_c55_stats_buffer`, but broadly statistics are generated to support three image processing algorithms; AEXP (Auto-Exposure), AWB (Auto-White Balance) and AF (Auto-Focus). These stats can be drawn from various places in the Mali C55 ISP pipeline, known as "tap points". This high-level block diagram is intended to explain where in the processing flow the statistics can be drawn from::”h]”(hŒ)The layout of the buffer is described by ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:type:`mali_c55_stats_buffer`”h]”hŒliteral”“”)�”}”(hj' h]”hŒmali_c55_stats_buffer”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”(jï Œc”Œc-type”eh"]”h$]”h&]”uh1j) hj% ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”joŒ refdomain”j5 Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j Œmali_c55_stats_buffer”uh1hh³hÇh´Mehj ubhXr, but broadly statistics are generated to support three image processing algorithms; AEXP (Auto-Exposure), AWB (Auto-White Balance) and AF (Auto-Focus). These stats can be drawn from various places in the Mali C55 ISP pipeline, known as “tap pointsâ€�. This high-level block diagram is intended to explain where in the processing flow the statistics can be drawn from:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mehj´ h²hubjB)�”}”(hX2 +--> AEXP-2 +----> AEXP-1 +--> AF-0 | +----> AF-1 | | | | +---------+ | +--------------+ | +--------------+ | | Input +-+-->+ Digital Gain +---+-->+ Black Level +---+---+ +---------+ +--------------+ +--------------+ | +-----------------------------------------------------------------+ | | +--------------+ +---------+ +----------------+ +-->| Sinter Noise +-+ White +--+--->| Lens Shading +--+---------------+ | Reduction | | Balance | | | | | | +--------------+ +---------+ | +----------------+ | | +---> AEXP-0 (A) +--> AEXP-0 (B) | +--------------------------------------------------------------------------+ | | +----------------+ +--------------+ +----------------+ +-->| Tone mapping +-+--->| Demosaicing +->+ Purple Fringe +-+-----------+ | | | +--------------+ | Correction | | | +----------------+ +-> AEXP-IRIDIX +----------------+ +---> AWB-0 | +----------------------------------------------------------------------------+ | +-------------+ +-------------+ +------------------->| Colour +---+--->| Output | | Correction | | | Pipelines | +-------------+ | +-------------+ +--> AWB-1”h]”hX2 +--> AEXP-2 +----> AEXP-1 +--> AF-0 | +----> AF-1 | | | | +---------+ | +--------------+ | +--------------+ | | Input +-+-->+ Digital Gain +---+-->+ Black Level +---+---+ +---------+ +--------------+ +--------------+ | +-----------------------------------------------------------------+ | | +--------------+ +---------+ +----------------+ +-->| Sinter Noise +-+ White +--+--->| Lens Shading +--+---------------+ | Reduction | | Balance | | | | | | +--------------+ +---------+ | +----------------+ | | +---> AEXP-0 (A) +--> AEXP-0 (B) | +--------------------------------------------------------------------------+ | | +----------------+ +--------------+ +----------------+ +-->| Tone mapping +-+--->| Demosaicing +->+ Purple Fringe +-+-----------+ | | | +--------------+ | Correction | | | +----------------+ +-> AEXP-IRIDIX +----------------+ +---> AWB-0 | +----------------------------------------------------------------------------+ | +-------------+ +-------------+ +------------------->| Colour +---+--->| Output | | Correction | | | Pipelines | +-------------+ | +-------------+ +--> AWB-1”…”�”}”hjQ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jAh³hÇh´Mlhj´ h²hubhï)�”}”(hXBy default all statistics are drawn from the 0th tap point for each algorithm; I.E. AEXP statistics from AEXP-0 (A), AWB statistics from AWB-0 and AF statistics from AF-0. This is configurable for AEXP and AWB statsistics through programming the ISP's parameters.”h]”hX By default all statistics are drawn from the 0th tap point for each algorithm; I.E. AEXP statistics from AEXP-0 (A), AWB statistics from AWB-0 and AF statistics from AF-0. This is configurable for AEXP and AWB statsistics through programming the ISP’s parameters.”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M†hj´ h²hubj˜ )�”}”(hŒ.. _mali-c55-3a-params:”h]”h}”(h]”h ]”h"]”h$]”h&]”jlŒmali-c55-3a-params”uh1j— h´M‹hj´ h²hh³hÇubeh}”(h]”(Œcapturing-isp-statistics”j£ eh ]”h"]”(Œcapturing isp statistics”Œmali-c55-3a-stats”eh$]”h&]”uh1hÈhhÊh²hh³hÇh´MTŒexpect_referenced_by_name”}”j~ j™ sŒexpect_referenced_by_id”}”j£ j™ subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒProgramming ISP Parameters”h]”hŒProgramming ISP Parameters”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj… h²hh³hÇh´MŽubhï)�”}”(hŒñThe ISP can be programmed with various parameters from userspace to apply to the hardware before and during video stream. This allows userspace to dynamically change values such as black level, white balance and lens shading gains and so on.”h]”hŒñThe ISP can be programmed with various parameters from userspace to apply to the hardware before and during video stream. This allows userspace to dynamically change values such as black level, white balance and lens shading gains and so on.”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M�hj… h²hubhï)�”}”(hŒÚThe buffer format and how to populate it are described by the :ref:`V4L2_META_FMT_MALI_C55_PARAMS ` format, which should be set as the data format for the `mali-c55 3a params` video node.”h]”(hŒ>The buffer format and how to populate it are described by the ”…”�”}”(hj¤ h²hh³Nh´Nubh)�”}”(hŒD:ref:`V4L2_META_FMT_MALI_C55_PARAMS `”h]”jä )�”}”(hj® h]”hŒV4L2_META_FMT_MALI_C55_PARAMS”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”(jï Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jã hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”joŒ refdomain”jº Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj Œv4l2-meta-fmt-mali-c55-params”uh1hh³hÇh´M•hj¤ ubhŒ8 format, which should be set as the data format for the ”…”�”}”(hj¤ h²hh³Nh´NubjÏ)�”}”(hŒ`mali-c55 3a params`”h]”hŒmali-c55 3a params”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎhj¤ ubhŒ video node.”…”�”}”(hj¤ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M•hj… h²hubeh}”(h]”(Œprogramming-isp-parameters”jw eh ]”h"]”(Œprogramming isp parameters”Œmali-c55-3a-params”eh$]”h&]”uh1hÈhhÊh²hh³hÇh´MŽj� }”jî jm sjƒ }”jw jm subhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ References”h]”hŒ References”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjó h²hh³hÇh´MšubhŒfootnote”“”)�”}”(hŒ&https://git.linuxtv.org/v4l-utils.git/”h]”(hŒlabel”“”)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhï)�”}”(hj h]”hŒ reference”“”)�”}”(hj h]”hŒ&https://git.linuxtv.org/v4l-utils.git/”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M›hj ubeh}”(h]”jCah ]”h"]”Œ1”ah$]”h&]”j>ajnjouh1j h³hÇh´M›hjó h²hjpKubj )�”}”(hŒ&https://git.ideasonboard.org/yavta.git”h]”(j )�”}”(hŒ2”h]”hŒ2”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj: ubhï)�”}”(hj< h]”j )�”}”(hj< h]”hŒ&https://git.ideasonboard.org/yavta.git”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j< uh1j hjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mœhj: ubeh}”(h]”jWah ]”h"]”Œ2”ah$]”h&]”jRajnjouh1j h³hÇh´Mœhjó h²hjpKubj )�”}”(hŒ-https://developer.arm.com/Processors/Mali-C55”h]”(j )�”}”(hŒ3”h]”hŒ3”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj ubhï)�”}”(hjl h]”j )�”}”(hjl h]”hŒ-https://developer.arm.com/Processors/Mali-C55”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jl uh1j hj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M�hjj ubeh}”(h]”jmah ]”h"]”Œ3”ah$]”h&]”jgajnjouh1j h³hÇh´M�hjó h²hjpKubeh}”(h]”Œ references”ah ]”h"]”Œ references”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Mšubeh}”(h]”Œ*arm-mali-c55-image-signal-processor-driver”ah ]”h"]”Œ*arm mali-c55 image signal processor driver”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”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”}”(Œ3”]”j]aŒ1”]”j4aŒ2”]”jHauŒrefids”}”(j£ ]”j™ ajw ]”jm auŒnameids”}”(j§ j¤ jjjVjSjjjj j± j® j™j–jÐjÍjö jó j€ j} j· j´ jî jë jW jT j© j¦ j~ j£ j} jz jî jw jí jê jŸ jœ j7 jCjg jWj— jmuŒ nametypes”}”(j§ ‰j‰jV‰j‰j‰j± ‰j™‰jЉjö ‰j€ ‰j· ‰jî ‰jW ‰j© ‰j~ ˆj} ‰jî ˆjí ‰jŸ ‰j7 ˆjg ˆj— ˆuh}”(j¤ hÊjhÝjSj"jjYj j jgj]j® jj>j4jRjHj–jbjÍjœjó jÓj} jL j´ jƒ jë jº jT jù j¦ jZ j£ j´ jz j´ jw j… jê j… jœ jó jCj jWj: jmjj uŒ footnote_refs”}”(j ]”j]aj ]”j4aj ]”jHauŒ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”(j j: jj eŒ 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Œ7Hyperlink target "mali-c55-3a-stats" 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”MQuh1j; ubj< )�”}”(hhh]”hï)�”}”(hhh]”hŒ8Hyperlink target "mali-c55-3a-params" is not referenced.”…”�”}”hj[ sbah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjX ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jU Œsource”hÇŒline”M‹uh1j; ubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.