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.

Dependency Surface

Detected Declarations

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

Implementation Notes