Type: Official Firmware
Filename: Ubuntu20.04-xxx_RK3568_KERNEL-5.10
Download Address: Saint_Peterburg strit Repicheva 14Saint_Peterburg
Log: full_kernel_log.zip
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;
}
}
}
}
tchip_askquestions
full_kernel_log.zip (26 KB)