1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd. */ 3 4 #ifndef _RKISPP_ISPP_H 5 #define _RKISPP_ISPP_H 6 7 #include "common.h" 8 9 #define GRP_ID_ISPP BIT(0) 10 11 enum rkispp_pad { 12 RKISPP_PAD_SINK, 13 RKISPP_PAD_SINK_PARAMS, 14 RKISPP_PAD_SOURCE, 15 RKISPP_PAD_SOURCE_STATS, 16 RKISPP_PAD_MAX 17 }; 18 19 enum rkispp_state { 20 ISPP_STOP = 0, 21 ISPP_START, 22 }; 23 24 struct isppsd_fmt { 25 u32 mbus_code; 26 u32 fourcc; 27 u32 width; 28 u32 height; 29 u8 wr_fmt; 30 }; 31 32 struct rkispp_subdev { 33 struct rkispp_device *dev; 34 struct v4l2_subdev sd; 35 struct v4l2_subdev *remote_sd; 36 struct media_pad pads[RKISPP_PAD_MAX]; 37 struct v4l2_mbus_framefmt in_fmt; 38 struct isppsd_fmt out_fmt; 39 u32 frm_sync_seq; 40 /* timestamp in ns */ 41 u64 frame_timestamp; 42 enum rkispp_state state; 43 }; 44 45 u32 cal_fec_mesh(u32 width, u32 height, u32 mode); 46 47 int rkispp_register_subdev(struct rkispp_device *dev, 48 struct v4l2_device *v4l2_dev); 49 void rkispp_unregister_subdev(struct rkispp_device *dev); 50 #endif 51