Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) .. include:: <isonum.txt>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) OMAP 3 Image Signal Processor (ISP) driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) ==========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) Copyright |copy| 2010 Nokia Corporation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) Copyright |copy| 2009 Texas Instruments, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) Sakari Ailus <sakari.ailus@iki.fi>, David Cohen <dacohen@gmail.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) Events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) ------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) The OMAP 3 ISP driver does support the V4L2 event interface on CCDC and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) statistics (AEWB, AF and histogram) subdevs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) The CCDC subdev produces V4L2_EVENT_FRAME_SYNC type event on HS_VS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) interrupt which is used to signal frame start. Earlier version of this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) driver used V4L2_EVENT_OMAP3ISP_HS_VS for this purpose. The event is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) triggered exactly when the reception of the first line of the frame starts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) in the CCDC module. The event can be subscribed on the CCDC subdev.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) (When using parallel interface one must pay account to correct configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) of the VS signal polarity. This is automatically correct when using the serial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) receivers.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) Each of the statistics subdevs is able to produce events. An event is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) generated whenever a statistics buffer can be dequeued by a user space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) application using the VIDIOC_OMAP3ISP_STAT_REQ IOCTL. The events available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) - V4L2_EVENT_OMAP3ISP_AEWB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) - V4L2_EVENT_OMAP3ISP_AF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) - V4L2_EVENT_OMAP3ISP_HIST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) The type of the event data is struct omap3isp_stat_event_status for these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) ioctls. If there is an error calculating the statistics, there will be an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) event as usual, but no related statistics buffer. In this case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) omap3isp_stat_event_status.buf_err is set to non-zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) Private IOCTLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) --------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) The OMAP 3 ISP driver supports standard V4L2 IOCTLs and controls where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) possible and practical. Much of the functions provided by the ISP, however,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) does not fall under the standard IOCTLs --- gamma tables and configuration of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) statistics collection are examples of such.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) In general, there is a private ioctl for configuring each of the blocks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) containing hardware-dependent functions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) The following private IOCTLs are supported:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) - VIDIOC_OMAP3ISP_CCDC_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) - VIDIOC_OMAP3ISP_PRV_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) - VIDIOC_OMAP3ISP_AEWB_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) - VIDIOC_OMAP3ISP_HIST_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) - VIDIOC_OMAP3ISP_AF_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) - VIDIOC_OMAP3ISP_STAT_REQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) - VIDIOC_OMAP3ISP_STAT_EN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) The parameter structures used by these ioctls are described in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) include/linux/omap3isp.h. The detailed functions of the ISP itself related to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) a given ISP block is described in the Technical Reference Manuals (TRMs) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) see the end of the document for those.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) While it is possible to use the ISP driver without any use of these private
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) IOCTLs it is not possible to obtain optimal image quality this way. The AEWB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) AF and histogram modules cannot be used without configuring them using the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) appropriate private IOCTLs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) CCDC and preview block IOCTLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) -----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) The VIDIOC_OMAP3ISP_CCDC_CFG and VIDIOC_OMAP3ISP_PRV_CFG IOCTLs are used to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) configure, enable and disable functions in the CCDC and preview blocks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) respectively. Both IOCTLs control several functions in the blocks they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) control. VIDIOC_OMAP3ISP_CCDC_CFG IOCTL accepts a pointer to struct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) omap3isp_ccdc_update_config as its argument. Similarly VIDIOC_OMAP3ISP_PRV_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) accepts a pointer to struct omap3isp_prev_update_config. The definition of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) both structures is available in [#]_.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) The update field in the structures tells whether to update the configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) for the specific function and the flag tells whether to enable or disable the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) function.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) The update and flag bit masks accept the following values. Each separate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) functions in the CCDC and preview blocks is associated with a flag (either
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) disable or enable; part of the flag field in the structure) and a pointer to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) configuration data for the function.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) Valid values for the update and flag fields are listed here for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) VIDIOC_OMAP3ISP_CCDC_CFG. Values may be or'ed to configure more than one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) function in the same IOCTL call.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) - OMAP3ISP_CCDC_ALAW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) - OMAP3ISP_CCDC_LPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) - OMAP3ISP_CCDC_BLCLAMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) - OMAP3ISP_CCDC_BCOMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) - OMAP3ISP_CCDC_FPC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) - OMAP3ISP_CCDC_CULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) - OMAP3ISP_CCDC_CONFIG_LSC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) - OMAP3ISP_CCDC_TBL_LSC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) The corresponding values for the VIDIOC_OMAP3ISP_PRV_CFG are here:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) - OMAP3ISP_PREV_LUMAENH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) - OMAP3ISP_PREV_INVALAW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) - OMAP3ISP_PREV_HRZ_MED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) - OMAP3ISP_PREV_CFA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) - OMAP3ISP_PREV_CHROMA_SUPP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) - OMAP3ISP_PREV_WB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) - OMAP3ISP_PREV_BLKADJ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) - OMAP3ISP_PREV_RGB2RGB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) - OMAP3ISP_PREV_COLOR_CONV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) - OMAP3ISP_PREV_YC_LIMIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) - OMAP3ISP_PREV_DEFECT_COR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) - OMAP3ISP_PREV_GAMMABYPASS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) - OMAP3ISP_PREV_DRK_FRM_CAPTURE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) - OMAP3ISP_PREV_DRK_FRM_SUBTRACT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) - OMAP3ISP_PREV_LENS_SHADING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) - OMAP3ISP_PREV_NF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) - OMAP3ISP_PREV_GAMMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) The associated configuration pointer for the function may not be NULL when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) enabling the function. When disabling a function the configuration pointer is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) ignored.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) Statistic blocks IOCTLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) The statistics subdevs do offer more dynamic configuration options than the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) other subdevs. They can be enabled, disable and reconfigured when the pipeline
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) is in streaming state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) The statistics blocks always get the input image data from the CCDC (as the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) histogram memory read isn't implemented). The statistics are dequeueable by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) the user from the statistics subdev nodes using private IOCTLs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) The private IOCTLs offered by the AEWB, AF and histogram subdevs are heavily
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) reflected by the register level interface offered by the ISP hardware. There
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) are aspects that are purely related to the driver implementation and these are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) discussed next.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) VIDIOC_OMAP3ISP_STAT_EN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) This private IOCTL enables/disables a statistic module. If this request is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) done before streaming, it will take effect as soon as the pipeline starts to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) stream.  If the pipeline is already streaming, it will take effect as soon as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) the CCDC becomes idle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) VIDIOC_OMAP3ISP_AEWB_CFG, VIDIOC_OMAP3ISP_HIST_CFG and VIDIOC_OMAP3ISP_AF_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) -----------------------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) Those IOCTLs are used to configure the modules. They require user applications
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) to have an in-depth knowledge of the hardware. Most of the fields explanation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) can be found on OMAP's TRMs. The two following fields common to all the above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) configure private IOCTLs require explanation for better understanding as they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) are not part of the TRM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) omap3isp_[h3a_af/h3a_aewb/hist]\_config.buf_size:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) The modules handle their buffers internally. The necessary buffer size for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) module's data output depends on the requested configuration. Although the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) driver supports reconfiguration while streaming, it does not support a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) reconfiguration which requires bigger buffer size than what is already
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) internally allocated if the module is enabled. It will return -EBUSY on this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) case. In order to avoid such condition, either disable/reconfigure/enable the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) module or request the necessary buffer size during the first configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) while the module is disabled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) The internal buffer size allocation considers the requested configuration's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) minimum buffer size and the value set on buf_size field. If buf_size field is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) out of [minimum, maximum] buffer size range, it's clamped to fit in there.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) The driver then selects the biggest value. The corrected buf_size value is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) written back to user application.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) omap3isp_[h3a_af/h3a_aewb/hist]\_config.config_counter:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) As the configuration doesn't take effect synchronously to the request, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) driver must provide a way to track this information to provide more accurate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) data. After a configuration is requested, the config_counter returned to user
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) space application will be an unique value associated to that request. When
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) user application receives an event for buffer availability or when a new
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) buffer is requested, this config_counter is used to match a buffer data and a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) configuration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) VIDIOC_OMAP3ISP_STAT_REQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) ------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) Send to user space the oldest data available in the internal buffer queue and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) discards such buffer afterwards. The field omap3isp_stat_data.frame_number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) matches with the video buffer's field_count.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) References
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) ----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) .. [#] include/linux/omap3isp.h