1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * TI OMAP4 ISS V4L2 Driver - ISP RESIZER 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_RESIZER_H 11 #define OMAP4_ISS_RESIZER_H 12 13 #include "iss_video.h" 14 15 enum resizer_input_entity { 16 RESIZER_INPUT_NONE, 17 RESIZER_INPUT_IPIPE, 18 RESIZER_INPUT_IPIPEIF 19 }; 20 21 #define RESIZER_OUTPUT_MEMORY BIT(0) 22 23 /* Sink and source RESIZER pads */ 24 #define RESIZER_PAD_SINK 0 25 #define RESIZER_PAD_SOURCE_MEM 1 26 #define RESIZER_PADS_NUM 2 27 28 /* 29 * struct iss_resizer_device - Structure for the RESIZER module to store its own 30 * information 31 * @subdev: V4L2 subdevice 32 * @pads: Sink and source media entity pads 33 * @formats: Active video formats 34 * @input: Active input 35 * @output: Active outputs 36 * @video_out: Output video node 37 * @error: A hardware error occurred during capture 38 * @state: Streaming state 39 * @wait: Wait queue used to stop the module 40 * @stopping: Stopping state 41 */ 42 struct iss_resizer_device { 43 struct v4l2_subdev subdev; 44 struct media_pad pads[RESIZER_PADS_NUM]; 45 struct v4l2_mbus_framefmt formats[RESIZER_PADS_NUM]; 46 47 enum resizer_input_entity input; 48 unsigned int output; 49 struct iss_video video_out; 50 unsigned int error; 51 52 enum iss_pipeline_stream_state state; 53 wait_queue_head_t wait; 54 atomic_t stopping; 55 }; 56 57 struct iss_device; 58 59 int omap4iss_resizer_init(struct iss_device *iss); 60 int omap4iss_resizer_create_links(struct iss_device *iss); 61 void omap4iss_resizer_cleanup(struct iss_device *iss); 62 int omap4iss_resizer_register_entities(struct iss_resizer_device *resizer, 63 struct v4l2_device *vdev); 64 void omap4iss_resizer_unregister_entities(struct iss_resizer_device *resizer); 65 66 int omap4iss_resizer_busy(struct iss_resizer_device *resizer); 67 void omap4iss_resizer_isr(struct iss_resizer_device *resizer, u32 events); 68 void omap4iss_resizer_restore_context(struct iss_device *iss); 69 void omap4iss_resizer_max_rate(struct iss_resizer_device *resizer, 70 unsigned int *max_rate); 71 72 #endif /* OMAP4_ISS_RESIZER_H */ 73