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