#include <linux/device.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/minmax.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/types.h>
#include <media/media-entity.h>
#include <media/v4l2-subdev.h>
#include "imx8-isi-core.h"
static inline struct mxc_isi_crossbar *to_isi_crossbar(struct v4l2_subdev *sd)
{ … }
static int mxc_isi_crossbar_gasket_enable(struct mxc_isi_crossbar *xbar,
struct v4l2_subdev_state *state,
struct v4l2_subdev *remote_sd,
u32 remote_pad, unsigned int port)
{ … }
static void mxc_isi_crossbar_gasket_disable(struct mxc_isi_crossbar *xbar,
unsigned int port)
{ … }
static const struct v4l2_mbus_framefmt mxc_isi_crossbar_default_format = …;
static int __mxc_isi_crossbar_set_routing(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_krouting *routing)
{ … }
static struct v4l2_subdev *
mxc_isi_crossbar_xlate_streams(struct mxc_isi_crossbar *xbar,
struct v4l2_subdev_state *state,
u32 source_pad, u64 source_streams,
u32 *__sink_pad, u64 *__sink_streams,
u32 *remote_pad)
{ … }
static int mxc_isi_crossbar_init_state(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state)
{ … }
static int mxc_isi_crossbar_enum_mbus_code(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_mbus_code_enum *code)
{ … }
static int mxc_isi_crossbar_set_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_format *fmt)
{ … }
static int mxc_isi_crossbar_set_routing(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
enum v4l2_subdev_format_whence which,
struct v4l2_subdev_krouting *routing)
{ … }
static int mxc_isi_crossbar_enable_streams(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
u32 pad, u64 streams_mask)
{ … }
static int mxc_isi_crossbar_disable_streams(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
u32 pad, u64 streams_mask)
{ … }
static const struct v4l2_subdev_pad_ops mxc_isi_crossbar_subdev_pad_ops = …;
static const struct v4l2_subdev_ops mxc_isi_crossbar_subdev_ops = …;
static const struct v4l2_subdev_internal_ops mxc_isi_crossbar_internal_ops = …;
static const struct media_entity_operations mxc_isi_cross_entity_ops = …;
int mxc_isi_crossbar_init(struct mxc_isi_dev *isi)
{ … }
void mxc_isi_crossbar_cleanup(struct mxc_isi_crossbar *xbar)
{ … }
int mxc_isi_crossbar_register(struct mxc_isi_crossbar *xbar)
{ … }
void mxc_isi_crossbar_unregister(struct mxc_isi_crossbar *xbar)
{ … }