On 04/26/2013 09:42 PM, Tomasz Figa wrote: > On Friday 26 of April 2013 11:48:50 Sylwester Nawrocki wrote: >> On 04/26/2013 10:20 AM, Inki Dae wrote: >>> Exactly right. it's my mistake. But now it seems that >>> __mode_of_device_table is multi defined at fimd and g2d side so there >>> still is module build error. :( >> Since all drivers seem to be linked into single a single module, you >> likely need to create a separate table of struct of_device_id just for >> the purpose of MODULE_DEVICE_TABLE(of, ...). This table would contain >> 'compatible' strings for all devices. Or choose of_device_id for just >> one device and define MODULE_DEVICE_TABLE() for it in some common place, >> e.g. exynos_drm_drv.c. I believe all devices should be listed though. > > IMHO, the most proper solution would be to split the module into parent > exynos_drm module and per-device submodules, which would depend on the > parent module. > > This way you would be able to load dynamically any submodule you want, > without recompiling the modules.
Yes, this is how it would have been in a perfect world. Probably something worth to consider for the future, it likely implies a lot of work. OTOH if there is one device for which the driver will always be present in the main module it should be enough to make a single entry MODULE_DEVICE_TABLE including its compatible string to ensure the driver is properly loaded, shouldn't it ?