hi3516cv500: kernel 5.0–7.0 compat for OSAL, init wrappers, and drivers#61
Open
hi3516cv500: kernel 5.0–7.0 compat for OSAL, init wrappers, and drivers#61
Conversation
Comprehensive compat fixes enabling the CV500 opensdk modules to build against modern Linux kernels (tested with 7.0-rc6 via hi3516av300_neo). OSAL (osal/hi3516cv500/): - access_ok 3→2 args (5.0+) - set_fs/get_fs/get_ds removal (5.10+) - platform_driver.remove void return (6.11+) - vm_flags read-only (6.3+) - get_random_int → get_random_u32 (6.1+) - PDE_DATA → pde_data (5.17+) - file_operations → proc_ops for /proc (5.6+) - strlcpy → strscpy (6.8+) - DEFINE_SEMAPHORE 2-arg (6.4+) - timer_setup / from_timer (4.15+) - do_gettimeofday removal (5.0+) - rtc_time_to_tm / rtc_tm_to_time removal (5.6+) - mmap_sem → mmap_lock (5.8+) - ATTRIBUTE_GROUPS + const bus_type callbacks (7.0) - list_for_each → osal_list_for_each for type safety (7.0) - dma_alloc_from_contiguous 4th arg (4.15+) MMZ (osal/hi3516cv500/mmz/): - Drop hisi_allocator (vendor CMA, not in mainline); CMA-only on 5.16+ - __dma_clear_buffer → memset + cache flush (6.x+) - __pte_offset_map → get_user_pages_fast (6.5+) - hisi_get_cma_zone → dev_get_cma_area default CMA (5.16+) Init wrappers (init/hi3516cv500/): - platform_driver.remove void return in all 31 files - MODULE_LICENSE "Proprietary" → "GPL" (printk GPL-only export 6.x+) - MODULE_LICENSE added to jpegd_init - ctl_table.child + register_sysctl_table removal (6.6+) Drivers: - sensor_i2c: hi_i2c_master_send → i2c_master_send, i2c_new_client_device - sensor_spi: spi_busnum_to_controller, const spi_bus_type (7.0) - pwm/piris: timer_setup, PTR_ERR case fix, platform_remove - cipher: proc_ops, of_dma_configure 3-arg (4.18+), platform_remove - ISP init: platform_remove - hi_user: disabled (sched_setscheduler not exported on 6.x+) Build system: - Kbuild: -isystem for GCC built-in includes (stdarg.h under -nostdinc) - obj/hi3516cv500: stub .cmd files for prebuilt blobs (modpost 7.0) - printk shim in OSAL for 4.9-era blobs referencing old symbol name CI: - Add hi3516av300_neo (CV500 7.0 kernel) build target Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Comprehensive compat fixes enabling CV500 opensdk modules to build against Linux 5.0 through 7.0 kernels. Tested with
hi3516av300_neofirmware variant on Linux 7.0-rc6 (upstream-patches kernel).Per #51, CV500 has zero direct kernel API calls in blobs — everything goes through OSAL. This PR ports the OSAL and all source-compiled modules to the modern kernel API.
Key changes (95 files, +651 −242):
kernel_compat.hmacros (access_ok, timer_setup, proc_ops, vm_flags, strlcpy, DEFINE_SEMAPHORE, etc.)hisi_allocator(not in mainline), use CMA-only on 5.16+. Replace__dma_clear_buffer,__pte_offset_map,hisi_get_cma_zonewith mainline equivalents.platform_driver.removevoid return (6.11+),MODULE_LICENSE("GPL"),ctl_table.childremoval (6.6+) — all 31 files.-isystemfor GCC stdarg.h, stub.cmdfiles for prebuilt blobs (modpost 7.0),printkshim for 4.9-era blob symbol linkage.hi3516av300_neo(CV500 7.0) build target.Test plan
hi3516av300_neoopensdk modules compile against Linux 7.0-rc6hi3516cv500_lite(4.9.37 kernel) still builds correctly🤖 Generated with Claude Code