Skip to content

feat(zaparoo-scanout): package the zaparoo_scanout kernel module for DE10-Nano - #220

Open
mcfbytes wants to merge 1 commit into
masterfrom
feat/zaparoo-scanout
Open

mcfbytes wants to merge 1 commit into
masterfrom
feat/zaparoo-scanout

Conversation

@mcfbytes

@mcfbytes mcfbytes commented Oct 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • New kernel-module package package/zaparoo-scanout, built from kernel/scanout-slots/ of ZaparooProject/Menu_MiSTer at a master commit pin. It provides /dev/zaparoo-scanout: two exclusive write-combined 1080p RGB565 framebuffer slots above the MiSTer_fb aperture. Not autoloaded.
  • Patch 0001 drops the module's hard-coded "6.18.38-MiSTer" release check, which made it return -ENODEV on any other kernel. Vermagic and the remaining machine-compatible / MiSTer_fb device-tree checks still pin it to the DE10-Nano.
  • Enabled in configs/mister_de10nano_defconfig only (not the mister-drivers profile, since the module is Cyclone V-specific). Built for the regular kernel, not linux-rt, like the other out-of-tree module packages.
  • Renovate regex manager for the pin on a monthly schedule (driver-pin label); added to both hash-sync lists; ci-tests.sh asserts zaparoo_scanout.ko.xz is in rootfs.tar.
  • Docs: docs/zaparoo-scanout.md, plus §5.46 in docs/buildroot-config.md.

Notes

  • The upstream repository has no LICENSE file; the unpatched zaparoo_scanout_uapi.h (SPDX GPL-3.0-or-later) is the licence file. Hash-sync refreshes only the tarball line, so a bump that edits that header needs its hash line updated by hand.
  • The source archive is ~28 MB (the repo carries FPGA release binaries); only one subdirectory is built.

Test plan

  • make zaparoo-scanout in a fresh DE10 output: patch applies, builds against 6.18.54, installs usr/lib/modules/6.18.54/updates/zaparoo_scanout.ko.xz; vermagic 6.18.54 SMP mod_unload ARMv7 p2v8
  • make zaparoo-scanout-legal-info passes the licence-file hash
  • scripts/check-defconfigs.sh mister_de10nano, utils/check-package (0 warnings), shellcheck, renovate-config-validator
  • Load on hardware (modprobe zaparoo_scanout, /dev/zaparoo-scanout appears)

🤖 Generated with Claude Code

…DE10-Nano

New kernel-module package built from ZaparooProject/Menu_MiSTer's
kernel/scanout-slots/ at a master commit pin. It provides
/dev/zaparoo-scanout: two exclusive write-combined 1080p framebuffer
slots above the MiSTer_fb aperture. Not autoloaded.

One local patch drops the module's hard-coded "6.18.38-MiSTer" release
check, which made it refuse to load on any other kernel; vermagic and
the remaining device-tree checks still pin it to the DE10-Nano.

Enabled in the DE10-Nano defconfig only. Renovate tracks the pin
monthly (driver-pin label), hash-sync refreshes the tarball hash, and
ci-tests asserts the .ko.xz is in rootfs.tar. See docs/zaparoo-scanout.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 2, 2026 22:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Removing the upstream qualification gate allows unvalidated kernel builds to load a fixed-physical-memory module.

Review effort: Balanced
Findings: 1 Medium severity · 1 Low severity

Open (2)
What changed in this PR

Adds the DE10-Nano-specific zaparoo_scanout kernel module package and its update/verification infrastructure.

Changes:

  • Packages and enables the module with a local kernel-version patch.
  • Adds Renovate hash synchronization and rootfs CI verification.
  • Documents module behavior, licensing, and scope.
File Description
Config.in Adds the display-driver menu.
configs/​mister_de10nano_defconfig Enables the package.
package/​zaparoo-scanout/​Config.in Defines package configuration.
package/​zaparoo-scanout/​zaparoo-scanout.mk Builds the upstream module.
package/​zaparoo-scanout/​zaparoo-scanout.hash Pins source and license hashes.
package/​zaparoo-scanout/​0001-...patch Removes the kernel-release guard.
scripts/​ci-tests.sh Verifies module installation.
renovate.json Adds monthly pin updates.
.github/​workflows/​renovate-hash-sync.yml Synchronizes archive hashes.
docs/​zaparoo-scanout.md Documents module operation.
docs/​renovate.md Adds the new commit pin.
docs/​buildroot-config.md Documents defconfig selection.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +27 to +29
- if (strcmp(utsname()->release, ZAPAROO_SCANOUT_KERNEL_RELEASE) ||
- !of_machine_is_compatible(ZAPAROO_SCANOUT_MACHINE))
+ if (!of_machine_is_compatible(ZAPAROO_SCANOUT_MACHINE))
Comment on lines +12 to +13
The module declares MODULE_LICENSE("Proprietary") because its
source is GPL-3.0-or-later, so loading it taints the kernel.

This branch has not been deployed

No deployments
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.

2 participants