From d1a08ea08563cb22211e96aba59a2e5104f781f0 Mon Sep 17 00:00:00 2001 From: Jaro Marval Date: Wed, 23 Sep 2026 14:16:38 -0500 Subject: [PATCH] i6: treat MI_ISP_DisableUserspace3A as optional The infinity6 libmi_isp.so shipped by OpenIPC (sigmastar-osdrv-infinity6) does not export MI_ISP_DisableUserspace3A, so on SSC323 the SDK never starts: "Failed to acquire symbol MI_ISP_DisableUserspace3A" / "HAL initialization failed with 0x1". The function pointer is never called anywhere, so load it without failing, as i6_venc.h already does for MI_VENC_SetInputSourceConfig. Tested on a Xiaomi/Chuangmi ipc017 (SSC323 + GC2053): SDK starts and streams H.264 1080p20 over RTSP. Co-Authored-By: Claude Opus 5.5 (1M context) --- src/hal/star/i6_isp.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hal/star/i6_isp.h b/src/hal/star/i6_isp.h index 3c449169..04a5c142 100644 --- a/src/hal/star/i6_isp.h +++ b/src/hal/star/i6_isp.h @@ -36,9 +36,9 @@ static int i6_isp_load(i6_isp_impl *isp_lib) { if (!(isp_lib->handle = dlopen("libmi_isp.so", RTLD_LAZY | RTLD_GLOBAL))) HAL_ERROR("i6_isp", "Failed to load library!\nError: %s\n", dlerror()); - if (!(isp_lib->fnDisableUserspace3A = (int(*)(int channel)) - hal_symbol_load("i6_isp", isp_lib->handle, "MI_ISP_DisableUserspace3A"))) - return EXIT_FAILURE; + // Not exported by the infinity6 libmi_isp.so shipped by OpenIPC, and never called. + isp_lib->fnDisableUserspace3A = (int(*)(int channel)) + hal_symbol_load("i6_isp", isp_lib->handle, "MI_ISP_DisableUserspace3A"); if (!(isp_lib->fnEnableUserspace3A = (int(*)(int channel, i6_isp_p3a *params)) hal_symbol_load("i6_isp", isp_lib->handle, "MI_ISP_CUS3A_Enable")))