1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * TI OMAP4 ISS V4L2 Driver - ISP IPIPE module 4 * 5 * Copyright (C) 2012 Texas Instruments, Inc. 6 * 7 * Author: Sergio Aguirre <sergio.a.aguirre@gmail.com> 8 */ 9 10 #ifndef OMAP4_ISS_IPIPE_H 11 #define OMAP4_ISS_IPIPE_H 12 13 #include "iss_video.h" 14 15 enum ipipe_input_entity { 16 IPIPE_INPUT_NONE, 17 IPIPE_INPUT_IPIPEIF, 18 }; 19 20 #define IPIPE_OUTPUT_VP BIT(0) 21 22 /* Sink and source IPIPE pads */ 23 #define IPIPE_PAD_SINK 0 24 #define IPIPE_PAD_SOURCE_VP 1 25 #define IPIPE_PADS_NUM 2 26 27 /* 28 * struct iss_ipipe_device - Structure for the IPIPE module to store its own 29 * information 30 * @subdev: V4L2 subdevice 31 * @pads: Sink and source media entity pads 32 * @formats: Active video formats 33 * @input: Active input 34 * @output: Active outputs 35 * @error: A hardware error occurred during capture 36 * @state: Streaming state 37 * @wait: Wait queue used to stop the module 38 * @stopping: Stopping state 39 */ 40 struct iss_ipipe_device { 41 struct v4l2_subdev subdev; 42 struct media_pad pads[IPIPE_PADS_NUM]; 43 struct v4l2_mbus_framefmt formats[IPIPE_PADS_NUM]; 44 45 enum ipipe_input_entity input; 46 unsigned int output; 47 unsigned int error; 48 49 enum iss_pipeline_stream_state state; 50 wait_queue_head_t wait; 51 atomic_t stopping; 52 }; 53 54 struct iss_device; 55 56 int omap4iss_ipipe_register_entities(struct iss_ipipe_device *ipipe, 57 struct v4l2_device *vdev); 58 void omap4iss_ipipe_unregister_entities(struct iss_ipipe_device *ipipe); 59 60 int omap4iss_ipipe_init(struct iss_device *iss); 61 void omap4iss_ipipe_cleanup(struct iss_device *iss); 62 63 #endif /* OMAP4_ISS_IPIPE_H */ 64