/** * struct camif_fmt - pixel format description * @fourcc: fourcc code for this format, 0 if not applicable * @color: a corresponding enum img_fmt * @colplanes: number of physically contiguous data planes * @flags: indicate for which SoCs revisions this format is valid * @depth: bits per pixel (total) * @ybpp: number of luminance bytes per pixel
*/ struct camif_fmt {
u32 fourcc;
u32 color;
u16 colplanes;
u16 flags;
u8 depth;
u8 ybpp;
};
/** * struct camif_dma_offset - pixel offset information for DMA * @initial: offset (in pixels) to first pixel * @line: offset (in pixels) from end of line to start of next line
*/ struct camif_dma_offset { int initial; int line;
};
/** * struct camif_vp - CAMIF data processing path structure (codec/preview) * @irq_queue: interrupt handling waitqueue * @irq: interrupt number for this data path * @camif: pointer to the camif structure * @pad: media pad for the video node * @vdev: video device * @ctrl_handler: video node controls handler * @owner: file handle that own the streaming * @vb_queue: vb2 buffer queue * @pending_buf_q: pending (empty) buffers queue head * @active_buf_q: active (being written) buffers queue head * @active_buffers: counter of buffer set up at the DMA engine * @buf_index: identifier of a last empty buffer set up in H/W * @frame_sequence: image frame sequence counter * @reqbufs_count: the number of buffers requested * @scaler: the scaler structure * @out_fmt: pixel format at this video path output * @payload: the output data frame payload size * @out_frame: the output pixel resolution * @state: the video path's state * @fmt_flags: flags determining supported pixel formats * @id: CAMIF id, 0 - codec, 1 - preview * @rotation: current image rotation value * @hflip: apply horizontal flip if set * @vflip: apply vertical flip if set * @offset: register offset
*/ struct camif_vp {
wait_queue_head_t irq_queue; int irq; struct camif_dev *camif; struct media_pad pad; struct video_device vdev; struct v4l2_ctrl_handler ctrl_handler; struct v4l2_fh *owner; struct vb2_queue vb_queue; struct list_head pending_buf_q; struct list_head active_buf_q; unsignedint active_buffers; unsignedint buf_index; unsignedint frame_sequence; unsignedint reqbufs_count; struct camif_scaler scaler; conststruct camif_fmt *out_fmt; unsignedint payload; struct camif_frame out_frame; unsignedint state;
u16 fmt_flags;
u8 id;
u16 rotation;
u8 hflip;
u8 vflip; unsignedint offset;
};
/** * struct camif_dev - the CAMIF driver private data structure * @media_dev: top-level media device structure * @v4l2_dev: root v4l2_device * @subdev: camera interface ("catchcam") subdev * @mbus_fmt: camera input media bus format * @camif_crop: camera input interface crop rectangle * @pads: the camif subdev's media pads * @stream_count: the camera interface streaming reference counter * @sensor: image sensor data structure * @m_pipeline: video entity pipeline description * @ctrl_handler: v4l2 control handler (owned by @subdev) * @ctrl_test_pattern: V4L2_CID_TEST_PATTERN control * @ctrl_colorfx: V4L2_CID_COLORFX control * @ctrl_colorfx_cbcr: V4L2_CID_COLORFX_CBCR control * @test_pattern: test pattern * @colorfx: color effect * @colorfx_cb: Cb value for V4L2_COLORFX_SET_CBCR * @colorfx_cr: Cr value for V4L2_COLORFX_SET_CBCR * @vp: video path (DMA) description (codec/preview) * @variant: variant information for this device * @dev: pointer to the CAMIF device struct * @pdata: a copy of the driver's platform data * @clock: clocks required for the CAMIF operation * @lock: mutex protecting this data structure * @slock: spinlock protecting CAMIF registers * @io_base: start address of the mmapped CAMIF registers
*/ struct camif_dev { struct media_device media_dev; struct v4l2_device v4l2_dev; struct v4l2_subdev subdev; struct v4l2_mbus_framefmt mbus_fmt; struct v4l2_rect camif_crop; struct media_pad pads[CAMIF_SD_PADS_NUM]; int stream_count;
struct cam_sensor { struct v4l2_subdev *sd; short power_count; short stream_count;
} sensor; struct media_pipeline *m_pipeline;
/** * struct camif_buffer - the camif video buffer structure * @vb: vb2 buffer * @list: list head for the buffers queue * @paddr: DMA start addresses * @index: an identifier of this buffer at the DMA engine
*/ struct camif_buffer { struct vb2_v4l2_buffer vb; struct list_head list; struct camif_addr paddr; unsignedint index;
};
conststruct camif_fmt *s3c_camif_find_format(struct camif_vp *vp, const u32 *pixelformat, int index); int s3c_camif_register_video_node(struct camif_dev *camif, int idx); void s3c_camif_unregister_video_node(struct camif_dev *camif, int idx);
irqreturn_t s3c_camif_irq_handler(int irq, void *priv); int s3c_camif_create_subdev(struct camif_dev *camif); void s3c_camif_unregister_subdev(struct camif_dev *camif); int s3c_camif_set_defaults(struct camif_dev *camif); int s3c_camif_get_scaler_config(struct camif_vp *vp, struct camif_scaler *scaler);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.