| .. | .. |
|---|
| 10 | 10 | #include "version.h" |
|---|
| 11 | 11 | #include "regs.h" |
|---|
| 12 | 12 | #include "regs_v2x.h" |
|---|
| 13 | +#include "isp_params_v3x.h" |
|---|
| 14 | +#include "isp_params_v32.h" |
|---|
| 13 | 15 | |
|---|
| 14 | 16 | #ifdef CONFIG_PROC_FS |
|---|
| 15 | 17 | |
|---|
| .. | .. |
|---|
| 124 | 126 | "SHARPEN", |
|---|
| 125 | 127 | "RKSHARPEN" |
|---|
| 126 | 128 | }; |
|---|
| 127 | | - u32 val; |
|---|
| 129 | + u32 val, tmp; |
|---|
| 128 | 130 | |
|---|
| 129 | 131 | val = rkisp_read(dev, ISP_DPCC0_MODE, false); |
|---|
| 130 | 132 | seq_printf(p, "%-10s %s(0x%x)\n", "DPCC0", (val & 1) ? "ON" : "OFF", val); |
|---|
| .. | .. |
|---|
| 177 | 179 | val = rkisp_read(dev, ISP_LDCH_STS, false); |
|---|
| 178 | 180 | seq_printf(p, "%-10s %s(0x%x)\n", "LDCH", (val & 1) ? "ON" : "OFF", val); |
|---|
| 179 | 181 | 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)); |
|---|
| 183 | 197 | val = rkisp_read(dev, ISP_AFM_CTRL, false); |
|---|
| 184 | 198 | seq_printf(p, "%-10s %s(0x%x)\n", "SIAF", (val & 1) ? "ON" : "OFF", val); |
|---|
| 185 | 199 | val = rkisp_read(dev, CIF_ISP_AWB_PROP_V10, false); |
|---|
| .. | .. |
|---|
| 211 | 225 | seq_printf(p, "%-10s %s(0x%x)\n", "RAWHIST3", (val & 1) ? "ON" : "OFF", val); |
|---|
| 212 | 226 | } |
|---|
| 213 | 227 | |
|---|
| 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 | + |
|---|
| 214 | 831 | static int isp_show(struct seq_file *p, void *v) |
|---|
| 215 | 832 | { |
|---|
| 216 | 833 | struct rkisp_device *dev = p->private; |
|---|
| .. | .. |
|---|
| 228 | 845 | dev->hw_dev->match_data->clks[val], |
|---|
| 229 | 846 | clk_get_rate(dev->hw_dev->clks[val])); |
|---|
| 230 | 847 | } |
|---|
| 231 | | - if (!(dev->isp_state & ISP_START)) |
|---|
| 232 | | - return 0; |
|---|
| 233 | 848 | |
|---|
| 234 | 849 | seq_printf(p, "%-10s Cnt:%d ErrCnt:%d\n", |
|---|
| 235 | 850 | "Interrupt", |
|---|
| .. | .. |
|---|
| 244 | 859 | sdev->in_fmt.name, |
|---|
| 245 | 860 | sdev->in_crop.width, sdev->in_crop.height, val, |
|---|
| 246 | 861 | 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)) { |
|---|
| 248 | 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", |
|---|
| 249 | 868 | "Isp Read", |
|---|
| 250 | 869 | dev->rd_mode - 3, |
|---|
| .. | .. |
|---|
| 257 | 876 | dev->rdbk_cnt_x1, |
|---|
| 258 | 877 | dev->rdbk_cnt_x2, |
|---|
| 259 | 878 | 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 { |
|---|
| 261 | 883 | seq_printf(p, "%-10s frame:%d %s time:%dms v-blank:%dus\n", |
|---|
| 262 | 884 | "Isp online", |
|---|
| 263 | 885 | sdev->dbg.id, |
|---|
| 264 | 886 | (dev->isp_state & ISP_FRAME_END) ? "idle" : "working", |
|---|
| 265 | 887 | sdev->dbg.interval / 1000 / 1000, |
|---|
| 266 | 888 | sdev->dbg.delay / 1000); |
|---|
| 267 | | - |
|---|
| 889 | + } |
|---|
| 268 | 890 | if (dev->br_dev.en) |
|---|
| 269 | 891 | seq_printf(p, "%-10s rkispp%d Format:%s%s Size:%dx%d (frame:%d rate:%dms frameloss:%d)\n", |
|---|
| 270 | 892 | "Output", |
|---|
| .. | .. |
|---|
| 281 | 903 | |
|---|
| 282 | 904 | if (!stream->streaming) |
|---|
| 283 | 905 | 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", |
|---|
| 285 | 907 | "Output", |
|---|
| 286 | 908 | stream->vnode.vdev.name, |
|---|
| 287 | 909 | stream->out_fmt.pixelformat, |
|---|
| .. | .. |
|---|
| 290 | 912 | stream->out_fmt.pixelformat >> 24, |
|---|
| 291 | 913 | stream->out_fmt.width, |
|---|
| 292 | 914 | stream->out_fmt.height, |
|---|
| 915 | + stream->dcrop.left, |
|---|
| 916 | + stream->dcrop.top, |
|---|
| 917 | + stream->dcrop.width, |
|---|
| 918 | + stream->dcrop.height, |
|---|
| 293 | 919 | stream->dbg.id, |
|---|
| 294 | 920 | stream->dbg.interval / 1000 / 1000, |
|---|
| 295 | 921 | stream->dbg.delay / 1000 / 1000, |
|---|
| .. | .. |
|---|
| 298 | 924 | |
|---|
| 299 | 925 | switch (dev->isp_ver) { |
|---|
| 300 | 926 | case ISP_V20: |
|---|
| 301 | | - isp20_show(dev, p); |
|---|
| 927 | + if (IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISP_VERSION_V20)) |
|---|
| 928 | + isp20_show(dev, p); |
|---|
| 302 | 929 | break; |
|---|
| 303 | 930 | 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); |
|---|
| 305 | 946 | break; |
|---|
| 306 | 947 | default: |
|---|
| 307 | 948 | break; |
|---|
| 308 | 949 | } |
|---|
| 309 | 950 | |
|---|
| 310 | | - seq_printf(p, "%-10s %s Cnt:%d\n", |
|---|
| 951 | + seq_printf(p, "%-10s %s Cnt:%d\n\n", |
|---|
| 311 | 952 | "Monitor", |
|---|
| 312 | 953 | dev->hw_dev->monitor.is_en ? "ON" : "OFF", |
|---|
| 313 | 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->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 | + } |
|---|
| 314 | 985 | 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, ®); |
|---|
| 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; |
|---|
| 315 | 1119 | } |
|---|
| 316 | 1120 | |
|---|
| 317 | 1121 | static int isp_open(struct inode *inode, struct file *file) |
|---|
| .. | .. |
|---|
| 321 | 1125 | return single_open(file, isp_show, data); |
|---|
| 322 | 1126 | } |
|---|
| 323 | 1127 | |
|---|
| 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, |
|---|
| 330 | 1134 | }; |
|---|
| 331 | 1135 | |
|---|
| 332 | 1136 | int rkisp_proc_init(struct rkisp_device *dev) |
|---|
| 333 | 1137 | { |
|---|
| 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) |
|---|
| 336 | 1141 | return -EINVAL; |
|---|
| 1142 | + init_waitqueue_head(&dev->procfs.fs_wait); |
|---|
| 1143 | + init_waitqueue_head(&dev->procfs.fe_wait); |
|---|
| 337 | 1144 | return 0; |
|---|
| 338 | 1145 | } |
|---|
| 339 | 1146 | |
|---|
| 340 | 1147 | void rkisp_proc_cleanup(struct rkisp_device *dev) |
|---|
| 341 | 1148 | { |
|---|
| 342 | | - if (dev->procfs) |
|---|
| 1149 | + if (dev->procfs.procfs) |
|---|
| 343 | 1150 | remove_proc_entry(dev->name, NULL); |
|---|
| 344 | | - dev->procfs = NULL; |
|---|
| 1151 | + dev->procfs.procfs = NULL; |
|---|
| 345 | 1152 | } |
|---|
| 346 | 1153 | |
|---|
| 347 | 1154 | #endif /* CONFIG_PROC_FS */ |
|---|