xref: /OK3568_Linux_fs/kernel/drivers/media/platform/rockchip/isp/procfs.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) Rockchip Electronics Co., Ltd. */
3 #include <linux/clk.h>
4 #include <linux/proc_fs.h>
5 #include <linux/sem.h>
6 #include <linux/seq_file.h>
7 
8 #include "dev.h"
9 #include "procfs.h"
10 #include "version.h"
11 #include "regs.h"
12 #include "regs_v2x.h"
13 #include "isp_params_v3x.h"
14 #include "isp_params_v32.h"
15 
16 #ifdef CONFIG_PROC_FS
17 
isp20_show(struct rkisp_device * dev,struct seq_file * p)18 static void isp20_show(struct rkisp_device *dev, struct seq_file *p)
19 {
20 	u32 full_range_flg = CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA | CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA;
21 	static const char * const effect[] = {
22 		"BLACKWHITE",
23 		"NEGATIVE",
24 		"SEPIA",
25 		"COLOR_SEL",
26 		"EMBOSS",
27 		"SKETCH",
28 		"SHARPEN",
29 		"RKSHARPEN"
30 	};
31 	u32 val;
32 
33 	val = rkisp_read(dev, ISP_DPCC0_MODE, false);
34 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC0", (val & 1) ? "ON" : "OFF", val);
35 	val = rkisp_read(dev, ISP_DPCC1_MODE, false);
36 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC1", (val & 1) ? "ON" : "OFF", val);
37 	val = rkisp_read(dev, ISP_DPCC2_MODE, false);
38 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC2", (val & 1) ? "ON" : "OFF", val);
39 	val = rkisp_read(dev, ISP_BLS_CTRL, false);
40 	seq_printf(p, "%-10s %s(0x%x)\n", "BLS", (val & 1) ? "ON" : "OFF", val);
41 	val = rkisp_read(dev, CIF_ISP_CTRL, false);
42 	seq_printf(p, "%-10s %s(0x%x)\n", "SDG",
43 		(val & CIF_ISP_CTRL_ISP_GAMMA_IN_ENA) ? "ON" : "OFF", val);
44 	val = rkisp_read(dev, ISP_LSC_CTRL, false);
45 	seq_printf(p, "%-10s %s(0x%x)\n", "LSC", (val & 1) ? "ON" : "OFF", val);
46 	val = rkisp_read(dev, CIF_ISP_CTRL, false);
47 	seq_printf(p, "%-10s %s(0x%x) (gain: 0x%08x, 0x%08x)\n", "AWBGAIN",
48 		(val & CIF_ISP_CTRL_ISP_AWB_ENA) ? "ON" : "OFF", val,
49 		rkisp_read(dev, CIF_ISP_AWB_GAIN_G_V12, false),
50 		rkisp_read(dev, CIF_ISP_AWB_GAIN_RB_V12, false));
51 	val = rkisp_read(dev, ISP_DEBAYER_CONTROL, false);
52 	seq_printf(p, "%-10s %s(0x%x)\n", "DEBAYER", (val & 1) ? "ON" : "OFF", val);
53 	val = rkisp_read(dev, ISP_CCM_CTRL, false);
54 	seq_printf(p, "%-10s %s(0x%x)\n", "CCM", (val & 1) ? "ON" : "OFF", val);
55 	val = rkisp_read(dev, ISP_GAMMA_OUT_CTRL, false);
56 	seq_printf(p, "%-10s %s(0x%x)\n", "GAMMA_OUT", (val & 1) ? "ON" : "OFF", val);
57 	val = rkisp_read(dev, CPROC_CTRL, false);
58 	seq_printf(p, "%-10s %s(0x%x)\n", "CPROC", (val & 1) ? "ON" : "OFF", val);
59 	val = rkisp_read(dev, CIF_IMG_EFF_CTRL, false);
60 	seq_printf(p, "%-10s %s(0x%x) (effect: %s)\n", "IE",
61 		(val & 1) ? "ON" : "OFF", val,
62 		effect[(val & CIF_IMG_EFF_CTRL_MODE_MASK) >> 1]);
63 	val = rkisp_read(dev, ISP_WDR_CTRL0, false);
64 	seq_printf(p, "%-10s %s(0x%x)\n", "WDR", (val & 1) ? "ON" : "OFF", val);
65 	val = rkisp_read(dev, ISP_HDRTMO_CTRL, false);
66 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRTMO", (val & 1) ? "ON" : "OFF", val);
67 	val = rkisp_read(dev, ISP_HDRMGE_CTRL, false);
68 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRMGE", (val & 1) ? "ON" : "OFF", val);
69 	val = rkisp_read(dev, ISP_RAWNR_CTRL, false);
70 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWNR", (val & 1) ? "ON" : "OFF", val);
71 	val = rkisp_read(dev, ISP_GIC_CONTROL, false);
72 	seq_printf(p, "%-10s %s(0x%x)\n", "GIC", (val & 1) ? "ON" : "OFF", val);
73 	val = rkisp_read(dev, ISP_DHAZ_CTRL, false);
74 	seq_printf(p, "%-10s %s(0x%x)\n", "DHAZ", (val & 1) ? "ON" : "OFF", val);
75 	val = rkisp_read(dev, ISP_3DLUT_CTRL, false);
76 	seq_printf(p, "%-10s %s(0x%x)\n", "3DLUT", (val & 1) ? "ON" : "OFF", val);
77 	val = rkisp_read(dev, ISP_GAIN_CTRL, false);
78 	seq_printf(p, "%-10s %s(0x%x)\n", "GAIN", val ? "ON" : "OFF", val);
79 	val = rkisp_read(dev, ISP_LDCH_STS, false);
80 	seq_printf(p, "%-10s %s(0x%x)\n", "LDCH", (val & 1) ? "ON" : "OFF", val);
81 	val = rkisp_read(dev, ISP_CTRL, false);
82 	seq_printf(p, "%-10s %s(0x%x)\n", "CSM",
83 		(val & full_range_flg) ? "FULL" : "LIMITED", val);
84 
85 	val = rkisp_read(dev, ISP_AFM_CTRL, false);
86 	seq_printf(p, "%-10s %s(0x%x)\n", "SIAF", (val & 1) ? "ON" : "OFF", val);
87 	val = rkisp_read(dev, CIF_ISP_AWB_PROP_V10, false);
88 	seq_printf(p, "%-10s %s(0x%x)\n", "SIAWB",
89 		(val & CIF_ISP_AWB_ENABLE) ? "ON" : "OFF", val);
90 	val = rkisp_read(dev, ISP_YUVAE_CTRL, false);
91 	seq_printf(p, "%-10s %s(0x%x)\n", "YUVAE", (val & 1) ? "ON" : "OFF", val);
92 	val = rkisp_read(dev, ISP_HIST_HIST_CTRL, false);
93 	seq_printf(p, "%-10s %s(0x%x)\n", "SIHST", (val & 1) ? "ON" : "OFF", val);
94 	val = rkisp_read(dev, ISP_RAWAF_CTRL, false);
95 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAF", (val & 1) ? "ON" : "OFF", val);
96 	val = rkisp_read(dev, ISP_RAWAWB_CTRL, false);
97 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAWB", (val & 1) ? "ON" : "OFF", val);
98 	val = rkisp_read(dev, ISP_RAWAE_LITE_CTRL, false);
99 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE0", (val & 1) ? "ON" : "OFF", val);
100 	val = rkisp_read(dev, RAWAE_BIG2_BASE, false);
101 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE1", (val & 1) ? "ON" : "OFF", val);
102 	val = rkisp_read(dev, RAWAE_BIG3_BASE, false);
103 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE2", (val & 1) ? "ON" : "OFF", val);
104 	val = rkisp_read(dev, RAWAE_BIG1_BASE, false);
105 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE3", (val & 1) ? "ON" : "OFF", val);
106 	val = rkisp_read(dev, ISP_RAWHIST_LITE_CTRL, false);
107 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST0", (val & 1) ? "ON" : "OFF", val);
108 	val = rkisp_read(dev, ISP_RAWHIST_BIG2_BASE, false);
109 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST1", (val & 1) ? "ON" : "OFF", val);
110 	val = rkisp_read(dev, ISP_RAWHIST_BIG3_BASE, false);
111 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST2", (val & 1) ? "ON" : "OFF", val);
112 	val = rkisp_read(dev, ISP_RAWHIST_BIG1_BASE, false);
113 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST3", (val & 1) ? "ON" : "OFF", val);
114 }
115 
isp21_show(struct rkisp_device * dev,struct seq_file * p)116 static void isp21_show(struct rkisp_device *dev, struct seq_file *p)
117 {
118 	u32 full_range_flg = CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA | CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA;
119 	static const char * const effect[] = {
120 		"BLACKWHITE",
121 		"NEGATIVE",
122 		"SEPIA",
123 		"COLOR_SEL",
124 		"EMBOSS",
125 		"SKETCH",
126 		"SHARPEN",
127 		"RKSHARPEN"
128 	};
129 	u32 val, tmp;
130 
131 	val = rkisp_read(dev, ISP_DPCC0_MODE, false);
132 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC0", (val & 1) ? "ON" : "OFF", val);
133 	val = rkisp_read(dev, ISP_DPCC1_MODE, false);
134 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC1", (val & 1) ? "ON" : "OFF", val);
135 	val = rkisp_read(dev, ISP_BLS_CTRL, false);
136 	seq_printf(p, "%-10s %s(0x%x)\n", "BLS", (val & 1) ? "ON" : "OFF", val);
137 	val = rkisp_read(dev, CIF_ISP_CTRL, false);
138 	seq_printf(p, "%-10s %s(0x%x)\n", "SDG",
139 		(val & CIF_ISP_CTRL_ISP_GAMMA_IN_ENA) ? "ON" : "OFF", val);
140 	val = rkisp_read(dev, ISP_LSC_CTRL, false);
141 	seq_printf(p, "%-10s %s(0x%x)\n", "LSC", (val & 1) ? "ON" : "OFF", val);
142 	val = rkisp_read(dev, CIF_ISP_CTRL, false);
143 	seq_printf(p, "%-10s %s(0x%x) (gain: 0x%08x, 0x%08x)\n", "AWBGAIN",
144 		(val & CIF_ISP_CTRL_ISP_AWB_ENA) ? "ON" : "OFF", val,
145 		rkisp_read(dev, CIF_ISP_AWB_GAIN_G_V12, false),
146 		rkisp_read(dev, CIF_ISP_AWB_GAIN_RB_V12, false));
147 	val = rkisp_read(dev, ISP_DEBAYER_CONTROL, false);
148 	seq_printf(p, "%-10s %s(0x%x)\n", "DEBAYER", (val & 1) ? "ON" : "OFF", val);
149 	val = rkisp_read(dev, ISP_CCM_CTRL, false);
150 	seq_printf(p, "%-10s %s(0x%x)\n", "CCM", (val & 1) ? "ON" : "OFF", val);
151 	val = rkisp_read(dev, ISP_GAMMA_OUT_CTRL, false);
152 	seq_printf(p, "%-10s %s(0x%x)\n", "GAMMA_OUT", (val & 1) ? "ON" : "OFF", val);
153 	val = rkisp_read(dev, CPROC_CTRL, false);
154 	seq_printf(p, "%-10s %s(0x%x)\n", "CPROC", (val & 1) ? "ON" : "OFF", val);
155 	val = rkisp_read(dev, CIF_IMG_EFF_CTRL, false);
156 	seq_printf(p, "%-10s %s(0x%x) (effect: %s)\n", "IE",
157 		(val & 1) ? "ON" : "OFF", val,
158 		effect[(val & CIF_IMG_EFF_CTRL_MODE_MASK) >> 1]);
159 	val = rkisp_read(dev, ISP21_DRC_CTRL0, false);
160 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRDRC", (val & 1) ? "ON" : "OFF", val);
161 	val = rkisp_read(dev, ISP_HDRMGE_CTRL, false);
162 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRMGE", (val & 1) ? "ON" : "OFF", val);
163 	val = rkisp_read(dev, ISP21_BAYNR_CTRL, false);
164 	seq_printf(p, "%-10s %s(0x%x)\n", "BAYNR", (val & 1) ? "ON" : "OFF", val);
165 	val = rkisp_read(dev, ISP21_BAY3D_CTRL, false);
166 	seq_printf(p, "%-10s %s(0x%x)\n", "BAY3D", (val & 1) ? "ON" : "OFF", val);
167 	val = rkisp_read(dev, ISP21_YNR_GLOBAL_CTRL, false);
168 	seq_printf(p, "%-10s %s(0x%x)\n", "YNR", (val & 1) ? "ON" : "OFF", val);
169 	val = rkisp_read(dev, ISP21_CNR_CTRL, false);
170 	seq_printf(p, "%-10s %s(0x%x)\n", "CNR", (val & 1) ? "ON" : "OFF", val);
171 	val = rkisp_read(dev, ISP21_SHARP_SHARP_EN, false);
172 	seq_printf(p, "%-10s %s(0x%x)\n", "SHARP", (val & 1) ? "ON" : "OFF", val);
173 	val = rkisp_read(dev, ISP_GIC_CONTROL, false);
174 	seq_printf(p, "%-10s %s(0x%x)\n", "GIC", (val & 1) ? "ON" : "OFF", val);
175 	val = rkisp_read(dev, ISP_DHAZ_CTRL, false);
176 	seq_printf(p, "%-10s %s(0x%x)\n", "DHAZ", (val & 1) ? "ON" : "OFF", val);
177 	val = rkisp_read(dev, ISP_3DLUT_CTRL, false);
178 	seq_printf(p, "%-10s %s(0x%x)\n", "3DLUT", (val & 1) ? "ON" : "OFF", val);
179 	val = rkisp_read(dev, ISP_LDCH_STS, false);
180 	seq_printf(p, "%-10s %s(0x%x)\n", "LDCH", (val & 1) ? "ON" : "OFF", val);
181 	val = rkisp_read(dev, ISP_CTRL, false);
182 	tmp = rkisp_read(dev, ISP_CC_COEFF_0, false);
183 	seq_printf(p, "%-10s %s(0x%x), y_offs:0x%x c_offs:0x%x\n"
184 		   "\t   coeff Y:0x%x 0x%x 0x%x CB:0x%x 0x%x 0x%x CR:0x%x 0x%x 0x%x\n",
185 		   "CSM", (val & full_range_flg) ? "FULL" : "LIMIT", val,
186 		   (tmp >> 24) & 0x3f,
187 		   (tmp >> 16) & 0xff ? (tmp >> 16) & 0xff : 128,
188 		   tmp & 0x1ff,
189 		   rkisp_read(dev, ISP_CC_COEFF_1, false),
190 		   rkisp_read(dev, ISP_CC_COEFF_2, false),
191 		   rkisp_read(dev, ISP_CC_COEFF_3, false),
192 		   rkisp_read(dev, ISP_CC_COEFF_4, false),
193 		   rkisp_read(dev, ISP_CC_COEFF_5, false),
194 		   rkisp_read(dev, ISP_CC_COEFF_6, false),
195 		   rkisp_read(dev, ISP_CC_COEFF_7, false),
196 		   rkisp_read(dev, ISP_CC_COEFF_8, false));
197 	val = rkisp_read(dev, ISP_AFM_CTRL, false);
198 	seq_printf(p, "%-10s %s(0x%x)\n", "SIAF", (val & 1) ? "ON" : "OFF", val);
199 	val = rkisp_read(dev, CIF_ISP_AWB_PROP_V10, false);
200 	seq_printf(p, "%-10s %s(0x%x)\n", "SIAWB",
201 		(val & CIF_ISP_AWB_ENABLE) ? "ON" : "OFF", val);
202 	val = rkisp_read(dev, ISP_YUVAE_CTRL, false);
203 	seq_printf(p, "%-10s %s(0x%x)\n", "YUVAE", (val & 1) ? "ON" : "OFF", val);
204 	val = rkisp_read(dev, ISP_HIST_HIST_CTRL, false);
205 	seq_printf(p, "%-10s %s(0x%x)\n", "SIHST", (val & 1) ? "ON" : "OFF", val);
206 	val = rkisp_read(dev, ISP_RAWAF_CTRL, false);
207 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAF", (val & 1) ? "ON" : "OFF", val);
208 	val = rkisp_read(dev, ISP21_RAWAWB_CTRL, false);
209 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAWB", (val & 1) ? "ON" : "OFF", val);
210 	val = rkisp_read(dev, ISP_RAWAE_LITE_CTRL, false);
211 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE0", (val & 1) ? "ON" : "OFF", val);
212 	val = rkisp_read(dev, RAWAE_BIG2_BASE, false);
213 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE1", (val & 1) ? "ON" : "OFF", val);
214 	val = rkisp_read(dev, RAWAE_BIG3_BASE, false);
215 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE2", (val & 1) ? "ON" : "OFF", val);
216 	val = rkisp_read(dev, RAWAE_BIG1_BASE, false);
217 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE3", (val & 1) ? "ON" : "OFF", val);
218 	val = rkisp_read(dev, ISP_RAWHIST_LITE_CTRL, false);
219 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST0", (val & 1) ? "ON" : "OFF", val);
220 	val = rkisp_read(dev, ISP_RAWHIST_BIG2_BASE, false);
221 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST1", (val & 1) ? "ON" : "OFF", val);
222 	val = rkisp_read(dev, ISP_RAWHIST_BIG3_BASE, false);
223 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST2", (val & 1) ? "ON" : "OFF", val);
224 	val = rkisp_read(dev, ISP_RAWHIST_BIG1_BASE, false);
225 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST3", (val & 1) ? "ON" : "OFF", val);
226 }
227 
isp30_show(struct rkisp_device * dev,struct seq_file * p)228 static void isp30_show(struct rkisp_device *dev, struct seq_file *p)
229 {
230 	u32 full_range_flg = CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA | CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA;
231 	static const char * const effect[] = {
232 		"BLACKWHITE",
233 		"NEGATIVE",
234 		"SEPIA",
235 		"COLOR_SEL",
236 		"EMBOSS",
237 		"SKETCH",
238 		"SHARPEN",
239 		"RKSHARPEN"
240 	};
241 	u32 val, tmp;
242 
243 	val = rkisp_read(dev, ISP3X_CMSK_CTRL0, false);
244 	seq_printf(p, "%-10s %s(0x%x)\n", "CMSK", (val & 1) ? "ON" : "OFF", val);
245 	val = rkisp_read(dev, ISP3X_DPCC0_MODE, false);
246 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC0", (val & 1) ? "ON" : "OFF", val);
247 	val = rkisp_read(dev, ISP3X_DPCC1_MODE, false);
248 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC1", (val & 1) ? "ON" : "OFF", val);
249 	val = rkisp_read(dev, ISP3X_DPCC2_MODE, false);
250 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC2", (val & 1) ? "ON" : "OFF", val);
251 	val = rkisp_read(dev, ISP3X_BLS_CTRL, false);
252 	seq_printf(p, "%-10s %s(0x%x)\n", "BLS", (val & 1) ? "ON" : "OFF", val);
253 	val = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
254 	seq_printf(p, "%-10s %s(0x%x)\n", "SDG", (val & BIT(6)) ? "ON" : "OFF", val);
255 	val = rkisp_read(dev, ISP3X_LSC_CTRL, false);
256 	seq_printf(p, "%-10s %s(0x%x)\n", "LSC", (val & 1) ? "ON" : "OFF", val);
257 	val = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
258 	seq_printf(p, "%-10s %s(0x%x) (gain: 0x%08x, 0x%08x)\n", "AWBGAIN",
259 		   (val & BIT(7)) ? "ON" : "OFF", val,
260 		   rkisp_read(dev, ISP3X_ISP_AWB_GAIN0_G, false),
261 		   rkisp_read(dev, ISP3X_ISP_AWB_GAIN0_RB, false));
262 	val = rkisp_read(dev, ISP3X_DEBAYER_CONTROL, false);
263 	seq_printf(p, "%-10s %s(0x%x)\n", "DEBAYER", (val & 1) ? "ON" : "OFF", val);
264 	val = rkisp_read(dev, ISP3X_CCM_CTRL, false);
265 	seq_printf(p, "%-10s %s(0x%x)\n", "CCM", (val & 1) ? "ON" : "OFF", val);
266 	val = rkisp_read(dev, ISP3X_GAMMA_OUT_CTRL, false);
267 	seq_printf(p, "%-10s %s(0x%x)\n", "GAMMA_OUT", (val & 1) ? "ON" : "OFF", val);
268 	val = rkisp_read(dev, ISP3X_CPROC_CTRL, false);
269 	seq_printf(p, "%-10s %s(0x%x)\n", "CPROC", (val & 1) ? "ON" : "OFF", val);
270 	val = rkisp_read(dev, ISP3X_IMG_EFF_CTRL, false);
271 	seq_printf(p, "%-10s %s(0x%x) (effect: %s)\n", "IE", (val & 1) ? "ON" : "OFF", val,
272 		   effect[(val & CIF_IMG_EFF_CTRL_MODE_MASK) >> 1]);
273 	val = rkisp_read(dev, ISP3X_DRC_CTRL0, false);
274 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRDRC", (val & 1) ? "ON" : "OFF", val);
275 	val = rkisp_read(dev, ISP3X_HDRMGE_CTRL, false);
276 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRMGE", (val & 1) ? "ON" : "OFF", val);
277 	val = rkisp_read(dev, ISP3X_BAYNR_CTRL, false);
278 	seq_printf(p, "%-10s %s(0x%x)\n", "BAYNR", (val & 1) ? "ON" : "OFF", val);
279 	val = rkisp_read(dev, ISP3X_BAY3D_CTRL, false);
280 	seq_printf(p, "%-10s %s(0x%x)\n", "BAY3D", (val & 1) ? "ON" : "OFF", val);
281 	val = rkisp_read(dev, ISP3X_YNR_GLOBAL_CTRL, false);
282 	seq_printf(p, "%-10s %s(0x%x)\n", "YNR", (val & 1) ? "ON" : "OFF", val);
283 	val = rkisp_read(dev, ISP3X_CNR_CTRL, false);
284 	seq_printf(p, "%-10s %s(0x%x)\n", "CNR", (val & 1) ? "ON" : "OFF", val);
285 	val = rkisp_read(dev, ISP3X_SHARP_EN, false);
286 	seq_printf(p, "%-10s %s(0x%x)\n", "SHARP", (val & 1) ? "ON" : "OFF", val);
287 	val = rkisp_read(dev, ISP3X_GIC_CONTROL, false);
288 	seq_printf(p, "%-10s %s(0x%x)\n", "GIC", (val & 1) ? "ON" : "OFF", val);
289 	val = rkisp_read(dev, ISP3X_DHAZ_CTRL, false);
290 	seq_printf(p, "%-10s %s(0x%x)\n", "DHAZ", (val & 1) ? "ON" : "OFF", val);
291 	val = rkisp_read(dev, ISP3X_3DLUT_CTRL, false);
292 	seq_printf(p, "%-10s %s(0x%x)\n", "3DLUT", (val & 1) ? "ON" : "OFF", val);
293 	val = rkisp_read(dev, ISP3X_LDCH_STS, false);
294 	seq_printf(p, "%-10s %s(0x%x)\n", "LDCH", (val & 1) ? "ON" : "OFF", val);
295 	val = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
296 	tmp = rkisp_read(dev, ISP3X_ISP_CC_COEFF_0, false);
297 	seq_printf(p, "%-10s %s(0x%x), y_offs:0x%x c_offs:0x%x\n"
298 		   "\t   coeff Y:0x%x 0x%x 0x%x CB:0x%x 0x%x 0x%x CR:0x%x 0x%x 0x%x\n",
299 		   "CSM", (val & full_range_flg) ? "FULL" : "LIMIT", val,
300 		   (tmp >> 24) & 0x3f,
301 		   (tmp >> 16) & 0xff ? (tmp >> 16) & 0xff : 128,
302 		   tmp & 0x1ff,
303 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_1, false),
304 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_2, false),
305 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_3, false),
306 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_4, false),
307 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_5, false),
308 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_6, false),
309 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_7, false),
310 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_8, false));
311 	val = rkisp_read(dev, ISP3X_CAC_CTRL, false);
312 	seq_printf(p, "%-10s %s(0x%x)\n", "CAC", (val & 1) ? "ON" : "OFF", val);
313 	val = rkisp_read(dev, ISP3X_GAIN_CTRL, false);
314 	seq_printf(p, "%-10s %s(0x%x)\n", "GAIN", (val & 1) ? "ON" : "OFF", val);
315 	val = rkisp_read(dev, ISP3X_RAWAF_CTRL, false);
316 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAF", (val & 1) ? "ON" : "OFF", val);
317 	val = rkisp_read(dev, ISP3X_RAWAWB_CTRL, false);
318 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAWB", (val & 1) ? "ON" : "OFF", val);
319 	val = rkisp_read(dev, ISP3X_RAWAE_LITE_CTRL, false);
320 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE0", (val & 1) ? "ON" : "OFF", val);
321 	val = rkisp_read(dev, ISP3X_RAWAE_BIG2_BASE, false);
322 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE1", (val & 1) ? "ON" : "OFF", val);
323 	val = rkisp_read(dev, ISP3X_RAWAE_BIG3_BASE, false);
324 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE2", (val & 1) ? "ON" : "OFF", val);
325 	val = rkisp_read(dev, ISP3X_RAWAE_BIG1_BASE, false);
326 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE3", (val & 1) ? "ON" : "OFF", val);
327 	val = rkisp_read(dev, ISP3X_RAWHIST_LITE_CTRL, false);
328 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST0", (val & 1) ? "ON" : "OFF", val);
329 	val = rkisp_read(dev, ISP3X_RAWHIST_BIG2_BASE, false);
330 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST1", (val & 1) ? "ON" : "OFF", val);
331 	val = rkisp_read(dev, ISP3X_RAWHIST_BIG3_BASE, false);
332 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST2", (val & 1) ? "ON" : "OFF", val);
333 	val = rkisp_read(dev, ISP3X_RAWHIST_BIG1_BASE, false);
334 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST3", (val & 1) ? "ON" : "OFF", val);
335 	val = rkisp_read(dev, ISP3X_ISP_CTRL1, true);
336 	seq_printf(p, "%-10s %s(0x%x)\n", "BigMode", val & BIT(28) ? "ON" : "OFF", val);
337 	val = rkisp_read(dev, ISP3X_ISP_DEBUG1, true);
338 	seq_printf(p, "%-10s space full status group (0x%x)\n"
339 		   "\t   ibuf2:0x%x ibuf1:0x%x ibuf0:0x%x mpfbc_infifo:0x%x\n"
340 		   "\t   r1fifo:0x%x r0fifo:0x%x outfifo:0x%x lafifo:0x%x\n",
341 		   "DEBUG1", val,
342 		   val >> 28, (val >> 24) & 0xf, (val >> 20) & 0xf, (val >> 16) & 0xf,
343 		   (val >> 12) & 0xf, (val >> 8) & 0xf, (val >> 4) & 0xf, val & 0xf);
344 	val = rkisp_read(dev, ISP3X_ISP_DEBUG2, true);
345 	seq_printf(p, "%-10s 0x%x\n"
346 		   "\t   bay3d_fifo_full iir:%d cur:%d\n"
347 		   "\t   module outform vertical counter:%d, out frame counter:%d\n"
348 		   "\t   isp output line counter:%d\n",
349 		   "DEBUG2", val, !!(val & BIT(31)), !!(val & BIT(30)),
350 		   (val >> 16) & 0x3fff, (val >> 14) & 0x3, val & 0x3fff);
351 	val = rkisp_read(dev, ISP3X_ISP_DEBUG3, true);
352 	seq_printf(p, "%-10s isp pipeline group (0x%x)\n"
353 		   "\t   mge(%d %d) rawnr(%d %d) bay3d(%d %d) tmo(%d %d)\n"
354 		   "\t   gic(%d %d) dbr(%d %d) debayer(%d %d) dhaz(%d %d)\n"
355 		   "\t   lut3d(%d %d) ldch(%d %d) ynr(%d %d) shp(%d %d)\n"
356 		   "\t   cgc(%d %d) cac(%d %d) isp_out(%d %d) isp_in(%d %d)\n",
357 		   "DEBUG3", val,
358 		   !!(val & BIT(31)), !!(val & BIT(30)), !!(val & BIT(29)), !!(val & BIT(28)),
359 		   !!(val & BIT(27)), !!(val & BIT(26)), !!(val & BIT(25)), !!(val & BIT(24)),
360 		   !!(val & BIT(23)), !!(val & BIT(22)), !!(val & BIT(21)), !!(val & BIT(20)),
361 		   !!(val & BIT(19)), !!(val & BIT(18)), !!(val & BIT(17)), !!(val & BIT(16)),
362 		   !!(val & BIT(15)), !!(val & BIT(14)), !!(val & BIT(13)), !!(val & BIT(12)),
363 		   !!(val & BIT(11)), !!(val & BIT(10)), !!(val & BIT(9)), !!(val & BIT(8)),
364 		   !!(val & BIT(7)), !!(val & BIT(6)), !!(val & BIT(5)), !!(val & BIT(4)),
365 		   !!(val & BIT(3)), !!(val & BIT(2)), !!(val & BIT(1)), !!(val & BIT(0)));
366 }
367 
isp30_unite_show(struct rkisp_device * dev,struct seq_file * p)368 static void isp30_unite_show(struct rkisp_device *dev, struct seq_file *p)
369 {
370 	u32 full_range_flg = CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA | CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA;
371 	static const char * const effect[] = {
372 		"BLACKWHITE",
373 		"NEGATIVE",
374 		"SEPIA",
375 		"COLOR_SEL",
376 		"EMBOSS",
377 		"SKETCH",
378 		"SHARPEN",
379 		"RKSHARPEN"
380 	};
381 	u32 v0, v1;
382 
383 	v0 = rkisp_read(dev, ISP3X_CMSK_CTRL0, false);
384 	v1 = rkisp_next_read(dev, ISP3X_CMSK_CTRL0, false);
385 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
386 		   "CMSK",
387 		   (v0 & 1) ? "ON" : "OFF",
388 		   v0, (v1 & 1) ? "ON" : "OFF", v1);
389 	v0 = rkisp_read(dev, ISP3X_DPCC0_MODE, false);
390 	v1 = rkisp_next_read(dev, ISP3X_DPCC0_MODE, false);
391 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
392 		   "DPCC0",
393 		   (v0 & 1) ? "ON" : "OFF", v0,
394 		   (v1 & 1) ? "ON" : "OFF", v1);
395 	v0 = rkisp_read(dev, ISP3X_DPCC1_MODE, false);
396 	v1 = rkisp_next_read(dev, ISP3X_DPCC1_MODE, false);
397 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
398 		   "DPCC1",
399 		   (v0 & 1) ? "ON" : "OFF", v0,
400 		   (v1 & 1) ? "ON" : "OFF", v1);
401 	v0 = rkisp_read(dev, ISP3X_DPCC2_MODE, false);
402 	v1 = rkisp_next_read(dev, ISP3X_DPCC2_MODE, false);
403 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
404 		   "DPCC2",
405 		   (v0 & 1) ? "ON" : "OFF", v0,
406 		   (v1 & 1) ? "ON" : "OFF", v1);
407 	v0 = rkisp_read(dev, ISP3X_BLS_CTRL, false);
408 	v1 = rkisp_next_read(dev, ISP3X_BLS_CTRL, false);
409 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
410 		   "BLS",
411 		   (v0 & 1) ? "ON" : "OFF", v0,
412 		   (v1 & 1) ? "ON" : "OFF", v1);
413 	v0 = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
414 	v1 = rkisp_next_read(dev, ISP3X_ISP_CTRL0, false);
415 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
416 		   "SDG",
417 		   (v0 & BIT(6)) ? "ON" : "OFF", v0,
418 		   (v1 & BIT(6)) ? "ON" : "OFF", v1);
419 	v0 = rkisp_read(dev, ISP3X_LSC_CTRL, false);
420 	v1 = rkisp_next_read(dev, ISP3X_LSC_CTRL, false);
421 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
422 		   "LSC",
423 		   (v0 & 1) ? "ON" : "OFF", v0,
424 		   (v1 & 1) ? "ON" : "OFF", v1);
425 	v0 = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
426 	v1 = rkisp_next_read(dev, ISP3X_ISP_CTRL0, false);
427 	seq_printf(p, "%-10s Left %s(0x%x) gain:0x%08x 0x%08x, Right %s(0x%x) gain:0x%08x 0x%08x\n",
428 		   "AWBGAIN",
429 		   (v0 & BIT(7)) ? "ON" : "OFF", v0,
430 		   rkisp_read(dev, ISP3X_ISP_AWB_GAIN0_G, false),
431 		   rkisp_read(dev, ISP3X_ISP_AWB_GAIN0_RB, false),
432 		   (v1 & BIT(7)) ? "ON" : "OFF", v1,
433 		   rkisp_next_read(dev, ISP3X_ISP_AWB_GAIN0_G, false),
434 		   rkisp_next_read(dev, ISP3X_ISP_AWB_GAIN0_RB, false));
435 	v0 = rkisp_read(dev, ISP3X_DEBAYER_CONTROL, false);
436 	v1 = rkisp_next_read(dev, ISP3X_DEBAYER_CONTROL, false);
437 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
438 		   "DEBAYER",
439 		   (v0 & 1) ? "ON" : "OFF", v0,
440 		   (v1 & 1) ? "ON" : "OFF", v1);
441 	v0 = rkisp_read(dev, ISP3X_CCM_CTRL, false);
442 	v1 = rkisp_next_read(dev, ISP3X_CCM_CTRL, false);
443 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
444 		   "CCM",
445 		   (v0 & 1) ? "ON" : "OFF", v0,
446 		   (v1 & 1) ? "ON" : "OFF", v1);
447 	v0 = rkisp_read(dev, ISP3X_GAMMA_OUT_CTRL, false);
448 	v1 = rkisp_next_read(dev, ISP3X_GAMMA_OUT_CTRL, false);
449 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
450 		   "GAMMA_OUT",
451 		   (v0 & 1) ? "ON" : "OFF", v0,
452 		   (v1 & 1) ? "ON" : "OFF", v1);
453 	v0 = rkisp_read(dev, ISP3X_CPROC_CTRL, false);
454 	v1 = rkisp_next_read(dev, ISP3X_CPROC_CTRL, false);
455 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
456 		   "CPROC",
457 		   (v0 & 1) ? "ON" : "OFF", v0,
458 		   (v1 & 1) ? "ON" : "OFF", v1);
459 	v0 = rkisp_read(dev, ISP3X_IMG_EFF_CTRL, false);
460 	v1 = rkisp_next_read(dev, ISP3X_IMG_EFF_CTRL, false);
461 	seq_printf(p, "%-10s Left %s(0x%x) effect:%s, Right %s(0x%x) effect:%s\n",
462 		   "IE",
463 		   (v0 & 1) ? "ON" : "OFF", v0,
464 		   effect[(v0 & CIF_IMG_EFF_CTRL_MODE_MASK) >> 1],
465 		   (v1 & 1) ? "ON" : "OFF", v1,
466 		   effect[(v1 & CIF_IMG_EFF_CTRL_MODE_MASK) >> 1]);
467 	v0 = rkisp_read(dev, ISP3X_DRC_CTRL0, false);
468 	v1 = rkisp_next_read(dev, ISP3X_DRC_CTRL0, false);
469 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
470 		   "HDRDRC",
471 		   (v0 & 1) ? "ON" : "OFF", v0,
472 		   (v1 & 1) ? "ON" : "OFF", v1);
473 	v0 = rkisp_read(dev, ISP3X_HDRMGE_CTRL, false);
474 	v1 = rkisp_next_read(dev, ISP3X_HDRMGE_CTRL, false);
475 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
476 		   "HDRMGE",
477 		   (v0 & 1) ? "ON" : "OFF", v0,
478 		   (v1 & 1) ? "ON" : "OFF", v1);
479 	v0 = rkisp_read(dev, ISP3X_BAYNR_CTRL, false);
480 	v1 = rkisp_next_read(dev, ISP3X_BAYNR_CTRL, false);
481 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
482 		   "BAYNR",
483 		   (v0 & 1) ? "ON" : "OFF", v0,
484 		   (v1 & 1) ? "ON" : "OFF", v1);
485 	v0 = rkisp_read(dev, ISP3X_BAY3D_CTRL, false);
486 	v1 = rkisp_next_read(dev, ISP3X_BAY3D_CTRL, false);
487 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
488 		   "BAY3D",
489 		   (v0 & 1) ? "ON" : "OFF", v0,
490 		   (v1 & 1) ? "ON" : "OFF", v1);
491 	v0 = rkisp_read(dev, ISP3X_YNR_GLOBAL_CTRL, false);
492 	v1 = rkisp_next_read(dev, ISP3X_YNR_GLOBAL_CTRL, false);
493 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
494 		   "YNR",
495 		   (v0 & 1) ? "ON" : "OFF", v0,
496 		   (v1 & 1) ? "ON" : "OFF", v1);
497 	v0 = rkisp_read(dev, ISP3X_CNR_CTRL, false);
498 	v1 = rkisp_next_read(dev, ISP3X_CNR_CTRL, false);
499 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
500 		   "CNR",
501 		   (v0 & 1) ? "ON" : "OFF", v0,
502 		   (v1 & 1) ? "ON" : "OFF", v1);
503 	v0 = rkisp_read(dev, ISP3X_SHARP_EN, false);
504 	v1 = rkisp_next_read(dev, ISP3X_SHARP_EN, false);
505 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
506 		   "SHARP",
507 		   (v0 & 1) ? "ON" : "OFF", v0,
508 		   (v1 & 1) ? "ON" : "OFF", v1);
509 	v0 = rkisp_read(dev, ISP3X_GIC_CONTROL, false);
510 	v1 = rkisp_next_read(dev, ISP3X_GIC_CONTROL, false);
511 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
512 		   "GIC",
513 		   (v0 & 1) ? "ON" : "OFF", v0,
514 		   (v1 & 1) ? "ON" : "OFF", v1);
515 	v0 = rkisp_read(dev, ISP3X_DHAZ_CTRL, false);
516 	v1 = rkisp_next_read(dev, ISP3X_DHAZ_CTRL, false);
517 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
518 		   "DHAZ",
519 		   (v0 & 1) ? "ON" : "OFF", v0,
520 		   (v1 & 1) ? "ON" : "OFF", v1);
521 	v0 = rkisp_read(dev, ISP3X_3DLUT_CTRL, false);
522 	v1 = rkisp_next_read(dev, ISP3X_3DLUT_CTRL, false);
523 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
524 		   "3DLUT",
525 		   (v0 & 1) ? "ON" : "OFF", v0,
526 		   (v1 & 1) ? "ON" : "OFF", v1);
527 	v0 = rkisp_read(dev, ISP3X_LDCH_STS, false);
528 	v1 = rkisp_next_read(dev, ISP3X_LDCH_STS, false);
529 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
530 		   "LDCH",
531 		   (v0 & 1) ? "ON" : "OFF", v0,
532 		   (v1 & 1) ? "ON" : "OFF", v1);
533 	v0 = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
534 	v1 = rkisp_next_read(dev, ISP3X_ISP_CTRL0, false);
535 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
536 		   "CSM",
537 		   (v0 & full_range_flg) ? "FULL" : "LIMIT", v0,
538 		   (v1 & full_range_flg) ? "FULL" : "LIMIT", v1);
539 	v0 = rkisp_read(dev, ISP3X_CAC_CTRL, false);
540 	v1 = rkisp_next_read(dev, ISP3X_CAC_CTRL, false);
541 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
542 		   "CAC",
543 		   (v0 & 1) ? "ON" : "OFF", v0,
544 		   (v1 & 1) ? "ON" : "OFF", v1);
545 	v0 = rkisp_read(dev, ISP3X_GAIN_CTRL, false);
546 	v1 = rkisp_next_read(dev, ISP3X_GAIN_CTRL, false);
547 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
548 		   "GAIN",
549 		   (v0 & 1) ? "ON" : "OFF", v0,
550 		   (v1 & 1) ? "ON" : "OFF", v1);
551 	v0 = rkisp_read(dev, ISP3X_RAWAF_CTRL, false);
552 	v1 = rkisp_next_read(dev, ISP3X_RAWAF_CTRL, false);
553 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
554 		   "RAWAF",
555 		   (v0 & 1) ? "ON" : "OFF", v0,
556 		   (v1 & 1) ? "ON" : "OFF", v1);
557 	v0 = rkisp_read(dev, ISP3X_RAWAWB_CTRL, false);
558 	v1 = rkisp_next_read(dev, ISP3X_RAWAWB_CTRL, false);
559 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
560 		   "RAWAWB",
561 		   (v0 & 1) ? "ON" : "OFF", v0,
562 		   (v1 & 1) ? "ON" : "OFF", v1);
563 	v0 = rkisp_read(dev, ISP3X_RAWAE_LITE_CTRL, false);
564 	v1 = rkisp_next_read(dev, ISP3X_RAWAE_LITE_CTRL, false);
565 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
566 		   "RAWAE0",
567 		   (v0 & 1) ? "ON" : "OFF", v0,
568 		   (v1 & 1) ? "ON" : "OFF", v1);
569 	v0 = rkisp_read(dev, ISP3X_RAWAE_BIG2_BASE, false);
570 	v1 = rkisp_next_read(dev, ISP3X_RAWAE_BIG2_BASE, false);
571 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
572 		   "RAWAE1",
573 		   (v0 & 1) ? "ON" : "OFF", v0,
574 		   (v1 & 1) ? "ON" : "OFF", v1);
575 	v0 = rkisp_read(dev, ISP3X_RAWAE_BIG3_BASE, false);
576 	v1 = rkisp_next_read(dev, ISP3X_RAWAE_BIG3_BASE, false);
577 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
578 		   "RAWAE2",
579 		   (v0 & 1) ? "ON" : "OFF", v0,
580 		   (v1 & 1) ? "ON" : "OFF", v1);
581 	v0 = rkisp_read(dev, ISP3X_RAWAE_BIG1_BASE, false);
582 	v1 = rkisp_next_read(dev, ISP3X_RAWAE_BIG1_BASE, false);
583 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
584 		   "RAWAE3",
585 		   (v0 & 1) ? "ON" : "OFF", v0,
586 		   (v1 & 1) ? "ON" : "OFF", v1);
587 	v0 = rkisp_read(dev, ISP3X_RAWHIST_LITE_CTRL, false);
588 	v1 = rkisp_next_read(dev, ISP3X_RAWHIST_LITE_CTRL, false);
589 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
590 		   "RAWHIST0",
591 		   (v0 & 1) ? "ON" : "OFF", v0,
592 		   (v1 & 1) ? "ON" : "OFF", v1);
593 	v0 = rkisp_read(dev, ISP3X_RAWHIST_BIG2_BASE, false);
594 	v1 = rkisp_next_read(dev, ISP3X_RAWHIST_BIG2_BASE, false);
595 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
596 		   "RAWHIST1",
597 		   (v0 & 1) ? "ON" : "OFF", v0,
598 		   (v1 & 1) ? "ON" : "OFF", v1);
599 	v0 = rkisp_read(dev, ISP3X_RAWHIST_BIG3_BASE, false);
600 	v1 = rkisp_next_read(dev, ISP3X_RAWHIST_BIG3_BASE, false);
601 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
602 		   "RAWHIST2",
603 		   (v0 & 1) ? "ON" : "OFF", v0,
604 		   (v1 & 1) ? "ON" : "OFF", v1);
605 	v0 = rkisp_read(dev, ISP3X_RAWHIST_BIG1_BASE, false);
606 	v1 = rkisp_next_read(dev, ISP3X_RAWHIST_BIG1_BASE, false);
607 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
608 		   "RAWHIST3",
609 		   (v0 & 1) ? "ON" : "OFF", v0,
610 		   (v1 & 1) ? "ON" : "OFF", v1);
611 	v0 = rkisp_read(dev, ISP3X_ISP_CTRL1, true);
612 	v1 = rkisp_next_read(dev, ISP3X_ISP_CTRL1, true);
613 	seq_printf(p, "%-10s Left %s(0x%x), Right %s(0x%x)\n",
614 		   "BigMode",
615 		   v0 & BIT(28) ? "ON" : "OFF", v0,
616 		   v1 & BIT(28) ? "ON" : "OFF", v1);
617 	v0 = rkisp_read(dev, ISP3X_ISP_DEBUG1, true);
618 	v1 = rkisp_next_read(dev, ISP3X_ISP_DEBUG1, true);
619 	seq_printf(p, "%-10s space full status group. Left:0x%x Right:0x%x\n"
620 		   "\t   ibuf2(L:0x%x R:0x%x) ibuf1(L:0x%x R:0x%x)\n"
621 		   "\t   ibuf0(L:0x%x R:0x%x) mpfbc_infifo(L:0x%x R:0x%x)\n"
622 		   "\t   r1fifo(L:0x%x R:0x%x) r0fifo(L:0x%x R:0x%x)\n"
623 		   "\t   outfifo(L:0x%x R:0x%x) lafifo(L:0x%x R:0x%x)\n",
624 		   "DEBUG1", v0, v1,
625 		   v0 >> 28, v1 >> 28, (v0 >> 24) & 0xf, (v1 >> 24) & 0xf,
626 		   (v0 >> 20) & 0xf, (v1 >> 20) & 0xf, (v0 >> 16) & 0xf, (v1 >> 16) & 0xf,
627 		   (v0 >> 12) & 0xf, (v1 >> 12) & 0xf, (v0 >> 8) & 0xf, (v1 >> 8) & 0xf,
628 		   (v0 >> 4) & 0xf, (v1 >> 4) & 0xf, v0 & 0xf, v1 & 0xf);
629 	v0 = rkisp_read(dev, ISP3X_ISP_DEBUG2, true);
630 	v1 = rkisp_next_read(dev, ISP3X_ISP_DEBUG2, true);
631 	seq_printf(p, "%-10s Left:0x%x Right:0x%x\n"
632 		   "\t   bay3d_fifo_full iir(L:%d R:%d) cur(L:%d R:%d)\n"
633 		   "\t   module outform vertical counter(L:%d R:%d), out frame counter:(L:%d R:%d)\n"
634 		   "\t   isp output line counter(L:%d R:%d)\n",
635 		   "DEBUG2", v0, v1,
636 		   !!(v0 & BIT(31)), !!(v1 & BIT(31)), !!(v0 & BIT(30)), !!(v1 & BIT(30)),
637 		   (v0 >> 16) & 0x3fff, (v1 >> 16) & 0x3fff, (v0 >> 14) & 0x3, (v1 >> 14) & 0x3,
638 		   v0 & 0x3fff, v1 & 0x3fff);
639 	v0 = rkisp_read(dev, ISP3X_ISP_DEBUG3, true);
640 	v1 = rkisp_next_read(dev, ISP3X_ISP_DEBUG3, true);
641 	seq_printf(p, "%-10s isp pipeline group Left:0x%x Right:0x%x\n"
642 		   "\t   mge(L:%d %d R:%d %d) rawnr(L:%d %d R:%d %d)\n"
643 		   "\t   bay3d(L:%d %d R:%d %d) tmo(L:%d %d R:%d %d)\n"
644 		   "\t   gic(L:%d %d R:%d %d) dbr(L:%d %d R:%d %d)\n"
645 		   "\t   debayer(L:%d %d R:%d %d) dhaz(L:%d %d R:%d %d)\n"
646 		   "\t   lut3d(L:%d %d R:%d %d) ldch(L:%d %d R:%d %d)\n"
647 		   "\t   ynr(L:%d %d R:%d %d) shp(L:%d %d R:%d %d)\n"
648 		   "\t   cgc(L:%d %d R:%d %d) cac(L:%d %d R:%d %d)\n"
649 		   "\t   isp_out(L:%d %d R:%d %d) isp_in(L:%d %d R:%d %d)\n",
650 		   "DEBUG3", v0, v1,
651 		   !!(v0 & BIT(31)), !!(v0 & BIT(30)), !!(v1 & BIT(31)), !!(v1 & BIT(30)),
652 		   !!(v0 & BIT(29)), !!(v0 & BIT(28)), !!(v1 & BIT(29)), !!(v1 & BIT(28)),
653 		   !!(v0 & BIT(27)), !!(v0 & BIT(26)), !!(v1 & BIT(27)), !!(v1 & BIT(26)),
654 		   !!(v0 & BIT(25)), !!(v0 & BIT(24)), !!(v1 & BIT(25)), !!(v1 & BIT(24)),
655 		   !!(v0 & BIT(23)), !!(v0 & BIT(22)), !!(v1 & BIT(23)), !!(v1 & BIT(22)),
656 		   !!(v0 & BIT(21)), !!(v0 & BIT(20)), !!(v1 & BIT(21)), !!(v1 & BIT(20)),
657 		   !!(v0 & BIT(19)), !!(v0 & BIT(18)), !!(v1 & BIT(19)), !!(v1 & BIT(18)),
658 		   !!(v0 & BIT(17)), !!(v0 & BIT(16)), !!(v1 & BIT(17)), !!(v1 & BIT(16)),
659 		   !!(v0 & BIT(15)), !!(v0 & BIT(14)), !!(v1 & BIT(15)), !!(v1 & BIT(14)),
660 		   !!(v0 & BIT(13)), !!(v0 & BIT(12)), !!(v1 & BIT(13)), !!(v1 & BIT(12)),
661 		   !!(v0 & BIT(11)), !!(v0 & BIT(10)), !!(v1 & BIT(11)), !!(v1 & BIT(10)),
662 		   !!(v0 & BIT(9)), !!(v0 & BIT(8)), !!(v1 & BIT(9)), !!(v1 & BIT(8)),
663 		   !!(v0 & BIT(7)), !!(v0 & BIT(6)), !!(v1 & BIT(7)), !!(v1 & BIT(6)),
664 		   !!(v0 & BIT(5)), !!(v0 & BIT(4)), !!(v1 & BIT(5)), !!(v1 & BIT(4)),
665 		   !!(v0 & BIT(3)), !!(v0 & BIT(2)), !!(v1 & BIT(3)), !!(v1 & BIT(2)),
666 		   !!(v0 & BIT(1)), !!(v0 & BIT(0)), !!(v1 & BIT(1)), !!(v1 & BIT(0)));
667 }
668 
isp32_show(struct rkisp_device * dev,struct seq_file * p)669 static void isp32_show(struct rkisp_device *dev, struct seq_file *p)
670 {
671 	u32 full_range_flg = CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA | CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA;
672 	static const char * const effect[] = {
673 		"BLACKWHITE",
674 		"NEGATIVE",
675 		"SEPIA",
676 		"COLOR_SEL",
677 		"EMBOSS",
678 		"SKETCH",
679 		"SHARPEN",
680 		"RKSHARPEN"
681 	};
682 	struct rkisp_isp_params_val_v32 *priv;
683 	u32 val, tmp;
684 
685 	priv = (struct rkisp_isp_params_val_v32 *)dev->params_vdev.priv_val;
686 
687 	if (dev->isp_ver == ISP_V32) {
688 		seq_printf(p, "%-10s %s warp:%d\n", "ISP2ENC",
689 			   dev->cap_dev.wrap_line ? "online" : "offline",
690 			   dev->cap_dev.wrap_line);
691 		tmp = rkisp_read(dev, ISP32_MI_WR_VFLIP_CTRL, false);
692 		val = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
693 		seq_printf(p, "%-10s mirror:%d flip(mp:%d sp:%d bp:%d mpds:%d bpds:%d)\n",
694 			   "MIR_FLIP", !!(val & BIT(5)),
695 			   !!(tmp & BIT(0)), !!(tmp & BIT(1)), !!(tmp & BIT(2)),
696 			   !!(tmp & BIT(4)), !!(tmp & BIT(5)));
697 		val = rkisp_read(dev, ISP3X_BAYNR_CTRL, false);
698 		seq_printf(p, "%-10s %s(0x%x)\n", "BAYNR", (val & 1) ? "ON" : "OFF", val);
699 		val = rkisp_read(dev, ISP3X_GIC_CONTROL, false);
700 		seq_printf(p, "%-10s %s(0x%x)\n", "GIC", (val & 1) ? "ON" : "OFF", val);
701 		val = rkisp_read(dev, ISP3X_CAC_CTRL, false);
702 		seq_printf(p, "%-10s %s(0x%x)\n", "CAC", (val & 1) ? "ON" : "OFF", val);
703 		val = rkisp_read(dev, ISP32_VSM_MODE, false);
704 		seq_printf(p, "%-10s %s(0x%x)\n", "VSM", (val & 1) ? "ON" : "OFF", val);
705 	}
706 	val = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
707 	seq_printf(p, "%-10s %s(0x%x)\n", "SDG", (val & BIT(6)) ? "ON" : "OFF", val);
708 	seq_printf(p, "%-10s %s(0x%x) (gain0:0x%08x 0x%08x gain1:0x%x 0x%x)\n", "AWBGAIN",
709 		   (val & BIT(7)) ? "ON" : "OFF", val,
710 		   rkisp_read(dev, ISP3X_ISP_AWB_GAIN0_G, false),
711 		   rkisp_read(dev, ISP3X_ISP_AWB_GAIN0_RB, false),
712 		   rkisp_read(dev, ISP32_ISP_AWB1_GAIN_G, false),
713 		   rkisp_read(dev, ISP32_ISP_AWB1_GAIN_RB, false));
714 	val = rkisp_read(dev, ISP3X_CMSK_CTRL0, false);
715 	seq_printf(p, "%-10s %s(0x%x)\n", "CMSK", (val & 1) ? "ON" : "OFF", val);
716 	val = rkisp_read(dev, ISP3X_DPCC0_MODE, false);
717 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC0", (val & 1) ? "ON" : "OFF", val);
718 	val = rkisp_read(dev, ISP3X_DPCC1_MODE, false);
719 	seq_printf(p, "%-10s %s(0x%x)\n", "DPCC1", (val & 1) ? "ON" : "OFF", val);
720 	val = rkisp_read(dev, ISP3X_BLS_CTRL, false);
721 	seq_printf(p, "%-10s %s(0x%x)\n", "BLS", (val & 1) ? "ON" : "OFF", val);
722 	val = rkisp_read(dev, ISP3X_LSC_CTRL, false);
723 	seq_printf(p, "%-10s %s(0x%x)\n", "LSC", (val & 1) ? "ON" : "OFF", val);
724 	val = rkisp_read(dev, ISP3X_DEBAYER_CONTROL, false);
725 	seq_printf(p, "%-10s %s(0x%x)\n", "DEBAYER", (val & 1) ? "ON" : "OFF", val);
726 	val = rkisp_read(dev, ISP3X_CCM_CTRL, false);
727 	seq_printf(p, "%-10s %s(0x%x)\n", "CCM", (val & 1) ? "ON" : "OFF", val);
728 	val = rkisp_read(dev, ISP3X_GAMMA_OUT_CTRL, false);
729 	seq_printf(p, "%-10s %s(0x%x)\n", "GAMMA_OUT", (val & 1) ? "ON" : "OFF", val);
730 	val = rkisp_read(dev, ISP3X_CPROC_CTRL, false);
731 	seq_printf(p, "%-10s %s(0x%x)\n", "CPROC", (val & 1) ? "ON" : "OFF", val);
732 	val = rkisp_read(dev, ISP3X_IMG_EFF_CTRL, false);
733 	seq_printf(p, "%-10s %s(0x%x) (effect: %s)\n", "IE", (val & 1) ? "ON" : "OFF", val,
734 		   effect[(val & CIF_IMG_EFF_CTRL_MODE_MASK) >> 1]);
735 	val = rkisp_read(dev, ISP3X_DRC_CTRL0, false);
736 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRDRC", (val & 1) ? "ON" : "OFF", val);
737 	val = rkisp_read(dev, ISP3X_HDRMGE_CTRL, false);
738 	seq_printf(p, "%-10s %s(0x%x)\n", "HDRMGE", (val & 1) ? "ON" : "OFF", val);
739 	val = rkisp_read(dev, ISP3X_BAY3D_CTRL, false);
740 	tmp = rkisp_read(dev, ISP32_BAY3D_CTRL1, false);
741 	seq_printf(p, "%-10s %s(0x%x 0x%x) bypass:%d bwsaving:%d mode:(%s %s)\n", "BAY3D",
742 		   (val & 1) ? "ON" : "OFF", val, tmp, !!(val & BIT(1)), !!(val & BIT(13)),
743 		   (tmp & BIT(4)) ? "lo4x4" : ((tmp & BIT(3)) ? "lo4x8" : "lo8x8"),
744 		   priv->is_sram ? "sram" : "ddr");
745 	val = rkisp_read(dev, ISP3X_YNR_GLOBAL_CTRL, false);
746 	seq_printf(p, "%-10s %s(0x%x)\n", "YNR", (val & 1) ? "ON" : "OFF", val);
747 	val = rkisp_read(dev, ISP3X_CNR_CTRL, false);
748 	seq_printf(p, "%-10s %s(0x%x)\n", "CNR", (val & 1) ? "ON" : "OFF", val);
749 	val = rkisp_read(dev, ISP3X_SHARP_EN, false);
750 	seq_printf(p, "%-10s %s(0x%x)\n", "SHARP", (val & 1) ? "ON" : "OFF", val);
751 	val = rkisp_read(dev, ISP3X_DHAZ_CTRL, false);
752 	seq_printf(p, "%-10s %s(0x%x)\n", "DHAZ", (val & 1) ? "ON" : "OFF", val);
753 	val = rkisp_read(dev, ISP3X_3DLUT_CTRL, false);
754 	seq_printf(p, "%-10s %s(0x%x)\n", "3DLUT", (val & 1) ? "ON" : "OFF", val);
755 	val = rkisp_read(dev, ISP3X_LDCH_STS, false);
756 	seq_printf(p, "%-10s %s(0x%x)\n", "LDCH", (val & 1) ? "ON" : "OFF", val);
757 	val = rkisp_read(dev, ISP3X_ISP_CTRL0, false);
758 	tmp = rkisp_read(dev, ISP3X_ISP_CC_COEFF_0, false);
759 	seq_printf(p, "%-10s %s(0x%x), y_offs:0x%x c_offs:0x%x\n"
760 		   "\t   coeff Y:0x%x 0x%x 0x%x CB:0x%x 0x%x 0x%x CR:0x%x 0x%x 0x%x\n",
761 		   "CSM", (val & full_range_flg) ? "FULL" : "LIMIT", val,
762 		   (tmp >> 24) & 0x3f,
763 		   (tmp >> 16) & 0xff ? (tmp >> 16) & 0xff : 128,
764 		   tmp & 0x1ff,
765 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_1, false),
766 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_2, false),
767 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_3, false),
768 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_4, false),
769 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_5, false),
770 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_6, false),
771 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_7, false),
772 		   rkisp_read(dev, ISP3X_ISP_CC_COEFF_8, false));
773 	val = rkisp_read(dev, ISP3X_GAIN_CTRL, false);
774 	seq_printf(p, "%-10s %s(0x%x)\n", "GAIN", (val & 1) ? "ON" : "OFF", val);
775 	val = rkisp_read(dev, ISP3X_RAWAF_CTRL, false);
776 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAF", (val & 1) ? "ON" : "OFF", val);
777 	val = rkisp_read(dev, ISP3X_RAWAWB_CTRL, false);
778 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAWB", (val & 1) ? "ON" : "OFF", val);
779 	val = rkisp_read(dev, ISP3X_RAWAE_LITE_CTRL, false);
780 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE0", (val & 1) ? "ON" : "OFF", val);
781 	val = rkisp_read(dev, ISP3X_RAWAE_BIG2_BASE, false);
782 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE1", (val & 1) ? "ON" : "OFF", val);
783 	val = rkisp_read(dev, ISP3X_RAWAE_BIG1_BASE, false);
784 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWAE3", (val & 1) ? "ON" : "OFF", val);
785 	val = rkisp_read(dev, ISP3X_RAWHIST_LITE_CTRL, false);
786 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST0", (val & 1) ? "ON" : "OFF", val);
787 	val = rkisp_read(dev, ISP3X_RAWHIST_BIG2_BASE, false);
788 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST1", (val & 1) ? "ON" : "OFF", val);
789 	val = rkisp_read(dev, ISP3X_RAWHIST_BIG1_BASE, false);
790 	seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST3", (val & 1) ? "ON" : "OFF", val);
791 	val = rkisp_read(dev, ISP3X_ISP_CTRL1, true);
792 	seq_printf(p, "%-10s %s(0x%x)\n", "BigMode", val & BIT(28) ? "ON" : "OFF", val);
793 	val = rkisp_read(dev, ISP32_BLS_ISP_OB_PREDGAIN, false);
794 	seq_printf(p, "%-10s %s(0x%x)\n", "OB", val ? "ON" : "OFF", val);
795 	val = rkisp_read(dev, ISP3X_ISP_DEBUG1, true);
796 	seq_printf(p, "%-10s space full status group (0x%x)\n"
797 		   "\t   ibuf2:0x%x ibuf1:0x%x ibuf0:0x%x mpfbc_infifo:0x%x\n"
798 		   "\t   r1fifo:0x%x r0fifo:0x%x outfifo:0x%x lafifo:0x%x\n",
799 		   "DEBUG1", val,
800 		   val >> 28, (val >> 24) & 0xf, (val >> 20) & 0xf, (val >> 16) & 0xf,
801 		   (val >> 12) & 0xf, (val >> 8) & 0xf, (val >> 4) & 0xf, val & 0xf);
802 	val = rkisp_read(dev, ISP3X_ISP_DEBUG2, true);
803 	seq_printf(p, "%-10s 0x%x\n"
804 		   "\t   bay3d_fifo_full iir:%d cur:%d\n"
805 		   "\t   module outform vertical counter:%d, out frame counter:%d\n"
806 		   "\t   isp output line counter:%d\n",
807 		   "DEBUG2", val, !!(val & BIT(31)), !!(val & BIT(30)),
808 		   (val >> 16) & 0x3fff, (val >> 14) & 0x3, val & 0x3fff);
809 	val = rkisp_read(dev, ISP3X_ISP_DEBUG3, true);
810 	seq_printf(p, "%-10s isp pipeline group (0x%x)\n"
811 		   "\t   mge(%d %d) rawnr(%d %d) bay3d(%d %d) tmo(%d %d)\n"
812 		   "\t   gic(%d %d) dbr(%d %d) debayer(%d %d) dhaz(%d %d)\n"
813 		   "\t   lut3d(%d %d) ldch(%d %d) ynr(%d %d) shp(%d %d)\n"
814 		   "\t   cgc(%d %d) cac(%d %d) isp_out(%d %d) isp_in(%d %d)\n",
815 		   "DEBUG3", val,
816 		   !!(val & BIT(31)), !!(val & BIT(30)), !!(val & BIT(29)), !!(val & BIT(28)),
817 		   !!(val & BIT(27)), !!(val & BIT(26)), !!(val & BIT(25)), !!(val & BIT(24)),
818 		   !!(val & BIT(23)), !!(val & BIT(22)), !!(val & BIT(21)), !!(val & BIT(20)),
819 		   !!(val & BIT(19)), !!(val & BIT(18)), !!(val & BIT(17)), !!(val & BIT(16)),
820 		   !!(val & BIT(15)), !!(val & BIT(14)), !!(val & BIT(13)), !!(val & BIT(12)),
821 		   !!(val & BIT(11)), !!(val & BIT(10)), !!(val & BIT(9)), !!(val & BIT(8)),
822 		   !!(val & BIT(7)), !!(val & BIT(6)), !!(val & BIT(5)), !!(val & BIT(4)),
823 		   !!(val & BIT(3)), !!(val & BIT(2)), !!(val & BIT(1)), !!(val & BIT(0)));
824 	val = rkisp_read(dev, ISP32_ISP_DEBUG4, true);
825 	seq_printf(p, "%-10s isp pipeline group (0x%x)\n"
826 		   "\t   expd(%d %d) ynr(%d %d)\n",
827 		   "DEBUG4", val,
828 		   !!(val & BIT(3)), !!(val & BIT(2)), !!(val & BIT(1)), !!(val & BIT(0)));
829 }
830 
isp_show(struct seq_file * p,void * v)831 static int isp_show(struct seq_file *p, void *v)
832 {
833 	struct rkisp_device *dev = p->private;
834 	struct rkisp_isp_subdev *sdev = &dev->isp_sdev;
835 	struct rkisp_sensor_info *sensor = dev->active_sensor;
836 	u32 val = 0;
837 
838 	seq_printf(p, "%-10s Version:v%02x.%02x.%02x\n",
839 		   dev->name,
840 		   RKISP_DRIVER_VERSION >> 16,
841 		   (RKISP_DRIVER_VERSION & 0xff00) >> 8,
842 		   RKISP_DRIVER_VERSION & 0x00ff);
843 	for (val = 0; val < dev->hw_dev->num_clks; val++) {
844 		seq_printf(p, "%-10s %ld\n",
845 			   dev->hw_dev->match_data->clks[val],
846 			   clk_get_rate(dev->hw_dev->clks[val]));
847 	}
848 
849 	seq_printf(p, "%-10s Cnt:%d ErrCnt:%d\n",
850 		   "Interrupt",
851 		   dev->isp_isr_cnt,
852 		   dev->isp_err_cnt);
853 
854 	if (sensor && sensor->fi.interval.numerator)
855 		val = sensor->fi.interval.denominator / sensor->fi.interval.numerator;
856 	seq_printf(p, "%-10s %s Format:%s Size:%dx%d@%dfps Offset(%d,%d)\n",
857 		   "Input",
858 		   sensor ? sensor->sd->name : NULL,
859 		   sdev->in_fmt.name,
860 		   sdev->in_crop.width, sdev->in_crop.height, val,
861 		   sdev->in_crop.left, sdev->in_crop.top);
862 
863 	if (!(dev->isp_state & ISP_START))
864 		return 0;
865 
866 	if (IS_HDR_RDBK(dev->hdr.op_mode)) {
867 		seq_printf(p, "%-10s mode:frame%d (frame:%d rate:%dms %s time:%dms frameloss:%d) cnt(total:%d X1:%d X2:%d X3:%d)\n",
868 			   "Isp Read",
869 			   dev->rd_mode - 3,
870 			   dev->dmarx_dev.cur_frame.id,
871 			   (u32)(dev->dmarx_dev.cur_frame.timestamp - dev->dmarx_dev.pre_frame.timestamp) / 1000 / 1000,
872 			   (dev->isp_state & ISP_FRAME_END) ? "idle" : "working",
873 			   sdev->dbg.interval / 1000 / 1000,
874 			   sdev->dbg.frameloss,
875 			   dev->rdbk_cnt,
876 			   dev->rdbk_cnt_x1,
877 			   dev->rdbk_cnt_x2,
878 			   dev->rdbk_cnt_x3);
879 		seq_printf(p, "\t   hw link:%d idle:%d vir(mode:%d index:%d)\n",
880 			   dev->hw_dev->dev_link_num, dev->hw_dev->is_idle,
881 			   dev->multi_mode, dev->multi_index);
882 	} else {
883 		seq_printf(p, "%-10s frame:%d %s time:%dms v-blank:%dus\n",
884 			   "Isp online",
885 			   sdev->dbg.id,
886 			   (dev->isp_state & ISP_FRAME_END) ? "idle" : "working",
887 			   sdev->dbg.interval / 1000 / 1000,
888 			   sdev->dbg.delay / 1000);
889 	}
890 	if (dev->br_dev.en)
891 		seq_printf(p, "%-10s rkispp%d Format:%s%s Size:%dx%d (frame:%d rate:%dms frameloss:%d)\n",
892 			   "Output",
893 			   dev->dev_id,
894 			   (dev->br_dev.work_mode & ISP_ISPP_FBC) ? "FBC" : "YUV",
895 			   (dev->br_dev.work_mode & ISP_ISPP_422) ? "422" : "420",
896 			   dev->br_dev.crop.width,
897 			   dev->br_dev.crop.height,
898 			   dev->br_dev.dbg.id,
899 			   dev->br_dev.dbg.interval / 1000 / 1000,
900 			   dev->br_dev.dbg.frameloss);
901 	for (val = 0; val < RKISP_MAX_STREAM; val++) {
902 		struct rkisp_stream *stream = &dev->cap_dev.stream[val];
903 
904 		if (!stream->streaming)
905 			continue;
906 		seq_printf(p, "%-10s %s Format:%c%c%c%c Size:%dx%d Dcrop(%d,%d|%dx%d) (frame:%d rate:%dms delay:%dms frameloss:%d)\n",
907 			   "Output",
908 			   stream->vnode.vdev.name,
909 			   stream->out_fmt.pixelformat,
910 			   stream->out_fmt.pixelformat >> 8,
911 			   stream->out_fmt.pixelformat >> 16,
912 			   stream->out_fmt.pixelformat >> 24,
913 			   stream->out_fmt.width,
914 			   stream->out_fmt.height,
915 			   stream->dcrop.left,
916 			   stream->dcrop.top,
917 			   stream->dcrop.width,
918 			   stream->dcrop.height,
919 			   stream->dbg.id,
920 			   stream->dbg.interval / 1000 / 1000,
921 			   stream->dbg.delay / 1000 / 1000,
922 			   stream->dbg.frameloss);
923 	}
924 
925 	switch (dev->isp_ver) {
926 	case ISP_V20:
927 		if (IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V20))
928 			isp20_show(dev, p);
929 		break;
930 	case ISP_V21:
931 		if (IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V21))
932 			isp21_show(dev, p);
933 		break;
934 	case ISP_V30:
935 		if (IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V30)) {
936 			if (dev->hw_dev->is_unite)
937 				isp30_unite_show(dev, p);
938 			else
939 				isp30_show(dev, p);
940 		}
941 		break;
942 	case ISP_V32:
943 	case ISP_V32_L:
944 		if (IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V32))
945 			isp32_show(dev, p);
946 		break;
947 	default:
948 		break;
949 	}
950 
951 	seq_printf(p, "%-10s %s Cnt:%d\n\n",
952 		   "Monitor",
953 		   dev->hw_dev->monitor.is_en ? "ON" : "OFF",
954 		   dev->hw_dev->monitor.retry);
955 	seq_printf(p, "%-10s mode:0x%x\n",
956 		   "Debug", dev->procfs.mode);
957 	if (dev->procfs.mode & RKISP_PROCFS_DUMP_REG) {
958 		int ret, i;
959 
960 		dev->procfs.is_fs_wait = true;
961 		ret = wait_event_timeout(dev->procfs.fs_wait,
962 					 !dev->procfs.is_fs_wait,
963 					 msecs_to_jiffies(1000));
964 		seq_printf(p, "****************HW REG*Ret:%d**************\n", ret);
965 		for (i = 0; i < ISP3X_RAWAWB_RAM_DATA_BASE; i += 16) {
966 			if (!dev->hw_dev->is_unite) {
967 				seq_printf(p, "%04x:  %08x %08x %08x %08x\n", i,
968 					   rkisp_read(dev, i, true),
969 					   rkisp_read(dev, i + 4, true),
970 					   rkisp_read(dev, i + 8, true),
971 					   rkisp_read(dev, i + 12, true));
972 			} else {
973 				seq_printf(p, "%04x:  %08x %08x %08x %08x | %08x %08x %08x %08x\n", i,
974 					   rkisp_read(dev, i, true),
975 					   rkisp_read(dev, i + 4, true),
976 					   rkisp_read(dev, i + 8, true),
977 					   rkisp_read(dev, i + 12, true),
978 					   rkisp_next_read(dev, i, true),
979 					   rkisp_next_read(dev, i + 4, true),
980 					   rkisp_next_read(dev, i + 8, true),
981 					   rkisp_next_read(dev, i + 12, true));
982 			}
983 		}
984 	}
985 	return 0;
986 }
987 
rkisp_proc_dump_mem(struct rkisp_device * dev)988 static void rkisp_proc_dump_mem(struct rkisp_device *dev)
989 {
990 	const struct vb2_mem_ops *g_ops = dev->hw_dev->mem_ops;
991 	void *iir_addr = NULL, *cur_addr = NULL, *ds_addr = NULL;
992 	u32 iir_size, cur_size, ds_size;
993 	struct file *fp = NULL;
994 	char file[256];
995 
996 	if (!IS_ENABLED(CONFIG_NO_GKI))
997 		return;
998 
999 	dev->procfs.is_fs_wait = true;
1000 	wait_event_timeout(dev->procfs.fe_wait,
1001 			   !dev->procfs.is_fe_wait,
1002 			   msecs_to_jiffies(1000));
1003 
1004 	if (dev->isp_ver == ISP_V30) {
1005 		struct rkisp_isp_params_val_v3x *p = dev->params_vdev.priv_val;
1006 
1007 		if (p->buf_3dnr_iir[0].mem_priv) {
1008 			if (!p->buf_3dnr_iir[0].is_need_vaddr)
1009 				p->buf_3dnr_iir[0].vaddr = g_ops->vaddr(p->buf_3dnr_iir[0].mem_priv);
1010 			iir_addr = p->buf_3dnr_iir[0].vaddr;
1011 			iir_size = p->buf_3dnr_iir[0].size;
1012 		}
1013 		if (p->buf_3dnr_cur[0].mem_priv) {
1014 			if (!p->buf_3dnr_cur[0].is_need_vaddr)
1015 				p->buf_3dnr_cur[0].vaddr = g_ops->vaddr(p->buf_3dnr_cur[0].mem_priv);
1016 			cur_addr = p->buf_3dnr_cur[0].vaddr;
1017 			cur_size = p->buf_3dnr_cur[0].size;
1018 		}
1019 		if (p->buf_3dnr_ds[0].mem_priv) {
1020 			if (!p->buf_3dnr_ds[0].is_need_vaddr)
1021 				p->buf_3dnr_ds[0].vaddr = g_ops->vaddr(p->buf_3dnr_ds[0].mem_priv);
1022 			ds_addr = p->buf_3dnr_ds[0].vaddr;
1023 			ds_size = p->buf_3dnr_ds[0].size;
1024 		}
1025 	}
1026 
1027 	if (iir_addr) {
1028 		snprintf(file, sizeof(file), "/tmp/%s_bay3d_iir", dev->name);
1029 		fp = filp_open(file, O_RDWR | O_CREAT, 0644);
1030 		if (IS_ERR(fp)) {
1031 			dev_err(dev->dev, "open %s fail\n", file);
1032 			return;
1033 		}
1034 		kernel_write(fp, iir_addr, iir_size, &fp->f_pos);
1035 		filp_close(fp, NULL);
1036 	}
1037 	if (cur_addr) {
1038 		snprintf(file, sizeof(file), "/tmp/%s_bay3d_cur", dev->name);
1039 		fp = filp_open(file, O_RDWR | O_CREAT, 0644);
1040 		if (IS_ERR(fp)) {
1041 			dev_err(dev->dev, "open %s fail\n", file);
1042 			return;
1043 		}
1044 		kernel_write(fp, cur_addr, cur_size, &fp->f_pos);
1045 		filp_close(fp, NULL);
1046 	}
1047 	if (ds_addr) {
1048 		snprintf(file, sizeof(file), "/tmp/%s_bay3d_ds", dev->name);
1049 		fp = filp_open(file, O_RDWR | O_CREAT, 0644);
1050 		if (IS_ERR(fp)) {
1051 			dev_err(dev->dev, "open %s fail\n", file);
1052 			return;
1053 		}
1054 		kernel_write(fp, ds_addr, ds_size, &fp->f_pos);
1055 		filp_close(fp, NULL);
1056 	}
1057 }
1058 
rkisp_proc_write(struct file * file,const char __user * user_buf,size_t user_len,loff_t * pos)1059 static ssize_t rkisp_proc_write(struct file *file,
1060 				const char __user *user_buf,
1061 				size_t user_len, loff_t *pos)
1062 {
1063 	struct rkisp_device *dev = PDE_DATA(file_inode(file));
1064 	char *tmp, *buf = vmalloc(user_len + 1);
1065 	u32 val, reg;
1066 	int ret;
1067 
1068 	if (!buf)
1069 		return -ENOMEM;
1070 	if (copy_from_user(buf, user_buf, user_len) != 0) {
1071 		vfree(buf);
1072 		return -EFAULT;
1073 	}
1074 	if (buf[user_len - 1] == '\n')
1075 		buf[user_len - 1] = 0;
1076 	else
1077 		buf[user_len] = 0;
1078 	dev_info(dev->dev, "%s cnt:%zu %s\n", __func__, user_len, buf);
1079 	tmp = strstr(buf, "mode=");
1080 	if (tmp) {
1081 		tmp += 5;
1082 		ret = kstrtou32(tmp, 16, &val);
1083 		if (ret)
1084 			goto end;
1085 		dev->procfs.mode = val;
1086 		if (val & RKISP_PROCFS_DUMP_MEM)
1087 			rkisp_proc_dump_mem(dev);
1088 	} else if (dev->procfs.mode &
1089 		   (RKISP_PROCFS_FIL_AIQ | RKISP_PROCFS_FIL_SW)) {
1090 		char *p_reg, *p_val;
1091 
1092 		p_reg = buf;
1093 		tmp = strstr(p_reg, "=");
1094 		while (tmp) {
1095 			*tmp = '\0';
1096 			ret = kstrtou32(p_reg, 16, &reg);
1097 			if (ret)
1098 				goto end;
1099 			p_val = tmp + 1;
1100 			tmp = strstr(p_val, " ");
1101 			if (tmp) {
1102 				*tmp = '\0';
1103 				p_reg = tmp + 1;
1104 			}
1105 			ret = kstrtou32(p_val, 16, &val);
1106 			if (ret)
1107 				goto end;
1108 			if (dev->procfs.mode & RKISP_PROCFS_FIL_SW)
1109 				writel(val, dev->hw_dev->base_addr + reg);
1110 			else
1111 				rkisp_write(dev, reg, val, false);
1112 
1113 			tmp = strstr(p_reg, "=");
1114 		}
1115 	}
1116 end:
1117 	vfree(buf);
1118 	return user_len;
1119 }
1120 
isp_open(struct inode * inode,struct file * file)1121 static int isp_open(struct inode *inode, struct file *file)
1122 {
1123 	struct rkisp_device *data = PDE_DATA(inode);
1124 
1125 	return single_open(file, isp_show, data);
1126 }
1127 
1128 static const struct proc_ops ops = {
1129 	.proc_open	= isp_open,
1130 	.proc_read	= seq_read,
1131 	.proc_lseek	= seq_lseek,
1132 	.proc_release	= single_release,
1133 	.proc_write	= rkisp_proc_write,
1134 };
1135 
rkisp_proc_init(struct rkisp_device * dev)1136 int rkisp_proc_init(struct rkisp_device *dev)
1137 {
1138 	memset(&dev->procfs, 0, sizeof(dev->procfs));
1139 	dev->procfs.procfs = proc_create_data(dev->name, 0, NULL, &ops, dev);
1140 	if (!dev->procfs.procfs)
1141 		return -EINVAL;
1142 	init_waitqueue_head(&dev->procfs.fs_wait);
1143 	init_waitqueue_head(&dev->procfs.fe_wait);
1144 	return 0;
1145 }
1146 
rkisp_proc_cleanup(struct rkisp_device * dev)1147 void rkisp_proc_cleanup(struct rkisp_device *dev)
1148 {
1149 	if (dev->procfs.procfs)
1150 		remove_proc_entry(dev->name, NULL);
1151 	dev->procfs.procfs = NULL;
1152 }
1153 
1154 #endif /* CONFIG_PROC_FS */
1155