On Thu, Jan 15, 2015 at 4:29 PM, Alexandre Courbot <acourbot@xxxxxxxxxx> wrote: > Having the two modules separated causes various unneeded complications, > including having to export symbols accessed between the modules. Make > things simpler by compiling platform device support into nouveau.ko. > Platform device support remains optional and is only compiled on Tegra. > > Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx> > --- > Vince, with this you won't have to export new functions for PM. I ended > up writing it myself because I hit the same issue (nv_device() would now > need to be exported on Ben's master branch). > > Be careful that when compiling against a kernel, CONFIG_NOUVEAU_PLATFORM_DRIVER > now *must* be equal to 'y'. It is 'm' currently, so you will need to change it > from tristate to bool in the kernel's Kconfig. For this reason it might be good > to get this patch into -next quickly. I've got a huge chunk of churn (finally finished the "rename to nvidia names for stuff" thing) pending too which I want to get to Dave (ASAP, separately from my other pending work) to avoid having to keep fixing conflicts in the meantime :) So, if you guys both agree on the patch, I'll send it along early with those. Ben. > > drm/Kbuild | 3 +-- > drm/Kconfig | 2 +- > drm/nouveau_drm.c | 11 +++++++++-- > drm/nouveau_platform.c | 6 ------ > drm/nouveau_platform.h | 3 +++ > 5 files changed, 14 insertions(+), 11 deletions(-) > > diff --git a/drm/Kbuild b/drm/Kbuild > index ba6b660d3316..1febf6ec0b69 100644 > --- a/drm/Kbuild > +++ b/drm/Kbuild > @@ -394,8 +394,7 @@ nouveau-$(CONFIG_ACPI) += nouveau_acpi.o > endif > nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o > nouveau-$(CONFIG_DEBUG_FS) += nouveau_debugfs.o > +nouveau-$(CONFIG_NOUVEAU_PLATFORM_DRIVER) += nouveau_platform.o > > obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o > > -# platform driver > -obj-$(CONFIG_NOUVEAU_PLATFORM_DRIVER) += nouveau_platform.o > diff --git a/drm/Kconfig b/drm/Kconfig > index 40afc69a3778..5ab13e7939db 100644 > --- a/drm/Kconfig > +++ b/drm/Kconfig > @@ -26,7 +26,7 @@ config DRM_NOUVEAU > Choose this option for open-source NVIDIA support. > > config NOUVEAU_PLATFORM_DRIVER > - tristate "Nouveau (NVIDIA) SoC GPUs" > + bool "Nouveau (NVIDIA) SoC GPUs" > depends on DRM_NOUVEAU && ARCH_TEGRA > default y > help > diff --git a/drm/nouveau_drm.c b/drm/nouveau_drm.c > index 65910e3aed0c..1118efa56817 100644 > --- a/drm/nouveau_drm.c > +++ b/drm/nouveau_drm.c > @@ -52,6 +52,7 @@ > #include "nouveau_debugfs.h" > #include "nouveau_usif.h" > #include "nouveau_connector.h" > +#include "nouveau_platform.h" > > MODULE_PARM_DESC(config, "option string to pass to driver core"); > static char *nouveau_config; > @@ -533,7 +534,6 @@ nouveau_drm_device_remove(struct drm_device *dev) > nouveau_object_ref(NULL, &device); > nouveau_object_debug(); > } > -EXPORT_SYMBOL(nouveau_drm_device_remove); > > static void > nouveau_drm_remove(struct pci_dev *pdev) > @@ -1083,7 +1083,6 @@ err_free: > > return ERR_PTR(err); > } > -EXPORT_SYMBOL(nouveau_platform_device_create_); > > static int __init > nouveau_drm_init(void) > @@ -1105,6 +1104,10 @@ nouveau_drm_init(void) > if (!nouveau_modeset) > return 0; > > +#ifdef CONFIG_NOUVEAU_PLATFORM_DRIVER > + platform_driver_register(&nouveau_platform_driver); > +#endif > + > nouveau_register_dsm_handler(); > return drm_pci_init(&driver_pci, &nouveau_drm_pci_driver); > } > @@ -1117,6 +1120,10 @@ nouveau_drm_exit(void) > > drm_pci_exit(&driver_pci, &nouveau_drm_pci_driver); > nouveau_unregister_dsm_handler(); > + > +#ifdef CONFIG_NOUVEAU_PLATFORM_DRIVER > + platform_driver_unregister(&nouveau_platform_driver); > +#endif > } > > module_init(nouveau_drm_init); > diff --git a/drm/nouveau_platform.c b/drm/nouveau_platform.c > index b307bbedd4c4..34d78b288f97 100644 > --- a/drm/nouveau_platform.c > +++ b/drm/nouveau_platform.c > @@ -177,9 +177,3 @@ struct platform_driver nouveau_platform_driver = { > .probe = nouveau_platform_probe, > .remove = nouveau_platform_remove, > }; > - > -module_platform_driver(nouveau_platform_driver); > - > -MODULE_AUTHOR(DRIVER_AUTHOR); > -MODULE_DESCRIPTION(DRIVER_DESC); > -MODULE_LICENSE("GPL and additional rights"); > diff --git a/drm/nouveau_platform.h b/drm/nouveau_platform.h > index 58c28b5653d5..ca22c525329a 100644 > --- a/drm/nouveau_platform.h > +++ b/drm/nouveau_platform.h > @@ -28,6 +28,7 @@ > struct reset_control; > struct clk; > struct regulator; > +struct platform_driver; > > struct nouveau_platform_gpu { > struct reset_control *rst; > @@ -48,4 +49,6 @@ struct nouveau_platform_device { > #define nv_device_to_platform(d) \ > container_of(d, struct nouveau_platform_device, device) > > +extern struct platform_driver nouveau_platform_driver; > + > #endif > -- > 2.2.1 > > _______________________________________________ > Nouveau mailing list > Nouveau@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/nouveau -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html