drivers/staging/media/atomisp/pci/ia_css_frame_public.h
Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/ia_css_frame_public.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/staging/media/atomisp/pci/ia_css_frame_public.h- Extension
.h- Size
- 8767 bytes
- Lines
- 254
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
media/videobuf2-v4l2.htype_support.hia_css_err.hia_css_types.hia_css_frame_format.hia_css_buffer.h
Detected Declarations
struct ia_css_frame_planestruct ia_css_frame_binary_planestruct ia_css_frame_yuv_planesstruct ia_css_frame_nv_planesstruct ia_css_frame_rgb_planesstruct ia_css_frame_plane6_planesstruct ia_css_crop_infostruct ia_css_frame_infostruct ia_css_frameenum ia_css_bayer_orderenum ia_css_frame_delayfunction ia_css_frame_get_info
Annotated Snippet
struct ia_css_frame_plane {
unsigned int height; /** height of a plane in lines */
unsigned int width; /** width of a line, in DMA elements, note that
for RGB565 the three subpixels are stored in
one element. For all other formats this is
the number of subpixels per line. */
unsigned int stride; /** stride of a line in bytes */
unsigned int offset; /** offset in bytes to start of frame data.
offset is wrt data field in ia_css_frame */
};
/* Binary "plane". This is used to story binary streams such as jpeg
* images. This is not actually a real plane.
*/
struct ia_css_frame_binary_plane {
unsigned int size; /** number of bytes in the stream */
struct ia_css_frame_plane data; /** plane */
};
/* Container for planar YUV frames. This contains 3 planes.
*/
struct ia_css_frame_yuv_planes {
struct ia_css_frame_plane y; /** Y plane */
struct ia_css_frame_plane u; /** U plane */
struct ia_css_frame_plane v; /** V plane */
};
/* Container for semi-planar YUV frames.
*/
struct ia_css_frame_nv_planes {
struct ia_css_frame_plane y; /** Y plane */
struct ia_css_frame_plane uv; /** UV plane */
};
/* Container for planar RGB frames. Each color has its own plane.
*/
struct ia_css_frame_rgb_planes {
struct ia_css_frame_plane r; /** Red plane */
struct ia_css_frame_plane g; /** Green plane */
struct ia_css_frame_plane b; /** Blue plane */
};
/* Container for 6-plane frames. These frames are used internally
* in the advanced ISP only.
*/
struct ia_css_frame_plane6_planes {
struct ia_css_frame_plane r; /** Red plane */
struct ia_css_frame_plane r_at_b; /** Red at blue plane */
struct ia_css_frame_plane gr; /** Red-green plane */
struct ia_css_frame_plane gb; /** Blue-green plane */
struct ia_css_frame_plane b; /** Blue plane */
struct ia_css_frame_plane b_at_r; /** Blue at red plane */
};
/* Crop info struct - stores the lines to be cropped in isp */
struct ia_css_crop_info {
/* the final start column and start line
* sum of lines to be cropped + bayer offset
*/
unsigned int start_column;
unsigned int start_line;
};
/* Frame info struct. This describes the contents of an image frame buffer.
*/
struct ia_css_frame_info {
struct ia_css_resolution res; /** Frame resolution (valid data) */
unsigned int padded_width; /** stride of line in memory (in pixels) */
enum ia_css_frame_format format; /** format of the frame data */
unsigned int raw_bit_depth; /** number of valid bits per pixel,
only valid for RAW bayer frames */
enum ia_css_bayer_order raw_bayer_order; /** bayer order, only valid
for RAW bayer frames */
/* the params below are computed based on bayer_order
* we can remove the raw_bayer_order if it is redundant
* keeping it for now as bxt and fpn code seem to use it
*/
struct ia_css_crop_info crop_info;
};
#define IA_CSS_BINARY_DEFAULT_FRAME_INFO { \
.format = IA_CSS_FRAME_FORMAT_NUM, \
.raw_bayer_order = IA_CSS_BAYER_ORDER_NUM, \
}
/**
* Specifies the DVS loop delay in "frame periods"
*/
enum ia_css_frame_delay {
IA_CSS_FRAME_DELAY_0, /** Frame delay = 0 */
Annotation
- Immediate include surface: `media/videobuf2-v4l2.h`, `type_support.h`, `ia_css_err.h`, `ia_css_types.h`, `ia_css_frame_format.h`, `ia_css_buffer.h`.
- Detected declarations: `struct ia_css_frame_plane`, `struct ia_css_frame_binary_plane`, `struct ia_css_frame_yuv_planes`, `struct ia_css_frame_nv_planes`, `struct ia_css_frame_rgb_planes`, `struct ia_css_frame_plane6_planes`, `struct ia_css_crop_info`, `struct ia_css_frame_info`, `struct ia_css_frame`, `enum ia_css_bayer_order`.
- 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.