56 lines
1.1 KiB
C
56 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (c) 2023 Rockchip Electronics Co., Ltd. */
|
|
|
|
#ifndef _RKVPSS_VPSS_H
|
|
#define _RKVPSS_VPSS_H
|
|
|
|
#include "common.h"
|
|
|
|
#define GRP_ID_VPSS BIT(0)
|
|
|
|
enum rkvpss_pad {
|
|
RKVPSS_PAD_SINK,
|
|
RKVPSS_PAD_SOURCE,
|
|
RKVPSS_PAD_MAX
|
|
};
|
|
|
|
enum rkvpss_state {
|
|
VPSS_STOP = 0,
|
|
VPSS_FS = BIT(0),
|
|
VPSS_FE = BIT(1),
|
|
VPSS_FRAME_END = BIT(2),
|
|
VPSS_FRAME_SCL0 = BIT(3),
|
|
VPSS_FRAME_SCL1 = BIT(4),
|
|
VPSS_FRAME_SCL2 = BIT(5),
|
|
VPSS_FRAME_SCL3 = BIT(6),
|
|
|
|
VPSS_START = BIT(8),
|
|
VPSS_RX_START = BIT(9),
|
|
};
|
|
|
|
struct vpsssd_fmt {
|
|
u32 mbus_code;
|
|
u32 fourcc;
|
|
u32 width;
|
|
u32 height;
|
|
u8 wr_fmt;
|
|
};
|
|
|
|
struct rkvpss_subdev {
|
|
struct rkvpss_device *dev;
|
|
struct v4l2_subdev sd;
|
|
struct media_pad pads[RKVPSS_PAD_MAX];
|
|
struct v4l2_mbus_framefmt in_fmt;
|
|
struct vpsssd_fmt out_fmt;
|
|
u32 frame_seq;
|
|
/* timestamp in ns */
|
|
u64 frame_timestamp;
|
|
enum rkvpss_state state;
|
|
};
|
|
|
|
int rkvpss_register_subdev(struct rkvpss_device *dev,
|
|
struct v4l2_device *v4l2_dev);
|
|
void rkvpss_unregister_subdev(struct rkvpss_device *dev);
|
|
void rkvpss_check_idle(struct rkvpss_device *dev, u32 irq);
|
|
#endif
|