brintos

brintos / linux-shallow public Read only

0
0
Text · 1.6 KiB · 44653b3 Raw
70 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright 2021-2022 Bootlin4 * Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>5 */6 7#ifndef _SUN6I_CSI_BRIDGE_H_8#define _SUN6I_CSI_BRIDGE_H_9 10#include <media/v4l2-device.h>11#include <media/v4l2-fwnode.h>12 13#define SUN6I_CSI_BRIDGE_NAME	"sun6i-csi-bridge"14 15enum sun6i_csi_bridge_pad {16	SUN6I_CSI_BRIDGE_PAD_SINK	= 0,17	SUN6I_CSI_BRIDGE_PAD_SOURCE	= 1,18	SUN6I_CSI_BRIDGE_PAD_COUNT	= 2,19};20 21struct sun6i_csi_device;22 23struct sun6i_csi_bridge_format {24	u32	mbus_code;25	u8	input_format;26	u8	input_yuv_seq;27	u8	input_yuv_seq_invert;28};29 30struct sun6i_csi_bridge_source {31	struct v4l2_subdev		*subdev;32	struct v4l2_fwnode_endpoint	endpoint;33	bool				expected;34};35 36struct sun6i_csi_bridge_async_subdev {37	struct v4l2_async_connection	async_subdev;38	struct sun6i_csi_bridge_source	*source;39};40 41struct sun6i_csi_bridge {42	struct v4l2_subdev		subdev;43	struct v4l2_async_notifier	notifier;44	struct media_pad		pads[2];45	struct v4l2_mbus_framefmt	mbus_format;46	struct mutex			lock; /* Mbus format lock. */47 48	struct sun6i_csi_bridge_source	source_parallel;49	struct sun6i_csi_bridge_source	source_mipi_csi2;50};51 52/* Helpers */53 54void sun6i_csi_bridge_dimensions(struct sun6i_csi_device *csi_dev,55				 unsigned int *width, unsigned int *height);56void sun6i_csi_bridge_format(struct sun6i_csi_device *csi_dev,57			     u32 *mbus_code, u32 *field);58 59/* Format */60 61const struct sun6i_csi_bridge_format *62sun6i_csi_bridge_format_find(u32 mbus_code);63 64/* Bridge */65 66int sun6i_csi_bridge_setup(struct sun6i_csi_device *csi_dev);67void sun6i_csi_bridge_cleanup(struct sun6i_csi_device *csi_dev);68 69#endif70