Skip to content

hisilicon-ev200 / goke-gk7205v200: bump IMX335 5M Isp_FrameRate 20 → 30#2094

Merged
widgetii merged 1 commit into
masterfrom
imx335-5m-bump-30fps
May 13, 2026
Merged

hisilicon-ev200 / goke-gk7205v200: bump IMX335 5M Isp_FrameRate 20 → 30#2094
widgetii merged 1 commit into
masterfrom
imx335-5m-bump-30fps

Conversation

@widgetii
Copy link
Copy Markdown
Member

Summary

Lifts the stock IMX335 5M sensor INI from Isp_FrameRate=20 to Isp_FrameRate=30 for the V4 family (hisilicon-osdrv-hi3516ev200 and goke-osdrv-gk7205v200 packages). The underlying sensor driver (libraries/sensor/hi3516ev200/sony_imx335) already initialises 5M at a 30 fps line time — its banner literally reads "IMX335_init_5M_2592x1944_12bit_linear30 Initial OK!". The conservative =20 value was leaving ~33% of the sensor's nominal rate on the table.

Verified on real hardware (gk7205v300 + IMX335, h.265 VBR @ 2.6 Mbps)

Setting ISP rate Wire fps
Isp_FrameRate=20 (before) 20 fps 18 fps
Isp_FrameRate=30 (after) 30 fps 21 fps (encoder hardware ceiling)

After the change, the wire is encoder-bound (h.265 4Mbps pixel-rate budget for 5M on this silicon) — matches the historical note in majestic/src/hisi/sdk.c:2223: "XM's (not in datasheet): 2592 x 1944@21 fps (5M)". ISP IntRat counter confirms the sensor sustains 30 fps at the new setting with no drops or IspReset events.

Context

Investigated by direct comparison against vendor XM firmware running on a gk7205v200 board at the same h.265 + VBR 2.6 Mbps 5M target. The pipeline shape (ISP STRIPING + VI_OFFLINE_VPSS_ONLINE + VB pool sizes) is identical between vendor and OpenIPC. The remaining 4 fps gap (vendor reaches 25 fps via WDR_2To1_LINE 10-bit mode; OpenIPC linear 12-bit caps at 21 fps) is a separate story — the WDR init path in OpenIPC currently rate-collapses to ~6 fps and needs investigation as a follow-up.

Scope

  • hisilicon-osdrv-hi3516ev200/files/sensor/config/5M_imx335.ini — V4 Hisilicon, source-based driver, verified
  • goke-osdrv-gk7205v200/files/sensor/config/5M_imx335.ini — V4 Goke, same source, verified

Not touched (different driver, no hardware test available):

  • hisilicon-osdrv-hi3516cv500/files/sensor/config/5M_imx335.ini — V3.5, vendor-blob-based IMX335 driver
  • goke-osdrv-gk7205v500/files/sensor/config/5M_imx335.ini — V5, different SoC

Behaviour-preserving on those platforms; per-platform bumps can be revisited after testing.

Test plan

  • CI build green (all platforms)
  • Stock IMX335 5M preset at h.265 4Mbps no longer caps at sensor-side; encoder ceiling becomes the only bottleneck (verified locally on gk7205v300)
  • No regression on lower-resolution downscale outputs (VPSS handles 2592x1944 → e.g. 1920x1080 unchanged)

🤖 Generated with Claude Code

The IMX335 source-based driver (libraries/sensor/hi3516ev200/sony_imx335)
initialises 2592x1944 at 12-bit linear with HMAX/VMAX programmed for a
30 fps line time — the init banner literally reads "IMX335_init_5M_
2592x1944_12bit_linear30 Initial OK!". The stock 5M_imx335.ini for the
ev200/gk7205v200 V4 family was pinned at Isp_FrameRate=20, which made
cmos_fps_set scale VMAX up to slow the sensor down to 20 fps — leaving
~33% of the sensor's nominal rate on the table at 5M.

Verified on real hardware (gk7205v300 silicon, sony_imx335 driver,
h.265 VBR 2.6 Mbps wire):
  Isp_FrameRate=20 (before): VENC = 18 fps wire
  Isp_FrameRate=30 (after):  VENC = 21 fps wire (encoder ceiling)

ISP IntRat confirms the sensor now delivers 30 fps and the wire is
encoder-bound at 21 fps for h.265 5M @ 2.6 Mbps on this silicon
(matches the source comment in majestic src/hisi/sdk.c:2223:
"XM's (not in datasheet): 2592 x 1944@21 fps (5M)").

CV500 / gk7205v500 IMX335 INIs are unchanged — those use a different
sensor driver (vendor-blob-based, not openhisilicon source) and the
30 fps init isn't guaranteed there. Behaviour-preserving on those
platforms; bump can be revisited per-platform after testing.

Investigation context: compared OpenIPC gk7205v300 vs XM vendor
firmware on gk7205v200 at h.265 VBR 2.6 Mbps 5M. Pipeline is
identical on both (ISP STRIPING + VI_OFFLINE_VPSS_ONLINE); the only
unexplained gap was the conservative Isp_FrameRate=20 in the INI.
After this change the encoder reaches its actual hardware ceiling
on V4 family at 5M.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@widgetii widgetii merged commit 365d8de into master May 13, 2026
91 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant