drm/nouveau: merge nouveau_platform.ko into nouveau.ko
authorAlexandre Courbot <acourbot@nvidia.com>
Thu, 15 Jan 2015 06:29:56 +0000 (15:29 +0900)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 22 Jan 2015 02:15:09 +0000 (12:15 +1000)
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@nvidia.com>
Reviewed-by: Vince Hsu <vinceh@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/Kconfig
drivers/gpu/drm/nouveau/Makefile
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/nouveau/nouveau_platform.c
drivers/gpu/drm/nouveau/nouveau_platform.h

index 40afc69a3778ab7012eded8d2e9a856c8f1ee3f6..5ab13e7939db7d0085aecd41ac18be7a8ee5782f 100644 (file)
@@ -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
index ba6b660d33161e172ee0c1d1375e938578e1b946..1febf6ec0b697896a2e5c540815bcac1228e03ce 100644 (file)
@@ -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
index 65910e3aed0c86e1240273f274f42ea947373d58..1118efa5681790afae4206fddfc5839bf35fadc5 100644 (file)
@@ -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);
index b307bbedd4c43548387557ca0cd4a44a5654ae4e..34d78b288f97239dd3c202d4f5fdb9be473fe93b 100644 (file)
@@ -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");
index 58c28b5653d5a8ade0718edd509646888bdf9a6d..ca22c525329a963f1d901905e3cf56b0e2068c54 100644 (file)
@@ -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