Other Parts Discussed in Thread: SYSCONFIG
Hello,
We are using DM385 custom board with IPNC 3.5. We are occasionally facing REISZER OVERFLOW OCCURED: RESTARTING issue.
For that reason i changed below changes but no luck to solve the issue.
1. Increase the bandwidth
/opt/ipnc/init.sh
./bin/sys_pri.out --L3-bw-reg-set HDVICP0 0 0 900 2500&
./bin/sys_pri.out --dmm-pri-set ISS 0&
./bin/sys_pri.out --dmm-pri-set HDVICP0 1&
2. I have back-ported below patch
diff --git a/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c b/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c
index dfed044..6132709 100644
--- a/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c
+++ b/Source/ti_tools/iss_03_50_00_00/packages/ti/psp/iss/drivers/capture/src/issdrv_captureApi.c
@@ -741,6 +741,24 @@ void isp_test_csi2rx_line_end_wait(void)
//Implementation for M2M mode
}
+Void IssCDrv_rszResetTask(UArg arg1, UArg arg2)
+{
+ while(1)
+ {
+ /* Wait for BSC semaphore */
+ Semaphore_pend(gIss_captCommonObj.ovflWait, BIOS_WAIT_FOREVER);
+
+ if(TRUE == gIss_captCommonObj.exitTask)
+ {
+ break;
+ }
+
+ Iss_captResetAndRestart(NULL);
+ }
+}
+
/* ===================================================================
* @func bufSwitchFull
@@ -1226,12 +1244,24 @@ void isp_isif_linenum_handle()
#endif
Int32 rsz_err = *(MSP_U32 *) (0x55050024);
if (rsz_err & 0xc0000)
{
Vps_rprintf("\r\n\t##################### REISZER OVERFLOW OCCURED: RESTARTING...############################\n\r");
isp_reset_trigger = 1;
}
+ if (isp_reset_trigger)
+ {
+ Semaphore_post(gIss_captCommonObj.ovflWait);
+ isp_reset_trigger = 0;
+ *(MSP_U32 *) (0x55050024) = rsz_err & 0x3ffff;
+ return;
+ }
+
pObj = &gIss_captCommonObj.captureObj[0];
for (streamId = 0; streamId < pObj->numStream; streamId++)
@@ -1422,7 +1452,8 @@ Int32 Iss_captInit()
{
Int32 status = FVID2_SOK, instId;
-
+ Semaphore_Params semParams;
+ Task_Params tskParams;
@@ -1506,6 +1537,38 @@ Int32 Iss_captInit()
}
+ if (FVID2_SOK == status)
+ {
+ Semaphore_Params_init(&semParams);
+
+ semParams.mode = Semaphore_Mode_BINARY;
+
+ gIss_captCommonObj.ovflWait = Semaphore_create(0u, &semParams, NULL);
+
+ if (NULL == gIss_captCommonObj.ovflWait)
+ {
+ status = FVID2_EFAIL;
+ }
+ }
+
+ /* Create Task for the Resetting ISS in case of Resizer Overflow */
+ if (FVID2_SOK == status)
+ {
+ gIss_captCommonObj.exitTask = FALSE;
+
+ Task_Params_init(&tskParams);
+ tskParams.priority = 15;
+ gIss_captCommonObj.ovflTask = Task_create(
+ IssCDrv_rszResetTask,
+ &tskParams,
+ NULL);
+
+ if (NULL == gIss_captCommonObj.ovflTask)
+ {
+ status = FVID2_EFAIL;
+ }
+ }
+
return status;
}
@@ -1578,7 +1641,15 @@ Int32 Iss_captDeInit()
Iss_captLockDelete(&gIss_captCommonObj.captureObj[instId]);
+ gIss_captCommonObj.exitTask = TRUE;
+ Semaphore_post(gIss_captCommonObj.ovflWait);
+ while(Task_Mode_TERMINATED != Task_getMode(gIss_captCommonObj.ovflTask))
+ {
+ Task_sleep(1u);
+ }
+ Task_delete(&gIss_captCommonObj.ovflTask);
+ Semaphore_delete(&gIss_captCommonObj.ovflWait);
Can someone help us to solve the REISZER OVERFLOW OCCURED: RESTARTING issue?
Regards,
RAJ M