hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2020 Rockchip Electronics Co., Ltd. */
 
#ifndef _RKISPP_HW_H
#define _RKISPP_HW_H
 
#include "common.h"
#include "fec.h"
#include "../isp/isp_ispp.h"
 
#define ISPP_MAX_BUS_CLK 4
 
struct ispp_clk_info {
   u32 clk_rate;
   u32 refer_data;
};
 
struct ispp_match_data {
   int clks_num;
   const char * const *clks;
   int clk_rate_tbl_num;
   const struct ispp_clk_info *clk_rate_tbl;
   enum rkispp_ver ispp_ver;
   struct irqs_data *irqs;
   int num_irqs;
};
 
struct rkispp_hw_dev {
   struct device *dev;
   void __iomem *base_addr;
   const struct ispp_match_data *match_data;
   const struct ispp_clk_info *clk_rate_tbl;
   struct reset_control *reset;
   struct clk *clks[ISPP_MAX_BUS_CLK];
   struct rkispp_device *ispp[DEV_MAX];
   struct rkispp_isp_buf_pool pool[RKISPP_BUF_POOL_MAX];
   struct rkispp_dummy_buffer dummy_buf;
   struct rkispp_fec_dev fec_dev;
   struct max_input max_in;
   struct list_head list;
   int clk_rate_tbl_num;
   int clks_num;
   int dev_num;
   int cur_dev_id;
   unsigned long core_clk_min;
   unsigned long core_clk_max;
   enum rkispp_ver    ispp_ver;
   /* lock for irq */
   spinlock_t irq_lock;
   /* lock for multi dev */
   struct mutex dev_lock;
   spinlock_t buf_lock;
   atomic_t refcnt;
   const struct vb2_mem_ops *mem_ops;
   struct rkisp_ispp_reg *reg_buf;
   bool is_mmu;
   bool is_idle;
   bool is_single;
   bool is_fec_ext;
   bool is_dma_contig;
   bool is_dma_sg_ops;
   bool is_shutdown;
   bool is_first;
};
 
void rkispp_soft_reset(struct rkispp_hw_dev *hw_dev);
#endif