include/media/drv-intf/exynos-fimc.h

Source file repositories/reference/linux-study-clean/include/media/drv-intf/exynos-fimc.h

File Facts

System
Linux kernel
Corpus path
include/media/drv-intf/exynos-fimc.h
Extension
.h
Size
4696 bytes
Lines
158
Domain
Repository Root And Misc
Bucket
include
Inferred role
Repository Root And Misc: implementation source
Status
source implementation candidate

Why This File Exists

Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.

Dependency Surface

Detected Declarations

Annotated Snippet

struct fimc_source_info {
	enum fimc_bus_type fimc_bus_type;
	enum fimc_bus_type sensor_bus_type;
	u16 flags;
	u16 mux_id;
};

/*
 * v4l2_device notification id. This is only for internal use in the kernel.
 * Sensor subdevs should issue S5P_FIMC_TX_END_NOTIFY notification in single
 * frame capture mode when there is only one VSYNC pulse issued by the sensor
 * at beginning of the frame transmission.
 */
#define S5P_FIMC_TX_END_NOTIFY _IO('e', 0)

#define FIMC_MAX_PLANES	3

/**
 * struct fimc_fmt - color format data structure
 * @mbus_code: media bus pixel code, -1 if not applicable
 * @fourcc: fourcc code for this format, 0 if not applicable
 * @color: the driver's private color format id
 * @memplanes: number of physically non-contiguous data planes
 * @colplanes: number of physically contiguous data planes
 * @colorspace: v4l2 colorspace (V4L2_COLORSPACE_*)
 * @depth: per plane driver's private 'number of bits per pixel'
 * @mdataplanes: bitmask indicating meta data plane(s), (1 << plane_no)
 * @flags: flags indicating which operation mode format applies to
 */
struct fimc_fmt {
	u32 mbus_code;
	u32	fourcc;
	u32	color;
	u16	memplanes;
	u16	colplanes;
	u8	colorspace;
	u8	depth[FIMC_MAX_PLANES];
	u16	mdataplanes;
	u16	flags;
#define FMT_FLAGS_CAM		(1 << 0)
#define FMT_FLAGS_M2M_IN	(1 << 1)
#define FMT_FLAGS_M2M_OUT	(1 << 2)
#define FMT_FLAGS_M2M		(1 << 1 | 1 << 2)
#define FMT_HAS_ALPHA		(1 << 3)
#define FMT_FLAGS_COMPRESSED	(1 << 4)
#define FMT_FLAGS_WRITEBACK	(1 << 5)
#define FMT_FLAGS_RAW_BAYER	(1 << 6)
#define FMT_FLAGS_YUV		(1 << 7)
};

struct exynos_media_pipeline;

/*
 * Media pipeline operations to be called from within a video node,  i.e. the
 * last entity within the pipeline. Implemented by related media device driver.
 */
struct exynos_media_pipeline_ops {
	int (*prepare)(struct exynos_media_pipeline *p,
						struct media_entity *me);
	int (*unprepare)(struct exynos_media_pipeline *p);
	int (*open)(struct exynos_media_pipeline *p, struct media_entity *me,
							bool resume);
	int (*close)(struct exynos_media_pipeline *p);
	int (*set_stream)(struct exynos_media_pipeline *p, bool state);
};

struct exynos_video_entity {
	struct video_device vdev;
	struct exynos_media_pipeline *pipe;
};

struct exynos_media_pipeline {
	struct media_pipeline mp;
	const struct exynos_media_pipeline_ops *ops;
};

static inline struct exynos_video_entity *vdev_to_exynos_video_entity(
					struct video_device *vdev)
{
	return container_of(vdev, struct exynos_video_entity, vdev);
}

#define fimc_pipeline_call(ent, op, args...)				  \
	((!(ent) || !(ent)->pipe) ? -ENOENT : \
	(((ent)->pipe->ops && (ent)->pipe->ops->op) ? \
	(ent)->pipe->ops->op(((ent)->pipe), ##args) : -ENOIOCTLCMD))	  \

#endif /* S5P_FIMC_H_ */

Annotation

Implementation Notes