When capturing camera data, ISI status register reports error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

When capturing camera data, ISI status register reports error

Jump to solution
1,761 Views
Tong
Contributor I

I am porting JXH62 camera sensor to i.mx8 mn. JXH62 sensor outputs 10bit RGB raw data in 1 MIPI CSI2 lane.

The problem I am having now, is when mxc_isi_irq_handler is called, the CHNL_STS value is 0x60020200, bit  CHNL_STS_EXCS_OFLW_Y_BUF_MASK is set,
and the captured picture is almost black.

Here is the ISI register value in case it might help.

66.829927] mxc-isi 32e20000.isi: ISI CHNLC register dump, isi0
[ 66.833022] mxc-isi 32e20000.isi: CHNL_CTRL[0x00]: c0000000
[ 66.833027] mxc-isi 32e20000.isi: CHNL_IMG_CTRL[0x04]: a000009
[ 66.833031] mxc-isi 32e20000.isi: CHNL_OUT_BUF_CTRL[0x08]: 7c707
[ 66.833035] mxc-isi 32e20000.isi: CHNL_IMG_CFG[0x0c]: 2f00510
[ 66.833039] mxc-isi 32e20000.isi: CHNL_IER[0x10]: 3df80000
[ 66.833043] mxc-isi 32e20000.isi: CHNL_STS[0x14]: 100
[ 66.833047] mxc-isi 32e20000.isi: CHNL_SCALE_FACTOR[0x18]: 10b61033
[ 66.833051] mxc-isi 32e20000.isi: CHNL_SCALE_OFFSET[0x1c]: 00
[ 66.833057] mxc-isi 32e20000.isi: CHNL_CROP_ULC[0x20]: 00
[ 66.833061] mxc-isi 32e20000.isi: CHNL_CROP_LRC[0x24]: 00
[ 66.833065] mxc-isi 32e20000.isi: CHNL_CSC_COEFF0[0x28]: 00
[ 66.833069] mxc-isi 32e20000.isi: CHNL_CSC_COEFF1[0x2c]: 00
[ 66.833073] mxc-isi 32e20000.isi: CHNL_CSC_COEFF2[0x30]: 00
[ 66.833077] mxc-isi 32e20000.isi: CHNL_CSC_COEFF3[0x34]: 00
[ 66.833081] mxc-isi 32e20000.isi: CHNL_CSC_COEFF4[0x38]: 00
[ 66.833085] mxc-isi 32e20000.isi: CHNL_CSC_COEFF5[0x3c]: 00
[ 66.833089] mxc-isi 32e20000.isi: CHNL_ROI_0_ALPHA[0x40]: 00
[ 66.833096] mxc-isi 32e20000.isi: CHNL_ROI_0_ULC[0x44]: 00
[ 66.833100] mxc-isi 32e20000.isi: CHNL_ROI_0_LRC[0x48]: 00
[ 66.833105] mxc-isi 32e20000.isi: CHNL_ROI_1_ALPHA[0x4c]: 00
[ 66.833108] mxc-isi 32e20000.isi: CHNL_ROI_1_ULC[0x50]: 00
[ 66.833113] mxc-isi 32e20000.isi: CHNL_ROI_1_LRC[0x54]: 00
[ 66.833116] mxc-isi 32e20000.isi: CHNL_ROI_2_ALPHA[0x58]: 00
[ 66.833120] mxc-isi 32e20000.isi: CHNL_ROI_2_ULC[0x5c]: 00
[ 66.833124] mxc-isi 32e20000.isi: CHNL_ROI_2_LRC[0x60]: 00
[ 66.833128] mxc-isi 32e20000.isi: CHNL_ROI_3_ALPHA[0x64]: 00
[ 66.833132] mxc-isi 32e20000.isi: CHNL_ROI_3_ULC[0x68]: 00
[ 66.833136] mxc-isi 32e20000.isi: CHNL_ROI_3_LRC[0x6c]: 00
[ 66.833140] mxc-isi 32e20000.isi: CHNL_OUT_BUF1_ADDR_Y[0x70]: 80a00000
[ 66.833144] mxc-isi 32e20000.isi: CHNL_OUT_BUF1_ADDR_U[0x74]: 00
[ 66.833148] mxc-isi 32e20000.isi: CHNL_OUT_BUF1_ADDR_V[0x78]: 00
[ 66.833152] mxc-isi 32e20000.isi: CHNL_OUT_BUF_PITCH[0x7c]: a00
[ 66.833156] mxc-isi 32e20000.isi: CHNL_IN_BUF_ADDR[0x80]: 00
[ 66.833161] mxc-isi 32e20000.isi: CHNL_IN_BUF_PITCH[0x84]: 654
[ 66.833166] mxc-isi 32e20000.isi: CHNL_MEM_RD_CTRL[0x88]: 00
[ 66.833170] mxc-isi 32e20000.isi: CHNL_OUT_BUF2_ADDR_Y[0x8c]: 80200000
[ 66.833173] mxc-isi 32e20000.isi: CHNL_OUT_BUF2_ADDR_U[0x90]: 00
[ 66.833177] mxc-isi 32e20000.isi: CHNL_OUT_BUF2_ADDR_V[0x94]: 00
[ 66.833181] mxc-isi 32e20000.isi: CHNL_SCL_IMG_CFG[0x98]: 2d00500
[ 66.833185] mxc-isi 32e20000.isi: CHNL_FLOW_CTRL[0x9c]: 00

I am looking for hint what might go wrong, as I am not able to find any document to describe ISI status register error.

 

Thanks a lot.

0 Kudos
1 Solution
1,660 Views
jamesbone
NXP TechSupport
NXP TechSupport

It overflows because it sends way too many data per line.

 

View solution in original post

0 Kudos
7 Replies
1,691 Views
Tong
Contributor I

Hi Jamesbone,

Question regarding to your comment below:

 since  ISI module does not allow upscale and  the error it is related to buffer overflows, which means we have miss the data, or buffer has not enough space to got the data.

And according to i.MX8mn reference manual:

• In case an overflow does occur, ISI aborts storing pixels from the current line and resyncs to the next line and starts storing pixels thereon. The status of overflow in buffers is indicated via interrupt bits - CHNL_STS[OFLW_n_BUF], where n = Y, U, V.

So, if overflow happens, does it means the camera sensor doesn't send enough data per line, or because sensor sends way too many data per line?

 

Thanks,

Tong

0 Kudos
1,661 Views
jamesbone
NXP TechSupport
NXP TechSupport

It overflows because it sends way too many data per line.

 

0 Kudos
1,655 Views
Tong
Contributor I

Thanks for the explanation. I tune my driver's data and fix this problem.

0 Kudos
1,691 Views
Tong
Contributor I

Camera sensor outputs 1926X752 matries of pixels. We use same resolution for output, the command line to capture a frame is:

v4l2-ctl --device /dev/video0 --set-fmt-video=width=1296,height=752,pixelformat=RAW10; v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1

0 Kudos
1,701 Views
Tong
Contributor I

Thanks for your reply. I change to use RAW16, but the status register still has error bit.

mxc_isi_irq_handler status=0x60020200

Here is my settings:

struct mxc_isi_fmt mxc_isi_out_formats[] = {
{
.name = "RAW10",
.fourcc = V4L2_PIX_FMT_SBGGR10,
.depth = { 16 },
.color = MXC_ISI_OUT_FMT_RAW16,
.memplanes = 1,
.colplanes = 1,
.mbus_code = MEDIA_BUS_FMT_SBGGR10_1X10,
},

ISI register dump:

Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.632036] mxc-isi 32e20000.isi: ISI CHNLC register dump, isi0
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635114] mxc-isi 32e20000.isi: CHNL_CTRL[0x00]: e0000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635120] mxc-isi 32e20000.isi: CHNL_IMG_CTRL[0x04]: f000001
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635124] mxc-isi 32e20000.isi: CHNL_OUT_BUF_CTRL[0x08]: 7c707
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635129] mxc-isi 32e20000.isi: CHNL_IMG_CFG[0x0c]: 2f00510
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635133] mxc-isi 32e20000.isi: CHNL_IER[0x10]: 3df80000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635139] mxc-isi 32e20000.isi: CHNL_STS[0x14]: 200
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635143] mxc-isi 32e20000.isi: CHNL_SCALE_FACTOR[0x18]: 10001000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635147] mxc-isi 32e20000.isi: CHNL_SCALE_OFFSET[0x1c]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635152] mxc-isi 32e20000.isi: CHNL_CROP_ULC[0x20]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635156] mxc-isi 32e20000.isi: CHNL_CROP_LRC[0x24]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635161] mxc-isi 32e20000.isi: CHNL_CSC_COEFF0[0x28]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635165] mxc-isi 32e20000.isi: CHNL_CSC_COEFF1[0x2c]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635170] mxc-isi 32e20000.isi: CHNL_CSC_COEFF2[0x30]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635174] mxc-isi 32e20000.isi: CHNL_CSC_COEFF3[0x34]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635179] mxc-isi 32e20000.isi: CHNL_CSC_COEFF4[0x38]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635184] mxc-isi 32e20000.isi: CHNL_CSC_COEFF5[0x3c]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635189] mxc-isi 32e20000.isi: CHNL_ROI_0_ALPHA[0x40]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635193] mxc-isi 32e20000.isi: CHNL_ROI_0_ULC[0x44]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635197] mxc-isi 32e20000.isi: CHNL_ROI_0_LRC[0x48]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635203] mxc-isi 32e20000.isi: CHNL_ROI_1_ALPHA[0x4c]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635207] mxc-isi 32e20000.isi: CHNL_ROI_1_ULC[0x50]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635211] mxc-isi 32e20000.isi: CHNL_ROI_1_LRC[0x54]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635217] mxc-isi 32e20000.isi: CHNL_ROI_2_ALPHA[0x58]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635221] mxc-isi 32e20000.isi: CHNL_ROI_2_ULC[0x5c]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635225] mxc-isi 32e20000.isi: CHNL_ROI_2_LRC[0x60]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635230] mxc-isi 32e20000.isi: CHNL_ROI_3_ALPHA[0x64]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635235] mxc-isi 32e20000.isi: CHNL_ROI_3_ULC[0x68]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635239] mxc-isi 32e20000.isi: CHNL_ROI_3_LRC[0x6c]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635244] mxc-isi 32e20000.isi: CHNL_OUT_BUF1_ADDR_Y[0x70]: 80a00000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635249] mxc-isi 32e20000.isi: CHNL_OUT_BUF1_ADDR_U[0x74]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635253] mxc-isi 32e20000.isi: CHNL_OUT_BUF1_ADDR_V[0x78]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635258] mxc-isi 32e20000.isi: CHNL_OUT_BUF_PITCH[0x7c]: a20
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635263] mxc-isi 32e20000.isi: CHNL_IN_BUF_ADDR[0x80]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635267] mxc-isi 32e20000.isi: CHNL_IN_BUF_PITCH[0x84]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635273] mxc-isi 32e20000.isi: CHNL_MEM_RD_CTRL[0x88]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635277] mxc-isi 32e20000.isi: CHNL_OUT_BUF2_ADDR_Y[0x8c]: 80200000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635282] mxc-isi 32e20000.isi: CHNL_OUT_BUF2_ADDR_U[0x90]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635287] mxc-isi 32e20000.isi: CHNL_OUT_BUF2_ADDR_V[0x94]: 00
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635291] mxc-isi 32e20000.isi: CHNL_SCL_IMG_CFG[0x98]: 2f00510
Jan 20 22:47:33 imx8mn-ienso kernel: [ 31.635295] mxc-isi 32e20000.isi: CHNL_FLOW_CTRL[0x9c]: 00

 

CSI register dump:

Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045494] mxc-mipi-csi2.0: status: 01000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045499] mxc-mipi-csi2.0: CSIS_VERSION[0]: 0x03060301
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045502] mxc-mipi-csi2.0: CSIS_CMN_CTRL[4]: 0x00004005
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045505] mxc-mipi-csi2.0: CSIS_CLK_CTRL[8]: 0x000f0000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045508] mxc-mipi-csi2.0: CSIS_INTMSK[10]: 0x0fffff1f
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045511] mxc-mipi-csi2.0: CSIS_INTSRC[14]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045514] mxc-mipi-csi2.0: CSIS_DPHYSTATUS[20]: 0x000000e0
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045516] mxc-mipi-csi2.0: CSIS_DPHYCTRL[24]: 0x0d800003
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045523] mxc-mipi-csi2.0: CSIS_DPHYBCTRL_L[30]: 0x000001f4
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045529] mxc-mipi-csi2.0: CSIS_DPHYBCTRL_H[34]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045535] mxc-mipi-csi2.0: CSIS_DPHYSCTRL_L[38]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045540] mxc-mipi-csi2.0: CSIS_DPHYSCTRL_H[3c]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045543] mxc-mipi-csi2.0: CSIS_ISPCONFIG_CH0[40]: 0x000000ac
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045546] mxc-mipi-csi2.0: CSIS_ISPCONFIG_CH1[50]: 0x000008fd
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045548] mxc-mipi-csi2.0: CSIS_ISPCONFIG_CH2[60]: 0x000008fe
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045551] mxc-mipi-csi2.0: CSIS_ISPCONFIG_CH3[70]: 0x000008ff
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045554] mxc-mipi-csi2.0: CSIS_ISPRESOL_CH0[44]: 0x02f00510
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045557] mxc-mipi-csi2.0: CSIS_ISPRESOL_CH1[54]: 0x80008000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045560] mxc-mipi-csi2.0: CSIS_ISPRESOL_CH2[64]: 0x80008000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045563] mxc-mipi-csi2.0: CSIS_ISPRESOL_CH3[74]: 0x80008000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045565] mxc-mipi-csi2.0: CSIS_ISPSYNC_CH0[48]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045568] mxc-mipi-csi2.0: CSIS_ISPSYNC_CH1[58]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045571] mxc-mipi-csi2.0: CSIS_ISPSYNC_CH2[68]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045573] mxc-mipi-csi2.0: CSIS_ISPSYNC_CH3[78]: 0x00000000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045583] mxc-mipi-csi2.0: GPR_GASKET_0_CTRL[60]: 0xffff8000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045586] mxc-mipi-csi2.0: GPR_GASKET_0_HSIZE[64]: 0xffff8000
Jan 20 22:47:33 imx8mn-ienso kernel: [ 32.045588] mxc-mipi-csi2.0: GPR_GASKET_0_VSIZE[68]: 0xffff8000

0 Kudos
1,695 Views
jamesbone
NXP TechSupport
NXP TechSupport

What resolution are you  trying to achieve?, since  ISI module does not allow upscale and  the error it is related to buffer overflows, which means we have miss the data, or buffer has not enough space to got the data.

 

0 Kudos
1,705 Views
jamesbone
NXP TechSupport
NXP TechSupport

for capturing raw 10bits data, you need to set RAW16 in ISI , and right shift 4bits to get the correct data.