Can you tell me where I can find the decryption of these errors? regs_v2x.h #define PACKET_ERR_F_BNDRY_MATCG GENMASK(3, 0) #define PACKET_ERR_F_SEQ GENMASK(7, 4) #define PACKET_ERR_FRAME_DATA GENMASK(11, 8) #define PACKET_ERR_ID GENMASK(15, 12) #define PACKET_ERR_ECC_1BIT GENMASK(19, 16) #define PACKET_ERR_ECC_2BIT BIT(20) #define PACKET_ERR_CHECKSUM GENMASK(27, 24) where are the messages created - "MIPI error: packet: 0x%08x\n" and use the error kernel/drivers/media/platform/rockchip/isp/capture_v21.c: void rkisp_mipi_v21_isr(unsigned int phy, unsigned int packet, unsigned int overflow, unsigned int state, struct rkisp_device *dev) { struct v4l2_device *v4l2_dev = &dev->v4l2_dev; struct rkisp_stream *stream; u32 packet_err = PACKET_ERR_F_BNDRY_MATCG | PACKET_ERR_F_SEQ | PACKET_ERR_FRAME_DATA | PACKET_ERR_ECC_1BIT | PACKET_ERR_ECC_2BIT | PACKET_ERR_CHECKSUM; u32 state_err = RAW_WR_SIZE_ERR | RAW_RD_SIZE_ERR; int i, id; v4l2_dbg(3, rkisp_debug, &dev->v4l2_dev, "csi state:0x%x\n", state); dev->csi_dev.irq_cnt++; if (phy && (dev->isp_inp & INP_CSI) && dev->csi_dev.err_cnt++ < RKISP_CONTI_ERR_MAX) v4l2_warn(v4l2_dev, "MIPI error: phy: 0x%08x\n", phy); if ((packet & packet_err) && (dev->isp_inp & INP_CSI) && dev->csi_dev.err_cnt < RKISP_CONTI_ERR_MAX) { if (packet & 0xfff) dev->csi_dev.err_cnt++; v4l2_warn(v4l2_dev, "MIPI error: packet: 0x%08x\n", packet); } if (overflow && dev->csi_dev.err_cnt++ < RKISP_CONTI_ERR_MAX) v4l2_warn(v4l2_dev, "MIPI error: overflow: 0x%08x\n", overflow); if (state & state_err) v4l2_warn(v4l2_dev, "MIPI error: size: 0x%08x\n", state); if (state & ISP21_MIPI_DROP_FRM) v4l2_warn(v4l2_dev, "MIPI drop frame\n"); /* first Y_STATE irq as csi sof event */ if (state & (RAW0_Y_STATE | RAW1_Y_STATE)) { for (i = 0; i < HDR_DMA_MAX - 1; i++) { if (!((RAW0_Y_STATE << i) & state) || dev->csi_dev.tx_first[i]) continue; dev->csi_dev.tx_first[i] = true; id = i ? 2 : 0; rkisp_csi_sof(dev, id); stream = &dev->cap_dev.stream[id + RKISP_STREAM_DMATX0]; atomic_inc(&stream->sequence); } } if (state & (RAW0_WR_FRAME | RAW1_WR_FRAME)) { dev->csi_dev.err_cnt = 0; for (i = 0; i < HDR_DMA_MAX - 1; i++) { if (!((RAW0_WR_FRAME << i) & state)) continue; if (!dev->csi_dev.tx_first[i]) { id = i ? RKISP_STREAM_DMATX2 : RKISP_STREAM_DMATX0; stream = &dev->cap_dev.stream[id]; atomic_inc(&stream->sequence); } dev->csi_dev.tx_first[i] = false; } } if (state & ISP21_RAW3_WR_FRAME) { dev->csi_dev.err_cnt = 0; stream = &dev->cap_dev.stream[RKISP_STREAM_DMATX3]; atomic_inc(&stream->sequence); } if (dev->csi_dev.err_cnt > RKISP_CONTI_ERR_MAX) { if (!(dev->isp_state & ISP_MIPI_ERROR)) { dev->isp_state |= ISP_MIPI_ERROR; rkisp_write(dev, CSI2RX_MASK_PHY, 0, true); rkisp_write(dev, CSI2RX_MASK_PACKET, 0, true); rkisp_write(dev, CSI2RX_MASK_OVERFLOW, 0, true); if (dev->hw_dev->monitor.is_en) { if (!completion_done(&dev->hw_dev->monitor.cmpl)) complete(&dev->hw_dev->monitor.cmpl); dev->hw_dev->monitor.state |= ISP_MIPI_ERROR; } } } } |
-
-
26.01 KB, Down times: 0