162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ispccp2.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * TI OMAP3 ISP - CCP2 module 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright (C) 2010 Nokia Corporation 862306a36Sopenharmony_ci * Copyright (C) 2010 Texas Instruments, Inc. 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 1162306a36Sopenharmony_ci * Sakari Ailus <sakari.ailus@iki.fi> 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#ifndef OMAP3_ISP_CCP2_H 1562306a36Sopenharmony_ci#define OMAP3_ISP_CCP2_H 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#include <linux/videodev2.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct isp_device; 2062306a36Sopenharmony_cistruct isp_csiphy; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* Sink and source ccp2 pads */ 2362306a36Sopenharmony_ci#define CCP2_PAD_SINK 0 2462306a36Sopenharmony_ci#define CCP2_PAD_SOURCE 1 2562306a36Sopenharmony_ci#define CCP2_PADS_NUM 2 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* CCP2 input media entity */ 2862306a36Sopenharmony_cienum ccp2_input_entity { 2962306a36Sopenharmony_ci CCP2_INPUT_NONE, 3062306a36Sopenharmony_ci CCP2_INPUT_SENSOR, 3162306a36Sopenharmony_ci CCP2_INPUT_MEMORY, 3262306a36Sopenharmony_ci}; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* CCP2 output media entity */ 3562306a36Sopenharmony_cienum ccp2_output_entity { 3662306a36Sopenharmony_ci CCP2_OUTPUT_NONE, 3762306a36Sopenharmony_ci CCP2_OUTPUT_CCDC, 3862306a36Sopenharmony_ci CCP2_OUTPUT_MEMORY, 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci/* Logical channel configuration */ 4362306a36Sopenharmony_cistruct isp_interface_lcx_config { 4462306a36Sopenharmony_ci int crc; 4562306a36Sopenharmony_ci u32 data_start; 4662306a36Sopenharmony_ci u32 data_size; 4762306a36Sopenharmony_ci u32 format; 4862306a36Sopenharmony_ci}; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci/* Memory channel configuration */ 5162306a36Sopenharmony_cistruct isp_interface_mem_config { 5262306a36Sopenharmony_ci u32 dst_port; 5362306a36Sopenharmony_ci u32 vsize_count; 5462306a36Sopenharmony_ci u32 hsize_count; 5562306a36Sopenharmony_ci u32 src_ofst; 5662306a36Sopenharmony_ci u32 dst_ofst; 5762306a36Sopenharmony_ci}; 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci/* CCP2 device */ 6062306a36Sopenharmony_cistruct isp_ccp2_device { 6162306a36Sopenharmony_ci struct v4l2_subdev subdev; 6262306a36Sopenharmony_ci struct v4l2_mbus_framefmt formats[CCP2_PADS_NUM]; 6362306a36Sopenharmony_ci struct media_pad pads[CCP2_PADS_NUM]; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci enum ccp2_input_entity input; 6662306a36Sopenharmony_ci enum ccp2_output_entity output; 6762306a36Sopenharmony_ci struct isp_interface_lcx_config if_cfg; 6862306a36Sopenharmony_ci struct isp_interface_mem_config mem_cfg; 6962306a36Sopenharmony_ci struct isp_video video_in; 7062306a36Sopenharmony_ci struct isp_csiphy *phy; 7162306a36Sopenharmony_ci struct regulator *vdds_csib; 7262306a36Sopenharmony_ci enum isp_pipeline_stream_state state; 7362306a36Sopenharmony_ci wait_queue_head_t wait; 7462306a36Sopenharmony_ci atomic_t stopping; 7562306a36Sopenharmony_ci}; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci/* Function declarations */ 7862306a36Sopenharmony_ciint omap3isp_ccp2_init(struct isp_device *isp); 7962306a36Sopenharmony_civoid omap3isp_ccp2_cleanup(struct isp_device *isp); 8062306a36Sopenharmony_ciint omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2, 8162306a36Sopenharmony_ci struct v4l2_device *vdev); 8262306a36Sopenharmony_civoid omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2); 8362306a36Sopenharmony_civoid omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2); 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci#endif /* OMAP3_ISP_CCP2_H */ 86