FILE
ipu6-isys-csi2.h
File preview with syntax highlighting.
linux-6.19.14/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* Copyright (C) 2013--2024 Intel Corporation */ 3 4#ifndef IPU6_ISYS_CSI2_H 5#define IPU6_ISYS_CSI2_H 6 7#include <linux/container_of.h> 8 9#include "ipu6-isys-subdev.h" 10#include "ipu6-isys-video.h" 11 12struct media_entity; 13struct v4l2_mbus_frame_desc_entry; 14 15struct ipu6_isys_video; 16struct ipu6_isys; 17struct ipu6_isys_stream; 18 19#define NR_OF_CSI2_VC 16 20#define INVALID_VC_ID -1 21#define NR_OF_CSI2_SINK_PADS 1 22#define CSI2_PAD_SINK 0 23#define NR_OF_CSI2_SRC_PADS 8 24#define CSI2_PAD_SRC 1 25#define NR_OF_CSI2_PADS (NR_OF_CSI2_SINK_PADS + NR_OF_CSI2_SRC_PADS) 26 27#define CSI2_CSI_RX_DLY_CNT_TERMEN_CLANE_A 0 28#define CSI2_CSI_RX_DLY_CNT_TERMEN_CLANE_B 0 29#define CSI2_CSI_RX_DLY_CNT_SETTLE_CLANE_A 95 30#define CSI2_CSI_RX_DLY_CNT_SETTLE_CLANE_B -8 31 32#define CSI2_CSI_RX_DLY_CNT_TERMEN_DLANE_A 0 33#define CSI2_CSI_RX_DLY_CNT_TERMEN_DLANE_B 0 34#define CSI2_CSI_RX_DLY_CNT_SETTLE_DLANE_A 85 35#define CSI2_CSI_RX_DLY_CNT_SETTLE_DLANE_B -2 36 37struct ipu6_isys_csi2 { 38 struct ipu6_isys_subdev asd; 39 struct ipu6_isys *isys; 40 struct ipu6_isys_video av[NR_OF_CSI2_SRC_PADS]; 41 42 void __iomem *base; 43 u32 receiver_errors; 44 unsigned int nlanes; 45 unsigned int port; 46}; 47 48struct ipu6_isys_csi2_timing { 49 u32 ctermen; 50 u32 csettle; 51 u32 dtermen; 52 u32 dsettle; 53}; 54 55struct ipu6_csi2_error { 56 const char *error_string; 57 bool is_info_only; 58}; 59 60#define ipu6_isys_subdev_to_csi2(__sd) \ 61 container_of(__sd, struct ipu6_isys_csi2, asd) 62 63#define to_ipu6_isys_csi2(__asd) container_of(__asd, struct ipu6_isys_csi2, asd) 64 65s64 ipu6_isys_csi2_get_link_freq(struct ipu6_isys_csi2 *csi2); 66int ipu6_isys_csi2_init(struct ipu6_isys_csi2 *csi2, struct ipu6_isys *isys, 67 void __iomem *base, unsigned int index); 68void ipu6_isys_csi2_cleanup(struct ipu6_isys_csi2 *csi2); 69void ipu6_isys_csi2_sof_event_by_stream(struct ipu6_isys_stream *stream); 70void ipu6_isys_csi2_eof_event_by_stream(struct ipu6_isys_stream *stream); 71void ipu6_isys_register_errors(struct ipu6_isys_csi2 *csi2); 72void ipu6_isys_csi2_error(struct ipu6_isys_csi2 *csi2); 73int ipu6_isys_csi2_get_remote_desc(u32 source_stream, 74 struct ipu6_isys_csi2 *csi2, 75 struct media_entity *source_entity, 76 struct v4l2_mbus_frame_desc_entry *entry); 77 78#endif /* IPU6_ISYS_CSI2_H */
~/
Read-only file preview.