forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/platform/rockchip/isp/procfs.c
....@@ -10,6 +10,8 @@
1010 #include "version.h"
1111 #include "regs.h"
1212 #include "regs_v2x.h"
13
+#include "isp_params_v3x.h"
14
+#include "isp_params_v32.h"
1315
1416 #ifdef CONFIG_PROC_FS
1517
....@@ -124,7 +126,7 @@
124126 "SHARPEN",
125127 "RKSHARPEN"
126128 };
127
- u32 val;
129
+ u32 val, tmp;
128130
129131 val = rkisp_read(dev, ISP_DPCC0_MODE, false);
130132 seq_printf(p, "%-10s %s(0x%x)\n", "DPCC0", (val & 1) ? "ON" : "OFF", val);
....@@ -177,9 +179,21 @@
177179 val = rkisp_read(dev, ISP_LDCH_STS, false);
178180 seq_printf(p, "%-10s %s(0x%x)\n", "LDCH", (val & 1) ? "ON" : "OFF", val);
179181 val = rkisp_read(dev, ISP_CTRL, false);
180
- seq_printf(p, "%-10s %s(0x%x)\n", "CSM",
181
- (val & full_range_flg) ? "FULL" : "LIMITED", val);
182
-
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));
183197 val = rkisp_read(dev, ISP_AFM_CTRL, false);
184198 seq_printf(p, "%-10s %s(0x%x)\n", "SIAF", (val & 1) ? "ON" : "OFF", val);
185199 val = rkisp_read(dev, CIF_ISP_AWB_PROP_V10, false);
....@@ -211,6 +225,609 @@
211225 seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST3", (val & 1) ? "ON" : "OFF", val);
212226 }
213227
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
+
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
+
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
+
214831 static int isp_show(struct seq_file *p, void *v)
215832 {
216833 struct rkisp_device *dev = p->private;
....@@ -228,8 +845,6 @@
228845 dev->hw_dev->match_data->clks[val],
229846 clk_get_rate(dev->hw_dev->clks[val]));
230847 }
231
- if (!(dev->isp_state & ISP_START))
232
- return 0;
233848
234849 seq_printf(p, "%-10s Cnt:%d ErrCnt:%d\n",
235850 "Interrupt",
....@@ -244,7 +859,11 @@
244859 sdev->in_fmt.name,
245860 sdev->in_crop.width, sdev->in_crop.height, val,
246861 sdev->in_crop.left, sdev->in_crop.top);
247
- if (IS_HDR_RDBK(dev->hdr.op_mode))
862
+
863
+ if (!(dev->isp_state & ISP_START))
864
+ return 0;
865
+
866
+ if (IS_HDR_RDBK(dev->hdr.op_mode)) {
248867 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",
249868 "Isp Read",
250869 dev->rd_mode - 3,
....@@ -257,14 +876,17 @@
257876 dev->rdbk_cnt_x1,
258877 dev->rdbk_cnt_x2,
259878 dev->rdbk_cnt_x3);
260
- else
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 {
261883 seq_printf(p, "%-10s frame:%d %s time:%dms v-blank:%dus\n",
262884 "Isp online",
263885 sdev->dbg.id,
264886 (dev->isp_state & ISP_FRAME_END) ? "idle" : "working",
265887 sdev->dbg.interval / 1000 / 1000,
266888 sdev->dbg.delay / 1000);
267
-
889
+ }
268890 if (dev->br_dev.en)
269891 seq_printf(p, "%-10s rkispp%d Format:%s%s Size:%dx%d (frame:%d rate:%dms frameloss:%d)\n",
270892 "Output",
....@@ -281,7 +903,7 @@
281903
282904 if (!stream->streaming)
283905 continue;
284
- seq_printf(p, "%-10s %s Format:%c%c%c%c Size:%dx%d (frame:%d rate:%dms delay:%dms frameloss:%d)\n",
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",
285907 "Output",
286908 stream->vnode.vdev.name,
287909 stream->out_fmt.pixelformat,
....@@ -290,6 +912,10 @@
290912 stream->out_fmt.pixelformat >> 24,
291913 stream->out_fmt.width,
292914 stream->out_fmt.height,
915
+ stream->dcrop.left,
916
+ stream->dcrop.top,
917
+ stream->dcrop.width,
918
+ stream->dcrop.height,
293919 stream->dbg.id,
294920 stream->dbg.interval / 1000 / 1000,
295921 stream->dbg.delay / 1000 / 1000,
....@@ -298,20 +924,198 @@
298924
299925 switch (dev->isp_ver) {
300926 case ISP_V20:
301
- isp20_show(dev, p);
927
+ if (IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V20))
928
+ isp20_show(dev, p);
302929 break;
303930 case ISP_V21:
304
- isp21_show(dev, p);
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->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);
305946 break;
306947 default:
307948 break;
308949 }
309950
310
- seq_printf(p, "%-10s %s Cnt:%d\n",
951
+ seq_printf(p, "%-10s %s Cnt:%d\n\n",
311952 "Monitor",
312953 dev->hw_dev->monitor.is_en ? "ON" : "OFF",
313954 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->unite != ISP_UNITE_TWO) {
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
+ }
314985 return 0;
986
+}
987
+
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
+
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;
3151119 }
3161120
3171121 static int isp_open(struct inode *inode, struct file *file)
....@@ -321,27 +1125,30 @@
3211125 return single_open(file, isp_show, data);
3221126 }
3231127
324
-static const struct file_operations ops = {
325
- .owner = THIS_MODULE,
326
- .open = isp_open,
327
- .read = seq_read,
328
- .llseek = seq_lseek,
329
- .release = single_release,
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,
3301134 };
3311135
3321136 int rkisp_proc_init(struct rkisp_device *dev)
3331137 {
334
- dev->procfs = proc_create_data(dev->name, 0, NULL, &ops, dev);
335
- if (!dev->procfs)
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)
3361141 return -EINVAL;
1142
+ init_waitqueue_head(&dev->procfs.fs_wait);
1143
+ init_waitqueue_head(&dev->procfs.fe_wait);
3371144 return 0;
3381145 }
3391146
3401147 void rkisp_proc_cleanup(struct rkisp_device *dev)
3411148 {
342
- if (dev->procfs)
1149
+ if (dev->procfs.procfs)
3431150 remove_proc_entry(dev->name, NULL);
344
- dev->procfs = NULL;
1151
+ dev->procfs.procfs = NULL;
3451152 }
3461153
3471154 #endif /* CONFIG_PROC_FS */