]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blame - drivers/media/platform/omap3isp/ispccp2.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499
[mirror_ubuntu-hirsute-kernel.git] / drivers / media / platform / omap3isp / ispccp2.h
CommitLineData
121e9f1c
LP
1/*
2 * ispccp2.h
3 *
4 * TI OMAP3 ISP - CCP2 module
5 *
6 * Copyright (C) 2010 Nokia Corporation
7 * Copyright (C) 2010 Texas Instruments, Inc.
8 *
9 * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
10 * Sakari Ailus <sakari.ailus@iki.fi>
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
121e9f1c
LP
15 */
16
17#ifndef OMAP3_ISP_CCP2_H
18#define OMAP3_ISP_CCP2_H
19
20#include <linux/videodev2.h>
21
22struct isp_device;
23struct isp_csiphy;
24
25/* Sink and source ccp2 pads */
26#define CCP2_PAD_SINK 0
27#define CCP2_PAD_SOURCE 1
28#define CCP2_PADS_NUM 2
29
30/* CCP2 input media entity */
31enum ccp2_input_entity {
32 CCP2_INPUT_NONE,
33 CCP2_INPUT_SENSOR,
34 CCP2_INPUT_MEMORY,
35};
36
37/* CCP2 output media entity */
38enum ccp2_output_entity {
39 CCP2_OUTPUT_NONE,
40 CCP2_OUTPUT_CCDC,
41 CCP2_OUTPUT_MEMORY,
42};
43
44
45/* Logical channel configuration */
46struct isp_interface_lcx_config {
47 int crc;
48 u32 data_start;
49 u32 data_size;
50 u32 format;
51};
52
53/* Memory channel configuration */
54struct isp_interface_mem_config {
55 u32 dst_port;
56 u32 vsize_count;
57 u32 hsize_count;
58 u32 src_ofst;
59 u32 dst_ofst;
60};
61
62/* CCP2 device */
63struct isp_ccp2_device {
64 struct v4l2_subdev subdev;
65 struct v4l2_mbus_framefmt formats[CCP2_PADS_NUM];
66 struct media_pad pads[CCP2_PADS_NUM];
67
68 enum ccp2_input_entity input;
69 enum ccp2_output_entity output;
70 struct isp_interface_lcx_config if_cfg;
71 struct isp_interface_mem_config mem_cfg;
72 struct isp_video video_in;
73 struct isp_csiphy *phy;
65d76488 74 struct regulator *vdds_csib;
121e9f1c
LP
75 enum isp_pipeline_stream_state state;
76 wait_queue_head_t wait;
77 atomic_t stopping;
78};
79
80/* Function declarations */
81int omap3isp_ccp2_init(struct isp_device *isp);
82void omap3isp_ccp2_cleanup(struct isp_device *isp);
83int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2,
84 struct v4l2_device *vdev);
85void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2);
875e2e3e 86void omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2);
121e9f1c
LP
87
88#endif /* OMAP3_ISP_CCP2_H */