mirror of https://gitee.com/openkylin/linux.git
drm/i915: Move module init/exit to i915_pci.c
The module init/exit routines are a wrapper around the PCI device init/exit, so move them across. Note that in order to avoid exporting the driver struct, instead of manipulating driver.features inside i915_init we instead opt to simply exit if i915.modeset is disabled. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1466773227-7994-15-git-send-email-chris@chris-wilson.co.uk
This commit is contained in:
parent
42f5551d27
commit
a09d0ba174
|
@ -28,7 +28,6 @@
|
|||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/oom.h>
|
||||
#include <linux/module.h>
|
||||
|
@ -1592,6 +1591,9 @@ int i915_driver_load(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
struct drm_i915_private *dev_priv;
|
||||
int ret;
|
||||
|
||||
if (i915.nuclear_pageflip)
|
||||
driver.driver_features |= DRIVER_ATOMIC;
|
||||
|
||||
ret = -ENOMEM;
|
||||
dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
|
||||
if (dev_priv)
|
||||
|
@ -3018,50 +3020,3 @@ static struct drm_driver driver = {
|
|||
.minor = DRIVER_MINOR,
|
||||
.patchlevel = DRIVER_PATCHLEVEL,
|
||||
};
|
||||
|
||||
static int __init i915_init(void)
|
||||
{
|
||||
extern struct pci_driver i915_pci_driver;
|
||||
|
||||
/*
|
||||
* Enable KMS by default, unless explicitly overriden by
|
||||
* either the i915.modeset prarameter or by the
|
||||
* vga_text_mode_force boot option.
|
||||
*/
|
||||
|
||||
if (i915.modeset == 0)
|
||||
driver.driver_features &= ~DRIVER_MODESET;
|
||||
|
||||
if (vgacon_text_force() && i915.modeset == -1)
|
||||
driver.driver_features &= ~DRIVER_MODESET;
|
||||
|
||||
if (!(driver.driver_features & DRIVER_MODESET)) {
|
||||
/* Silently fail loading to not upset userspace. */
|
||||
DRM_DEBUG_DRIVER("KMS disabled.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (i915.nuclear_pageflip)
|
||||
driver.driver_features |= DRIVER_ATOMIC;
|
||||
|
||||
return drm_pci_init(&driver, &i915_pci_driver);
|
||||
}
|
||||
|
||||
static void __exit i915_exit(void)
|
||||
{
|
||||
extern struct pci_driver i915_pci_driver;
|
||||
|
||||
if (!(driver.driver_features & DRIVER_MODESET))
|
||||
return; /* Never loaded a driver. */
|
||||
|
||||
drm_pci_exit(&driver, &i915_pci_driver);
|
||||
}
|
||||
|
||||
module_init(i915_init);
|
||||
module_exit(i915_exit);
|
||||
|
||||
MODULE_AUTHOR("Tungsten Graphics, Inc.");
|
||||
MODULE_AUTHOR("Intel Corporation");
|
||||
|
||||
MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
MODULE_LICENSE("GPL and additional rights");
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <linux/console.h>
|
||||
#include <linux/vgaarb.h>
|
||||
#include <linux/vga_switcheroo.h>
|
||||
|
||||
|
@ -452,10 +453,52 @@ static void i915_pci_remove(struct pci_dev *pdev)
|
|||
|
||||
extern const struct dev_pm_ops i915_pm_ops;
|
||||
|
||||
struct pci_driver i915_pci_driver = {
|
||||
static struct pci_driver i915_pci_driver = {
|
||||
.name = DRIVER_NAME,
|
||||
.id_table = pciidlist,
|
||||
.probe = i915_pci_probe,
|
||||
.remove = i915_pci_remove,
|
||||
.driver.pm = &i915_pm_ops,
|
||||
};
|
||||
|
||||
static int __init i915_init(void)
|
||||
{
|
||||
bool use_kms = true;
|
||||
|
||||
/*
|
||||
* Enable KMS by default, unless explicitly overriden by
|
||||
* either the i915.modeset prarameter or by the
|
||||
* vga_text_mode_force boot option.
|
||||
*/
|
||||
|
||||
if (i915.modeset == 0)
|
||||
use_kms = false;
|
||||
|
||||
if (vgacon_text_force() && i915.modeset == -1)
|
||||
use_kms = false;
|
||||
|
||||
if (!use_kms) {
|
||||
/* Silently fail loading to not upset userspace. */
|
||||
DRM_DEBUG_DRIVER("KMS disabled.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return pci_register_driver(&i915_pci_driver);
|
||||
}
|
||||
|
||||
static void __exit i915_exit(void)
|
||||
{
|
||||
if (!i915_pci_driver.driver.owner)
|
||||
return;
|
||||
|
||||
pci_unregister_driver(&i915_pci_driver);
|
||||
}
|
||||
|
||||
module_init(i915_init);
|
||||
module_exit(i915_exit);
|
||||
|
||||
MODULE_AUTHOR("Tungsten Graphics, Inc.");
|
||||
MODULE_AUTHOR("Intel Corporation");
|
||||
|
||||
MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
MODULE_LICENSE("GPL and additional rights");
|
||||
|
|
Loading…
Reference in New Issue