android13/kernel-5.10/drivers/media/platform/rockchip/ispp/stats.h

61 lines
1.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd. */
#ifndef _RKISPP_STATS_H
#define _RKISPP_STATS_H
#include <linux/rk-ispp-config.h>
#include <linux/interrupt.h>
#include <linux/kfifo.h>
#include "common.h"
#define RKISPP_STATS_READOUT_WORK_SIZE \
(9 * sizeof(struct rkispp_stats_readout_work))
struct rkispp_stats_vdev;
enum rkispp_stats_readout_cmd {
RKISPP_READOUT_STATS,
};
enum rkispp_statsvdev_id {
STATS_VDEV_TNR = 0,
STATS_VDEV_NR,
STATS_VDEV_MAX
};
struct rkispp_stats_readout_work {
enum rkispp_stats_readout_cmd readout;
unsigned long long timestamp;
unsigned int meas_type;
unsigned int frame_id;
};
/*
* struct rkispp_stats_vdev - ISPP Statistics device
*
* @irq_lock: buffer queue lock
* @stat: stats buffer list
* @readout_wq: workqueue for statistics information read
*/
struct rkispp_stats_vdev {
struct rkispp_vdev_node vnode;
struct rkispp_device *dev;
enum rkispp_statsvdev_id vdev_id;
spinlock_t irq_lock;
struct list_head stat;
struct rkispp_buffer *curr_buf;
struct v4l2_format vdev_fmt;
u32 frame_id;
bool streamon;
};
void rkispp_stats_isr(struct rkispp_stats_vdev *stats_vdev);
int rkispp_register_stats_vdevs(struct rkispp_device *dev);
void rkispp_unregister_stats_vdevs(struct rkispp_device *dev);
#endif /* _RKISPP_STATS_H */