[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