brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · bc8594c Raw
81 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/* Copyright (C) 2013--2024 Intel Corporation */3 4#ifndef IPU6_ISYS_CSI2_H5#define IPU6_ISYS_CSI2_H6 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_csi2_pdata;18struct ipu6_isys_stream;19 20#define NR_OF_CSI2_VC		1621#define INVALID_VC_ID		-122#define NR_OF_CSI2_SINK_PADS	123#define CSI2_PAD_SINK		024#define NR_OF_CSI2_SRC_PADS	825#define CSI2_PAD_SRC		126#define NR_OF_CSI2_PADS		(NR_OF_CSI2_SINK_PADS + NR_OF_CSI2_SRC_PADS)27 28#define CSI2_CSI_RX_DLY_CNT_TERMEN_CLANE_A		029#define CSI2_CSI_RX_DLY_CNT_TERMEN_CLANE_B		030#define CSI2_CSI_RX_DLY_CNT_SETTLE_CLANE_A		9531#define CSI2_CSI_RX_DLY_CNT_SETTLE_CLANE_B		-832 33#define CSI2_CSI_RX_DLY_CNT_TERMEN_DLANE_A		034#define CSI2_CSI_RX_DLY_CNT_TERMEN_DLANE_B		035#define CSI2_CSI_RX_DLY_CNT_SETTLE_DLANE_A		8536#define CSI2_CSI_RX_DLY_CNT_SETTLE_DLANE_B		-237 38struct ipu6_isys_csi2 {39	struct ipu6_isys_subdev asd;40	struct ipu6_isys_csi2_pdata *pdata;41	struct ipu6_isys *isys;42	struct ipu6_isys_video av[NR_OF_CSI2_SRC_PADS];43 44	void __iomem *base;45	u32 receiver_errors;46	unsigned int nlanes;47	unsigned int port;48};49 50struct ipu6_isys_csi2_timing {51	u32 ctermen;52	u32 csettle;53	u32 dtermen;54	u32 dsettle;55};56 57struct ipu6_csi2_error {58	const char *error_string;59	bool is_info_only;60};61 62#define ipu6_isys_subdev_to_csi2(__sd) \63	container_of(__sd, struct ipu6_isys_csi2, asd)64 65#define to_ipu6_isys_csi2(__asd) container_of(__asd, struct ipu6_isys_csi2, asd)66 67s64 ipu6_isys_csi2_get_link_freq(struct ipu6_isys_csi2 *csi2);68int ipu6_isys_csi2_init(struct ipu6_isys_csi2 *csi2, struct ipu6_isys *isys,69			void __iomem *base, unsigned int index);70void ipu6_isys_csi2_cleanup(struct ipu6_isys_csi2 *csi2);71void ipu6_isys_csi2_sof_event_by_stream(struct ipu6_isys_stream *stream);72void ipu6_isys_csi2_eof_event_by_stream(struct ipu6_isys_stream *stream);73void ipu6_isys_register_errors(struct ipu6_isys_csi2 *csi2);74void ipu6_isys_csi2_error(struct ipu6_isys_csi2 *csi2);75int ipu6_isys_csi2_get_remote_desc(u32 source_stream,76				   struct ipu6_isys_csi2 *csi2,77				   struct media_entity *source_entity,78				   struct v4l2_mbus_frame_desc_entry *entry);79 80#endif /* IPU6_ISYS_CSI2_H */81