[go: nahoru, domu]

19a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki/*
29a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * Samsung EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver
39a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki *
49a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * Copyright (C) 2013 Samsung Electronics Co., Ltd.
59a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki *
69a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * Authors: Sylwester Nawrocki <s.nawrocki@samsung.com>
79a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki *          Younghwan Joo <yhwan.joo@samsung.com>
89a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki *
99a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * This program is free software; you can redistribute it and/or modify
109a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * it under the terms of the GNU General Public License version 2 as
119a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * published by the Free Software Foundation.
129a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki */
139a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#ifndef FIMC_ISP_H_
149a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_H_
159a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
169a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <linux/io.h>
179a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <linux/platform_device.h>
189a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <linux/sched.h>
199a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <linux/spinlock.h>
209a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <linux/types.h>
219a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <linux/videodev2.h>
229a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
239a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <media/media-entity.h>
249a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <media/videobuf2-core.h>
259a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <media/v4l2-device.h>
269a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#include <media/v4l2-mediabus.h>
2749b2f4c56fbf70ca693d6df1c491f0566d516aeaSylwester Nawrocki#include <media/exynos-fimc.h>
289a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
294434adff80bf24c1c558a1605599665301185bdbSylwester Nawrockiextern int fimc_isp_debug;
304434adff80bf24c1c558a1605599665301185bdbSylwester Nawrocki
314434adff80bf24c1c558a1605599665301185bdbSylwester Nawrocki#define isp_dbg(level, dev, fmt, arg...) \
324434adff80bf24c1c558a1605599665301185bdbSylwester Nawrocki	v4l2_dbg(level, fimc_isp_debug, dev, fmt, ## arg)
334434adff80bf24c1c558a1605599665301185bdbSylwester Nawrocki
349a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki/* FIXME: revisit these constraints */
359a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SINK_WIDTH_MIN		(16 + 8)
369a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SINK_HEIGHT_MIN	(12 + 8)
379a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SOURCE_WIDTH_MIN	8
3834947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define FIMC_ISP_SOURCE_HEIGHT_MIN	8
399a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_CAC_MARGIN_WIDTH	16
409a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_CAC_MARGIN_HEIGHT	12
419a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
429a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SINK_WIDTH_MAX		(4000 - 16)
439a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SINK_HEIGHT_MAX	(4000 + 12)
449a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SOURCE_WIDTH_MAX	4000
4534947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define FIMC_ISP_SOURCE_HEIGHT_MAX	4000
469a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
479a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_NUM_FORMATS		3
489a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_REQ_BUFS_MIN		2
4934947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define FIMC_ISP_REQ_BUFS_MAX		32
509a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
519a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SD_PAD_SINK		0
529a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SD_PAD_SRC_FIFO	1
539a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SD_PAD_SRC_DMA		2
549a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_SD_PADS_NUM		3
559a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define FIMC_ISP_MAX_PLANES		1
569a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
579a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki/**
589a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * struct fimc_isp_frame - source/target frame properties
599a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @width: full image width
609a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @height: full image height
619a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @rect: crop/composition rectangle
629a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki */
639a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockistruct fimc_isp_frame {
649a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	u16 width;
659a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	u16 height;
669a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_rect rect;
679a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki};
689a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
699a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockistruct fimc_isp_ctrls {
709a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl_handler handler;
719a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
729a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Auto white balance */
739a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *auto_wb;
749a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Auto ISO control cluster */
759a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct {
769a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki		struct v4l2_ctrl *auto_iso;
779a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki		struct v4l2_ctrl *iso;
789a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	};
799a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Adjust - contrast */
809a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *contrast;
819a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Adjust - saturation */
829a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *saturation;
839a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Adjust - sharpness */
849a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *sharpness;
859a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Adjust - brightness */
869a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *brightness;
879a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Adjust - hue */
889a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *hue;
899a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
909a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Auto/manual exposure */
919a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *auto_exp;
929a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Manual exposure value */
939a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *exposure;
949a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* AE/AWB lock/unlock */
959a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *aewb_lock;
969a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* Exposure metering mode */
979a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *exp_metering;
989a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* AFC */
999a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *afc;
1009a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	/* ISP image effect */
1019a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl *colorfx;
1029a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki};
1039a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
10434947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrockistruct isp_video_buf {
10534947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	struct vb2_buffer vb;
10634947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	dma_addr_t dma_addr[FIMC_ISP_MAX_PLANES];
10734947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	unsigned int index;
10834947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki};
10934947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki
11034947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define to_isp_video_buf(_b) container_of(_b, struct isp_video_buf, vb)
11134947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki
11234947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define FIMC_ISP_MAX_BUFS	4
11334947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki
1149a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki/**
1159a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * struct fimc_is_video - fimc-is video device structure
1169a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @vdev: video_device structure
1179a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @type: video device type (CAPTURE/OUTPUT)
1189a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @pad: video device media (sink) pad
1199a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @pending_buf_q: pending buffers queue head
1209a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @active_buf_q: a queue head of buffers scheduled in hardware
1219a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @vb_queue: vb2 buffer queue
1229a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @active_buf_count: number of video buffers scheduled in hardware
1239a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @frame_count: counter of frames dequeued to user space
1249a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @reqbufs_count: number of buffers requested with REQBUFS ioctl
1259a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @format: current pixel format
1269a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki */
1279a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockistruct fimc_is_video {
12834947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	struct exynos_video_entity ve;
1299a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	enum v4l2_buf_type	type;
1309a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct media_pad	pad;
1319a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct list_head	pending_buf_q;
1329a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct list_head	active_buf_q;
1339a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct vb2_queue	vb_queue;
1349a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	unsigned int		reqbufs_count;
13534947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	unsigned int		buf_count;
13634947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	unsigned int		buf_mask;
13734947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	unsigned int		frame_count;
1389a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	int			streaming;
13934947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	struct isp_video_buf	*buffers[FIMC_ISP_MAX_BUFS];
1409a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	const struct fimc_fmt	*format;
14134947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki	struct v4l2_pix_format_mplane pixfmt;
1429a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki};
1439a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
14434947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki/* struct fimc_isp:state bit definitions */
14534947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define ST_ISP_VID_CAP_BUF_PREP		0
14634947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki#define ST_ISP_VID_CAP_STREAMING	1
14734947b8aebe3f2d4eceb65fceafa92bf8dc97d96Sylwester Nawrocki
1489a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki/**
1499a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * struct fimc_isp - FIMC-IS ISP data structure
1509a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @pdev: pointer to FIMC-IS platform device
1519a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @alloc_ctx: videobuf2 memory allocator context
1529a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @subdev: ISP v4l2_subdev
1539a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @subdev_pads: the ISP subdev media pads
1549a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @test_pattern: test pattern controls
155f525e176f938f31a7335ce2bfec433236e0d8d6aSylwester Nawrocki * @ctrls: v4l2 controls structure
1569a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @video_lock: mutex serializing video device and the subdev operations
1579a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @cac_margin_x: horizontal CAC margin in pixels
1589a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @cac_margin_y: vertical CAC margin in pixels
1599a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @state: driver state flags
1609a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki * @video_capture: the ISP block video capture device
1619a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki */
1629a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockistruct fimc_isp {
1639a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct platform_device		*pdev;
1649a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct vb2_alloc_ctx		*alloc_ctx;
1659a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_subdev		subdev;
1669a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct media_pad		subdev_pads[FIMC_ISP_SD_PADS_NUM];
1675cfaad64d88a1bb52a6f779be02a69a2d50860fbSylwester Nawrocki	struct v4l2_mbus_framefmt	src_fmt;
1685cfaad64d88a1bb52a6f779be02a69a2d50860fbSylwester Nawrocki	struct v4l2_mbus_framefmt	sink_fmt;
1699a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct v4l2_ctrl		*test_pattern;
1709a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct fimc_isp_ctrls		ctrls;
1719a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1729a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct mutex			video_lock;
1739a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct mutex			subdev_lock;
1749a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1759a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	unsigned int			cac_margin_x;
1769a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	unsigned int			cac_margin_y;
1779a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1789a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	unsigned long			state;
1799a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1809a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	struct fimc_is_video		video_capture;
1819a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki};
1829a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1839a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#define ctrl_to_fimc_isp(_ctrl) \
1849a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki	container_of(ctrl->handler, struct fimc_isp, ctrls.handler)
1859a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1869a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockistruct fimc_is;
1879a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki
1889a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockiint fimc_isp_subdev_create(struct fimc_isp *isp);
1899a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockivoid fimc_isp_subdev_destroy(struct fimc_isp *isp);
1909a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockivoid fimc_isp_irq_handler(struct fimc_is *is);
1919a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockiint fimc_is_create_controls(struct fimc_isp *isp);
1929a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockiint fimc_is_delete_controls(struct fimc_isp *isp);
1939a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrockiconst struct fimc_fmt *fimc_isp_find_format(const u32 *pixelformat,
1949a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki					const u32 *mbus_code, int index);
1959a761e436843f228eaa2decda6d2c6dbd5ef1480Sylwester Nawrocki#endif /* FIMC_ISP_H_ */
196