diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index 40afc69a3778ab7012eded8d2e9a856c8f1ee3f6..5ab13e7939db7d0085aecd41ac18be7a8ee5782f 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/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/drivers/gpu/drm/nouveau/Makefile b/drivers/gpu/drm/nouveau/Makefile index ba6b660d33161e172ee0c1d1375e938578e1b946..1febf6ec0b697896a2e5c540815bcac1228e03ce 100644 --- a/drivers/gpu/drm/nouveau/Makefile +++ b/drivers/gpu/drm/nouveau/Makefile @@ -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/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 65910e3aed0c86e1240273f274f42ea947373d58..1118efa5681790afae4206fddfc5839bf35fadc5 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/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 @@ nouveau_platform_device_create_(struct platform_device *pdev, int size, 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/drivers/gpu/drm/nouveau/nouveau_platform.c b/drivers/gpu/drm/nouveau/nouveau_platform.c index b307bbedd4c43548387557ca0cd4a44a5654ae4e..34d78b288f97239dd3c202d4f5fdb9be473fe93b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_platform.c +++ b/drivers/gpu/drm/nouveau/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/drivers/gpu/drm/nouveau/nouveau_platform.h b/drivers/gpu/drm/nouveau/nouveau_platform.h index 58c28b5653d5a8ade0718edd509646888bdf9a6d..ca22c525329a963f1d901905e3cf56b0e2068c54 100644 --- a/drivers/gpu/drm/nouveau/nouveau_platform.h +++ b/drivers/gpu/drm/nouveau/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