[Nouveau] [PATCH] drm: merge nouveau_platform.ko into nouveau.ko
Ben Skeggs
skeggsb at gmail.com
Wed Jan 14 22:39:09 PST 2015
On Thu, Jan 15, 2015 at 4:29 PM, Alexandre Courbot <acourbot at nvidia.com> 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 at nvidia.com>
> ---
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau
More information about the Nouveau
mailing list