drivers/staging/media/atomisp/pci/ia_css_frame_format.h
Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/ia_css_frame_format.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/staging/media/atomisp/pci/ia_css_frame_format.h- Extension
.h- Size
- 4478 bytes
- Lines
- 94
- Domain
- Driver Families
- Bucket
- drivers/staging
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
enum ia_css_frame_format
Annotated Snippet
#ifndef __IA_CSS_FRAME_FORMAT_H
#define __IA_CSS_FRAME_FORMAT_H
/* @file
* This file contains information about formats supported in the ISP
*/
/* Frame formats, some of these come from fourcc.org, others are
better explained by video4linux2. The NV11 seems to be described only
on MSDN pages, but even those seem to be gone now.
Frames can come in many forms, the main categories are RAW, RGB and YUV
(or YCbCr). The YUV frames come in 4 flavors, determined by how the U and V
values are subsampled:
1. YUV420: hor = 2, ver = 2
2. YUV411: hor = 4, ver = 1
3. YUV422: hor = 2, ver = 1
4. YUV444: hor = 1, ver = 1
Warning: not all frame formats are supported as input or output to/from ISP.
Some of these formats are therefore not defined in the output table module.
Modifications in below frame format enum can require modifications in the
output table module.
Warning2: Throughout the CSS code assumptions are made on the order
of formats in this enumeration type, or some sort of copy is maintained.
The following files are identified:
- FileSupport.h
- css/isp/kernels/fc/fc_1.0/formats.isp.c
- css/isp/kernels/output/output_1.0/output_table.isp.c
- css/isp/kernels/output/sc_output_1.0/formats.hive.c
- css/isp/modes/interface/isp_formats.isp.h
- css/bxt_sandbox/psyspoc/interface/ia_css_pg_info.h
- css/bxt_sandbox/psysapi/data/interface/ia_css_program_group_data.h
- css/bxt_sandbox/isysapi/interface/ia_css_isysapi_fw_types.h
*/
enum ia_css_frame_format {
IA_CSS_FRAME_FORMAT_NV11 = 0, /** 12 bit YUV 411, Y, UV plane */
IA_CSS_FRAME_FORMAT_NV12, /** 12 bit YUV 420, Y, UV plane */
IA_CSS_FRAME_FORMAT_NV12_16, /** 16 bit YUV 420, Y, UV plane */
IA_CSS_FRAME_FORMAT_NV12_TILEY, /** 12 bit YUV 420, Intel proprietary tiled format, TileY */
IA_CSS_FRAME_FORMAT_NV16, /** 16 bit YUV 422, Y, UV plane */
IA_CSS_FRAME_FORMAT_NV21, /** 12 bit YUV 420, Y, VU plane */
IA_CSS_FRAME_FORMAT_NV61, /** 16 bit YUV 422, Y, VU plane */
IA_CSS_FRAME_FORMAT_YV12, /** 12 bit YUV 420, Y, V, U plane */
IA_CSS_FRAME_FORMAT_YV16, /** 16 bit YUV 422, Y, V, U plane */
IA_CSS_FRAME_FORMAT_YUV420, /** 12 bit YUV 420, Y, U, V plane */
IA_CSS_FRAME_FORMAT_YUV420_16, /** yuv420, 16 bits per subpixel */
IA_CSS_FRAME_FORMAT_YUV422, /** 16 bit YUV 422, Y, U, V plane */
IA_CSS_FRAME_FORMAT_YUV422_16, /** yuv422, 16 bits per subpixel */
IA_CSS_FRAME_FORMAT_UYVY, /** 16 bit YUV 422, UYVY interleaved */
IA_CSS_FRAME_FORMAT_YUYV, /** 16 bit YUV 422, YUYV interleaved */
IA_CSS_FRAME_FORMAT_YUV444, /** 24 bit YUV 444, Y, U, V plane */
IA_CSS_FRAME_FORMAT_YUV_LINE, /** Internal format, 2 y lines followed
by a uvinterleaved line */
IA_CSS_FRAME_FORMAT_RAW, /** RAW, 1 plane */
IA_CSS_FRAME_FORMAT_RGB565, /** 16 bit RGB, 1 plane. Each 3 sub
pixels are packed into one 16 bit
value, 5 bits for R, 6 bits for G
and 5 bits for B. */
IA_CSS_FRAME_FORMAT_PLANAR_RGB888, /** 24 bit RGB, 3 planes */
IA_CSS_FRAME_FORMAT_RGBA888, /** 32 bit RGBA, 1 plane, A=Alpha
(alpha is unused) */
IA_CSS_FRAME_FORMAT_QPLANE6, /** Internal, for advanced ISP */
IA_CSS_FRAME_FORMAT_BINARY_8, /** byte stream, used for jpeg. For
frames of this type, we set the
height to 1 and the width to the
number of allocated bytes. */
IA_CSS_FRAME_FORMAT_MIPI, /** MIPI frame, 1 plane */
IA_CSS_FRAME_FORMAT_RAW_PACKED, /** RAW, 1 plane, packed */
IA_CSS_FRAME_FORMAT_CSI_MIPI_YUV420_8, /** 8 bit per Y/U/V.
Y odd line; UYVY
interleaved even line */
IA_CSS_FRAME_FORMAT_CSI_MIPI_LEGACY_YUV420_8, /** Legacy YUV420. UY odd
line; VY even line */
IA_CSS_FRAME_FORMAT_CSI_MIPI_YUV420_10 /** 10 bit per Y/U/V. Y odd
line; UYVY interleaved
even line */
};
/* NOTE: IA_CSS_FRAME_FORMAT_NUM was purposely defined outside of enum type ia_css_frame_format, */
/* because of issues this would cause with the Clockwork code checking tool. */
#define IA_CSS_FRAME_FORMAT_NUM (IA_CSS_FRAME_FORMAT_CSI_MIPI_YUV420_10 + 1)
/* Number of valid output frame formats for ISP **/
#define IA_CSS_FRAME_OUT_FORMAT_NUM (IA_CSS_FRAME_FORMAT_RGBA888 + 1)
#endif /* __IA_CSS_FRAME_FORMAT_H */
Annotation
- Detected declarations: `enum ia_css_frame_format`.
- Atlas domain: Driver Families / drivers/staging.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.