1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Support for Medifield PNW Camera Imaging ISP subsystem. 4 * 5 * Copyright (c) 2010 Intel Corporation. All Rights Reserved. 6 */ 7 #ifndef __ATOMISP_CSI2_H__ 8 #define __ATOMISP_CSI2_H__ 9 10 #include <linux/gpio/consumer.h> 11 #include <linux/property.h> 12 13 #include <media/v4l2-subdev.h> 14 #include <media/v4l2-ctrls.h> 15 16 #include "../../include/linux/atomisp.h" 17 18 #define CSI2_PAD_SINK 0 19 #define CSI2_PAD_SOURCE 1 20 #define CSI2_PADS_NUM 2 21 22 struct v4l2_device; 23 24 struct atomisp_device; 25 struct atomisp_sub_device; 26 27 struct atomisp_mipi_csi2_device { 28 struct v4l2_subdev subdev; 29 struct media_pad pads[CSI2_PADS_NUM]; 30 struct v4l2_mbus_framefmt formats[CSI2_PADS_NUM]; 31 32 struct v4l2_ctrl_handler ctrls; 33 struct atomisp_device *isp; 34 }; 35 36 int atomisp_csi2_set_ffmt(struct v4l2_subdev *sd, 37 struct v4l2_subdev_state *sd_state, 38 unsigned int which, uint16_t pad, 39 struct v4l2_mbus_framefmt *ffmt); 40 int atomisp_mipi_csi2_init(struct atomisp_device *isp); 41 void atomisp_mipi_csi2_cleanup(struct atomisp_device *isp); 42 void atomisp_mipi_csi2_unregister_entities( 43 struct atomisp_mipi_csi2_device *csi2); 44 int atomisp_mipi_csi2_register_entities(struct atomisp_mipi_csi2_device *csi2, 45 struct v4l2_device *vdev); 46 int atomisp_csi2_bridge_init(struct atomisp_device *isp); 47 int atomisp_csi2_bridge_parse_firmware(struct atomisp_device *isp); 48 49 void atomisp_csi2_configure(struct atomisp_sub_device *asd); 50 51 #endif /* __ATOMISP_CSI2_H__ */ 52