linux-stable/drivers/staging/media/imx/imx-ic.h
Steve Longerbeam f0d9c8924e [media] media: imx: Add IC subdev drivers
This is a set of three media entity subdevice drivers for the i.MX
Image Converter:

- Pre-process Router: Takes input frames from CSI0, CSI1, or VDIC.
  Two output pads enable either or both of the preprocess tasks
  below. If the input is from one of the CSIs, both proprocess task
  links can be enabled to process frames from that CSI simultaneously.
  If the input is the VDIC, only the Pre-processing Viewfinder task
  link can be enabled.

- Pre-processing Encode task: video frames are routed directly from
  the CSI and can be scaled, color-space converted, and rotated.
  Scaled output is limited to 1024x1024 resolution. Output frames
  are routed to the prpenc capture device.

- Pre-processing Viewfinder task: this task can perform the same
  conversions as the pre-process encode task, but in addition can
  be used for hardware motion compensated deinterlacing. Frames can
  come either directly from the CSI or from the VDIC. Scaled output
  is limited to 1024x1024 resolution. Output frames are routed to
  the prpvf capture device.

Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2017-06-20 07:41:24 -03:00

38 lines
973 B
C

/*
* V4L2 Image Converter Subdev for Freescale i.MX5/6 SOC
*
* Copyright (c) 2016 Mentor Graphics Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
#ifndef _IMX_IC_H
#define _IMX_IC_H
#include <media/v4l2-subdev.h>
struct imx_ic_priv {
struct device *dev;
struct v4l2_subdev sd;
int ipu_id;
int task_id;
void *prp_priv;
void *task_priv;
};
struct imx_ic_ops {
const struct v4l2_subdev_ops *subdev_ops;
const struct v4l2_subdev_internal_ops *internal_ops;
const struct media_entity_operations *entity_ops;
int (*init)(struct imx_ic_priv *ic_priv);
void (*remove)(struct imx_ic_priv *ic_priv);
};
extern struct imx_ic_ops imx_ic_prp_ops;
extern struct imx_ic_ops imx_ic_prpencvf_ops;
extern struct imx_ic_ops imx_ic_pp_ops;
#endif