Skip to content

hisilicon-ev200 / goke-gk7205v200: IMX335 companion to openhisilicon #99#2090

Merged
widgetii merged 1 commit into
masterfrom
imx335-fuse-companion
May 13, 2026
Merged

hisilicon-ev200 / goke-gk7205v200: IMX335 companion to openhisilicon #99#2090
widgetii merged 1 commit into
masterfrom
imx335-fuse-companion

Conversation

@widgetii
Copy link
Copy Markdown
Member

Summary

Bumps hisilicon-opensdk to 8b5e47f (openipc/openhisilicon PR #99 merged) and applies four firmware-side companion changes that PR #99 referenced but were never landed.

  1. Bump HISILICON_OPENSDK_VERSION b2db4db8b5e47f. Pulls in the merged openhisilicon PR #99 (fuse sony_imx335 + sony_imx335_fpv into one driver) along with the M7 flex-crop dispatch.

  2. Drop sony_imx335_fpv from the install manifest. PR #99 deleted the source directory; without removing this line the SDK build fails on missing target. (hisilicon-opensdk.mk)

  3. Fix gk7205v200 IMX335 sensor INCK = 27 MHz → 37.125 MHz. The vendor gk7205v200_vi.ko blob programs PERI_CRG60 to feed the sensor a 27 MHz reference clock at module_init; the Hisilicon counterpart leaves it at the SoC default 37.125 MHz. Without this INI override, gk's pixel rate is ~73% of ev's across every IMX335 mode. Applied to all 4 gk7205v200 IMX335 INIs (linear + WDR × 4M + 5M).

  4. Add high-fps/ preset directory with M7 flex-crop example INIs for the V4 boards (ev200 + gk7205v200), naming pattern <sensor>_<width>x<height>_<fps>fps.ini:

    File Sensor Resolution Wire fps
    imx335_800x480_240fps.ini IMX335 800×480 ~185
    imx335_1280x720_120fps.ini IMX335 1280×720 ~115
    imx307_1280x720_60fps.ini IMX307 (renamed) 1280×720 60

    Both IMX335 presets use Isp_SnsMode=4 (M7 flex-crop, added by PR #99). The 1280×720 entry gives an apples-to-apples view next to the existing IMX307 720p preset.

    Also consolidates gk7205v200's 60fps/ (single IMX307 file) into high-fps/ — same purpose, single directory. The two commented-out cli references in rubyfpv/files/tweaksys and legacy/datalink/files/tweaksys updated to the new path.

INIs are minimal (≈30 lines); full per-crop fps table + tuning guide lives in openhisilicon/docs/imx335-v4-high-fps.md (linked from each INI header) to keep flash footprint small.

Verified

UDP-RTP push from camera → measurement host, h.265 at 4 Mbps target, fresh-booted boards:

  • hi3516ev300 + IMX335 at 800×480 @240185.1 fps wire (3-min soak, stable)
  • gk7205v300 + IMX335 at 800×480 @240185.1 fps wire (3-min soak, stable)
  • hi3516ev300 + IMX335 at 1280×720 @10098.2 fps wire
  • gk7205v300 + IMX335 at 1280×720 @10098.2 fps wire

Both boards run identically once clock=37.125MHz is applied to gk — same silicon per the openhisilicon PR #99/100 CRG decode (see kaeru imx335-ev-vs-gk-crg-decode-2026-05-12).

Test plan

  • Cross-compile clean: make BOARD=hi3516ev200_lite all
  • Cross-compile clean: make BOARD=gk7205v200_lite all
  • Stock M0-M6 IMX335 modes unaffected by clock= change (verified on gk)
  • M7 flex-crop dispatch works at the two new preset crops
  • CI green

References

  • openhisilicon PR #99 (merged) — adds M7 flex-crop dispatch
  • openhisilicon PR #100 (open) — HMAX=0x0100 patch on top of M7; lifts the 800×480 ceiling further (~260 fps wire when combined)
  • openhisilicon docs/imx335-v4-high-fps.md — full technical walkthrough
  • kaeru v4-gk7205v200-imx335-sensor-inck-bug — root cause of the 27 MHz / 37.125 MHz mismatch

🤖 Generated with Claude Code

Bumps hisilicon-opensdk to 8b5e47f (PR #99 merged) and applies the
firmware-side companion changes that PR #99 referenced but were
never landed:

1. **Bump `HISILICON_OPENSDK_VERSION` b2db4db → 8b5e47f.** Pulls in
   the merged openhisilicon PR #99 (fuse sony_imx335 +
   sony_imx335_fpv into one driver) along with the M7 flex-crop
   dispatch.

2. **Drop sony_imx335_fpv from the install manifest.** PR #99 deleted
   the source directory; without removing this line the SDK build
   fails on missing target. (`hisilicon-opensdk.mk`)

3. **Fix gk7205v200 IMX335 sensor INCK = 27 MHz → 37.125 MHz.** The
   vendor `gk7205v200_vi.ko` blob programs PERI_CRG60 to feed the
   sensor a 27 MHz reference clock at module_init; the Hisilicon
   counterpart leaves it at the SoC default 37.125 MHz. Without this
   INI override, gk's pixel rate is ~73% of ev's across every IMX335
   mode. Applied to all 4 gk7205v200 IMX335 INIs (linear + WDR × 4M
   + 5M).

4. **Add `high-fps/` preset directory** with one INI per mode that
   PR #99 verified, naming pattern
   `<sensor>_<width>x<height>_<fps>fps.ini`. Each INI is minimal
   (~30 lines); full per-mode notes live in
   `openhisilicon/docs/imx335-v4-high-fps.md`.

   IMX335 presets (both ev200 and gk7205v200):

   | File | Mode | Dispatch | Wire fps |
   |------|------|----------|----------|
   | `imx335_800x480_240fps.ini`   | M7 flex-crop showcase  | `Isp_SnsMode=4` | ~185 |
   | `imx335_1280x720_120fps.ini`  | M7 flex-crop 720p      | `Isp_SnsMode=4` | ~115 |
   | `imx335_1296x972_64fps.ini`   | 2x2 binning            | DevRect=1296×972 | 64 |
   | `imx335_1920x1080_55fps.ini`  | Cropped 1080p (1.5× zoom) | DevRect=1920×1080 | 55 |
   | `imx335_2592x1944_45fps.ini`  | Boost full-frame       | `Isp_SnsMode=6` | 45 (ev), ~39 (gk pre-fix) |

   IMX307 preset (gk7205v200 only):

   | File | Mode | Wire fps |
   |------|------|----------|
   | `imx307_1280x720_60fps.ini`   | 2-lane 720p (renamed from `60fps/720p_imx307_i2c_2l.ini`) | 60 |

   Lifted from the freed flash budget after PR #99 removed the
   `libsns_imx335_fpv.so` (~50 KB). Total INI footprint added:
   ~7 KB across both platforms.

   Also consolidates gk7205v200's `60fps/` (single IMX307 file)
   into `high-fps/` — same purpose, single directory. The two
   commented-out `cli` references in `rubyfpv/files/tweaksys` and
   `legacy/datalink/files/tweaksys` updated accordingly.

## Verified

UDP-RTP push from camera → measurement host, h.265 at 4 Mbps target:

- hi3516ev300 + IMX335 at 800×480 @240 → 185 fps wire (3-min soak, stable)
- gk7205v300 + IMX335 at 800×480 @240 → 185 fps wire (3-min soak, stable)
- hi3516ev300 + IMX335 at 1280×720 @100 → 98 fps wire
- gk7205v300 + IMX335 at 1280×720 @100 → 98 fps wire
- Binning / 1080p / boost-1944p modes verified by PR #99 directly on
  both V4 boards (numbers from PR #99's README table)

Both boards run identically once `clock=37.125MHz` is applied to gk
(same silicon per openhisilicon PR #99/100 CRG decode; see kaeru
`imx335-ev-vs-gk-crg-decode-2026-05-12`).

## References

- openhisilicon PR #99 (merged) — adds M7 flex-crop dispatch + mode roster
- openhisilicon PR #100 (open) — HMAX=0x0100 patch on top of M7
- openhisilicon `docs/imx335-v4-high-fps.md` — full technical walkthrough
- kaeru `v4-gk7205v200-imx335-sensor-inck-bug` — root cause of the
  27 MHz / 37.125 MHz mismatch
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