Camera drivers as loadable kernel modules

I’m trying to develop a camera driver for TX2 and have started to develop it as a loadable module. When I compile my code, during modpost, I see warnings about missing sysmbols. When I load the module I see:

(dmesg output)

[11073.185958] charm100_camera: Unknown symbol camera_common_regulator_get (err 0)
[11073.193342] charm100_camera: Unknown symbol camera_common_s_fmt (err 0)
[11073.200012] charm100_camera: Unknown symbol camera_common_create_debugfs (err 0)
[11073.207572] charm100_camera: Unknown symbol camera_common_g_mbus_config (err 0)
[11073.215093] charm100_camera: Unknown symbol camera_common_remove_debugfs (err 0)
[11073.222502] charm100_camera: Unknown symbol regmap_util_write_table_8 (err 0)
[11073.229645] charm100_camera: Unknown symbol camera_common_try_fmt (err 0)
[11073.236445] charm100_camera: Unknown symbol camera_common_g_fmt (err 0)
[11073.243094] charm100_camera: Unknown symbol camera_common_s_power (err 0)

These symbols are not exported in R28.1, so it seems to be impossible to develop a driver outside the kernel tree. Is that intentional?

The Kconfig help text for the in-tree nvidia camera drivers, IMX185 for example, suggest they can be compiled as a module, but if you try to do that, the kernel build fails in a similar way to my module build.

What is the reason that nvidia don’t export those symbols?

Thanks.

@Ratbert
Current release not support loadable kernel modules yet.
We are plan to support it in future in kernel 4.9