/* SPDX-License-Identifier: GPL-2.0+ */ /* * TI OMAP4 ISS V4L2 Driver - ISP RESIZER module * * Copyright (C) 2012 Texas Instruments, Inc. * * Author: Sergio Aguirre <sergio.a.aguirre@gmail.com> */ #ifndef OMAP4_ISS_RESIZER_H #define OMAP4_ISS_RESIZER_H #include "iss_video.h" enum resizer_input_entity { RESIZER_INPUT_NONE, RESIZER_INPUT_IPIPE, RESIZER_INPUT_IPIPEIF }; #define RESIZER_OUTPUT_MEMORY BIT(0) /* Sink and source RESIZER pads */ #define RESIZER_PAD_SINK 0 #define RESIZER_PAD_SOURCE_MEM 1 #define RESIZER_PADS_NUM 2 /* * struct iss_resizer_device - Structure for the RESIZER module to store its own * information * @subdev: V4L2 subdevice * @pads: Sink and source media entity pads * @formats: Active video formats * @input: Active input * @output: Active outputs * @video_out: Output video node * @error: A hardware error occurred during capture * @state: Streaming state * @wait: Wait queue used to stop the module * @stopping: Stopping state */ struct iss_resizer_device { struct v4l2_subdev subdev; struct media_pad pads[RESIZER_PADS_NUM]; struct v4l2_mbus_framefmt formats[RESIZER_PADS_NUM]; enum resizer_input_entity input; unsigned int output; struct iss_video video_out; unsigned int error; enum iss_pipeline_stream_state state; wait_queue_head_t wait; atomic_t stopping; }; struct iss_device; int omap4iss_resizer_init(struct iss_device *iss); int omap4iss_resizer_create_links(struct iss_device *iss); void omap4iss_resizer_cleanup(struct iss_device *iss); int omap4iss_resizer_register_entities(struct iss_resizer_device *resizer, struct v4l2_device *vdev); void omap4iss_resizer_unregister_entities(struct iss_resizer_device *resizer); int omap4iss_resizer_busy(struct iss_resizer_device *resizer); void omap4iss_resizer_isr(struct iss_resizer_device *resizer, u32 events); void omap4iss_resizer_restore_context(struct iss_device *iss); void omap4iss_resizer_max_rate(struct iss_resizer_device *resizer, unsigned int *max_rate); #endif /* OMAP4_ISS_RESIZER_H */