• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2020 Rockchip Electronics Co., Ltd. */
3 
4 #ifndef _RKISP_ISP_PARAM_V21_H
5 #define _RKISP_ISP_PARAM_V21_H
6 
7 #include <linux/rkisp1-config.h>
8 #include <linux/rk-preisp.h>
9 #include "common.h"
10 #include "isp_params.h"
11 #include "isp_params_v2x.h"
12 
13 struct rkisp_isp_params_vdev;
14 struct rkisp_isp_params_v21_ops {
15 	void (*dpcc_config)(struct rkisp_isp_params_vdev *params_vdev,
16 			    const struct isp2x_dpcc_cfg *arg);
17 	void (*dpcc_enable)(struct rkisp_isp_params_vdev *params_vdev,
18 			    bool en);
19 	void (*bls_config)(struct rkisp_isp_params_vdev *params_vdev,
20 			   const struct isp21_bls_cfg *arg);
21 	void (*bls_enable)(struct rkisp_isp_params_vdev *params_vdev,
22 			   bool en);
23 	void (*sdg_config)(struct rkisp_isp_params_vdev *params_vdev,
24 			   const struct isp2x_sdg_cfg *arg);
25 	void (*sdg_enable)(struct rkisp_isp_params_vdev *params_vdev,
26 			   bool en);
27 	void (*lsc_config)(struct rkisp_isp_params_vdev *params_vdev,
28 			   const struct isp2x_lsc_cfg *arg);
29 	void (*lsc_enable)(struct rkisp_isp_params_vdev *params_vdev,
30 			   bool en);
31 	void (*awbgain_config)(struct rkisp_isp_params_vdev *params_vdev,
32 			       const struct isp21_awb_gain_cfg *arg);
33 	void (*awbgain_enable)(struct rkisp_isp_params_vdev *params_vdev,
34 			       bool en);
35 	void (*debayer_config)(struct rkisp_isp_params_vdev *params_vdev,
36 			       const struct isp2x_debayer_cfg *arg);
37 	void (*debayer_enable)(struct rkisp_isp_params_vdev *params_vdev,
38 			       bool en);
39 	void (*ccm_config)(struct rkisp_isp_params_vdev *params_vdev,
40 			   const struct isp21_ccm_cfg *arg);
41 	void (*ccm_enable)(struct rkisp_isp_params_vdev *params_vdev,
42 			   bool en);
43 	void (*goc_config)(struct rkisp_isp_params_vdev *params_vdev,
44 			   const struct isp2x_gammaout_cfg *arg);
45 	void (*goc_enable)(struct rkisp_isp_params_vdev *params_vdev,
46 			   bool en);
47 	void (*cproc_config)(struct rkisp_isp_params_vdev *params_vdev,
48 			     const struct isp2x_cproc_cfg *arg);
49 	void (*cproc_enable)(struct rkisp_isp_params_vdev *params_vdev,
50 			     bool en);
51 	void (*ie_config)(struct rkisp_isp_params_vdev *params_vdev,
52 			  const struct isp2x_ie_cfg *arg);
53 	void (*ie_enable)(struct rkisp_isp_params_vdev *params_vdev,
54 			  bool en);
55 	void (*rawaf_config)(struct rkisp_isp_params_vdev *params_vdev,
56 			     const struct isp2x_rawaf_meas_cfg *arg);
57 	void (*rawaf_enable)(struct rkisp_isp_params_vdev *params_vdev,
58 			     bool en);
59 	void (*rawae0_config)(struct rkisp_isp_params_vdev *params_vdev,
60 			      const struct isp2x_rawaelite_meas_cfg *arg);
61 	void (*rawae0_enable)(struct rkisp_isp_params_vdev *params_vdev,
62 			      bool en);
63 	void (*rawae1_config)(struct rkisp_isp_params_vdev *params_vdev,
64 			      const struct isp2x_rawaebig_meas_cfg *arg);
65 	void (*rawae1_enable)(struct rkisp_isp_params_vdev *params_vdev,
66 			      bool en);
67 	void (*rawae2_config)(struct rkisp_isp_params_vdev *params_vdev,
68 			      const struct isp2x_rawaebig_meas_cfg *arg);
69 	void (*rawae2_enable)(struct rkisp_isp_params_vdev *params_vdev,
70 			      bool en);
71 	void (*rawae3_config)(struct rkisp_isp_params_vdev *params_vdev,
72 			      const struct isp2x_rawaebig_meas_cfg *arg);
73 	void (*rawae3_enable)(struct rkisp_isp_params_vdev *params_vdev,
74 			      bool en);
75 	void (*rawawb_config)(struct rkisp_isp_params_vdev *params_vdev,
76 			      const struct isp21_rawawb_meas_cfg *arg);
77 	void (*rawawb_enable)(struct rkisp_isp_params_vdev *params_vdev,
78 			      bool en);
79 	void (*rawhst0_config)(struct rkisp_isp_params_vdev *params_vdev,
80 			       const struct isp2x_rawhistlite_cfg *arg);
81 	void (*rawhst0_enable)(struct rkisp_isp_params_vdev *params_vdev,
82 			       bool en);
83 	void (*rawhst1_config)(struct rkisp_isp_params_vdev *params_vdev,
84 			       const struct isp2x_rawhistbig_cfg *arg);
85 	void (*rawhst1_enable)(struct rkisp_isp_params_vdev *params_vdev,
86 			       bool en);
87 	void (*rawhst2_config)(struct rkisp_isp_params_vdev *params_vdev,
88 			       const struct isp2x_rawhistbig_cfg *arg);
89 	void (*rawhst2_enable)(struct rkisp_isp_params_vdev *params_vdev,
90 			       bool en);
91 	void (*rawhst3_config)(struct rkisp_isp_params_vdev *params_vdev,
92 			       const struct isp2x_rawhistbig_cfg *arg);
93 	void (*rawhst3_enable)(struct rkisp_isp_params_vdev *params_vdev,
94 			       bool en);
95 	void (*hdrdrc_config)(struct rkisp_isp_params_vdev *params_vdev,
96 			      const struct isp21_drc_cfg *arg, enum rkisp_params_type type);
97 	void (*hdrdrc_enable)(struct rkisp_isp_params_vdev *params_vdev,
98 			      bool en);
99 	void (*hdrmge_config)(struct rkisp_isp_params_vdev *params_vdev,
100 			      const struct isp2x_hdrmge_cfg *arg, enum rkisp_params_type type);
101 	void (*hdrmge_enable)(struct rkisp_isp_params_vdev *params_vdev,
102 			      bool en);
103 	void (*gic_config)(struct rkisp_isp_params_vdev *params_vdev,
104 			   const struct isp21_gic_cfg *arg);
105 	void (*gic_enable)(struct rkisp_isp_params_vdev *params_vdev,
106 			   bool en);
107 	void (*dhaz_config)(struct rkisp_isp_params_vdev *params_vdev,
108 			    const struct isp21_dhaz_cfg *arg);
109 	void (*dhaz_enable)(struct rkisp_isp_params_vdev *params_vdev,
110 			    bool en);
111 	void (*isp3dlut_config)(struct rkisp_isp_params_vdev *params_vdev,
112 				const struct isp2x_3dlut_cfg *arg);
113 	void (*isp3dlut_enable)(struct rkisp_isp_params_vdev *params_vdev,
114 				bool en);
115 	void (*ldch_config)(struct rkisp_isp_params_vdev *params_vdev,
116 			    const struct isp2x_ldch_cfg *arg);
117 	void (*ldch_enable)(struct rkisp_isp_params_vdev *params_vdev,
118 			    bool en);
119 	void (*ynr_config)(struct rkisp_isp_params_vdev *params_vdev,
120 			   const struct isp21_ynr_cfg *arg);
121 	void (*ynr_enable)(struct rkisp_isp_params_vdev *params_vdev,
122 			   bool en, const struct isp21_ynr_cfg *arg);
123 	void (*cnr_config)(struct rkisp_isp_params_vdev *params_vdev,
124 			   const struct isp21_cnr_cfg *arg);
125 	void (*cnr_enable)(struct rkisp_isp_params_vdev *params_vdev,
126 			   bool en, const struct isp21_cnr_cfg *arg);
127 	void (*sharp_config)(struct rkisp_isp_params_vdev *params_vdev,
128 			     const struct isp21_sharp_cfg *arg);
129 	void (*sharp_enable)(struct rkisp_isp_params_vdev *params_vdev,
130 			     bool en);
131 	void (*baynr_config)(struct rkisp_isp_params_vdev *params_vdev,
132 			     const struct isp21_baynr_cfg *arg);
133 	void (*baynr_enable)(struct rkisp_isp_params_vdev *params_vdev,
134 			     bool en);
135 	void (*bay3d_config)(struct rkisp_isp_params_vdev *params_vdev,
136 			     const struct isp21_bay3d_cfg *arg);
137 	void (*bay3d_enable)(struct rkisp_isp_params_vdev *params_vdev,
138 			     bool en);
139 	void (*csm_config)(struct rkisp_isp_params_vdev *params_vdev,
140 			   const struct isp21_csm_cfg *arg);
141 };
142 
143 struct rkisp_isp_params_val_v21 {
144 	struct rkisp_dummy_buffer buf_3dlut[RKISP_PARAM_3DLUT_BUF_NUM];
145 	u32 buf_3dlut_idx;
146 
147 	struct rkisp_dummy_buffer buf_ldch[ISP2X_LDCH_BUF_NUM];
148 	u32 buf_ldch_idx;
149 
150 	struct rkisp_dummy_buffer buf_lsclut[RKISP_PARAM_LSC_LUT_BUF_NUM];
151 	u32 buf_lsclut_idx;
152 
153 	struct rkisp_dummy_buffer buf_3dnr;
154 
155 	struct isp2x_hdrmge_cfg last_hdrmge;
156 	struct isp21_drc_cfg last_hdrdrc;
157 	struct isp2x_hdrmge_cfg cur_hdrmge;
158 	struct isp21_drc_cfg cur_hdrdrc;
159 
160 	u8 dhaz_en;
161 	u8 wdr_en;
162 	u8 tmo_en;
163 	u8 lsc_en;
164 	u8 mge_en;
165 };
166 
167 #if IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V21)
168 int rkisp_init_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev);
169 void rkisp_uninit_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev);
170 #else
rkisp_init_params_vdev_v21(struct rkisp_isp_params_vdev * params_vdev)171 static inline int rkisp_init_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev) { return 0; }
rkisp_uninit_params_vdev_v21(struct rkisp_isp_params_vdev * params_vdev)172 static inline void rkisp_uninit_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev) {}
173 #endif
174 
175 #endif /* _RKISP_ISP_PARAM_V21_H */
176