drm/nouveau: remove left-over !DRIVER_MODESET paths
It's far preferable to have the driver do nothing at all for "nomodeset". Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
@ -92,11 +92,9 @@ nouveau_dma_init(struct nouveau_channel *chan)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* Map M2MF notifier object - fbcon. */
|
/* Map M2MF notifier object - fbcon. */
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
ret = nouveau_bo_map(chan->notifier_bo);
|
||||||
ret = nouveau_bo_map(chan->notifier_bo);
|
if (ret)
|
||||||
if (ret)
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Insert NOPS for NOUVEAU_DMA_SKIPS */
|
/* Insert NOPS for NOUVEAU_DMA_SKIPS */
|
||||||
ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS);
|
ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS);
|
||||||
|
@ -155,9 +155,6 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state)
|
|||||||
struct drm_crtc *crtc;
|
struct drm_crtc *crtc;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
if (pm_state.event == PM_EVENT_PRETHAW)
|
if (pm_state.event == PM_EVENT_PRETHAW)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -257,9 +254,6 @@ nouveau_pci_resume(struct pci_dev *pdev)
|
|||||||
struct drm_crtc *crtc;
|
struct drm_crtc *crtc;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
nouveau_fbcon_save_disable_accel(dev);
|
nouveau_fbcon_save_disable_accel(dev);
|
||||||
|
|
||||||
NV_INFO(dev, "We're back, enabling device...\n");
|
NV_INFO(dev, "We're back, enabling device...\n");
|
||||||
@ -371,7 +365,8 @@ nouveau_pci_resume(struct pci_dev *pdev)
|
|||||||
static struct drm_driver driver = {
|
static struct drm_driver driver = {
|
||||||
.driver_features =
|
.driver_features =
|
||||||
DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG |
|
DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG |
|
||||||
DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM,
|
DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
|
||||||
|
DRIVER_MODESET,
|
||||||
.load = nouveau_load,
|
.load = nouveau_load,
|
||||||
.firstopen = nouveau_firstopen,
|
.firstopen = nouveau_firstopen,
|
||||||
.lastclose = nouveau_lastclose,
|
.lastclose = nouveau_lastclose,
|
||||||
@ -438,16 +433,18 @@ static int __init nouveau_init(void)
|
|||||||
nouveau_modeset = 1;
|
nouveau_modeset = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nouveau_modeset == 1) {
|
if (!nouveau_modeset)
|
||||||
driver.driver_features |= DRIVER_MODESET;
|
return 0;
|
||||||
nouveau_register_dsm_handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
nouveau_register_dsm_handler();
|
||||||
return drm_init(&driver);
|
return drm_init(&driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit nouveau_exit(void)
|
static void __exit nouveau_exit(void)
|
||||||
{
|
{
|
||||||
|
if (!nouveau_modeset)
|
||||||
|
return;
|
||||||
|
|
||||||
drm_exit(&driver);
|
drm_exit(&driver);
|
||||||
nouveau_unregister_dsm_handler();
|
nouveau_unregister_dsm_handler();
|
||||||
}
|
}
|
||||||
|
@ -277,8 +277,7 @@ nouveau_mem_close(struct drm_device *dev)
|
|||||||
|
|
||||||
nouveau_ttm_global_release(dev_priv);
|
nouveau_ttm_global_release(dev_priv);
|
||||||
|
|
||||||
if (drm_core_has_AGP(dev) && dev->agp &&
|
if (drm_core_has_AGP(dev) && dev->agp) {
|
||||||
drm_core_check_feature(dev, DRIVER_MODESET)) {
|
|
||||||
struct drm_agp_mem *entry, *tempe;
|
struct drm_agp_mem *entry, *tempe;
|
||||||
|
|
||||||
/* Remove AGP resources, but leave dev->agp
|
/* Remove AGP resources, but leave dev->agp
|
||||||
|
@ -425,11 +425,9 @@ nouveau_card_init(struct drm_device *dev)
|
|||||||
spin_lock_init(&dev_priv->context_switch_lock);
|
spin_lock_init(&dev_priv->context_switch_lock);
|
||||||
|
|
||||||
/* Parse BIOS tables / Run init tables if card not POSTed */
|
/* Parse BIOS tables / Run init tables if card not POSTed */
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
ret = nouveau_bios_init(dev);
|
||||||
ret = nouveau_bios_init(dev);
|
if (ret)
|
||||||
if (ret)
|
goto out;
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = nouveau_mem_detect(dev);
|
ret = nouveau_mem_detect(dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
@ -504,14 +502,12 @@ nouveau_card_init(struct drm_device *dev)
|
|||||||
goto out_irq;
|
goto out_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
if (dev_priv->card_type >= NV_50)
|
||||||
if (dev_priv->card_type >= NV_50)
|
ret = nv50_display_create(dev);
|
||||||
ret = nv50_display_create(dev);
|
else
|
||||||
else
|
ret = nv04_display_create(dev);
|
||||||
ret = nv04_display_create(dev);
|
if (ret)
|
||||||
if (ret)
|
goto out_channel;
|
||||||
goto out_channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = nouveau_backlight_init(dev);
|
ret = nouveau_backlight_init(dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
@ -519,11 +515,8 @@ nouveau_card_init(struct drm_device *dev)
|
|||||||
|
|
||||||
dev_priv->init_state = NOUVEAU_CARD_INIT_DONE;
|
dev_priv->init_state = NOUVEAU_CARD_INIT_DONE;
|
||||||
|
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
nouveau_fbcon_init(dev);
|
||||||
nouveau_fbcon_init(dev);
|
drm_kms_helper_poll_init(dev);
|
||||||
drm_kms_helper_poll_init(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_channel:
|
out_channel:
|
||||||
@ -595,8 +588,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
|
|||||||
nouveau_mem_close(dev);
|
nouveau_mem_close(dev);
|
||||||
engine->instmem.takedown(dev);
|
engine->instmem.takedown(dev);
|
||||||
|
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET))
|
drm_irq_uninstall(dev);
|
||||||
drm_irq_uninstall(dev);
|
|
||||||
|
|
||||||
nouveau_gpuobj_late_takedown(dev);
|
nouveau_gpuobj_late_takedown(dev);
|
||||||
nouveau_bios_takedown(dev);
|
nouveau_bios_takedown(dev);
|
||||||
@ -691,6 +683,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
|
|||||||
struct drm_nouveau_private *dev_priv;
|
struct drm_nouveau_private *dev_priv;
|
||||||
uint32_t reg0;
|
uint32_t reg0;
|
||||||
resource_size_t mmio_start_offs;
|
resource_size_t mmio_start_offs;
|
||||||
|
int ret;
|
||||||
|
|
||||||
dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
|
dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
|
||||||
if (!dev_priv)
|
if (!dev_priv)
|
||||||
@ -773,11 +766,9 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
|
|||||||
NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
|
NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
|
||||||
dev_priv->card_type, reg0);
|
dev_priv->card_type, reg0);
|
||||||
|
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
ret = nouveau_remove_conflicting_drivers(dev);
|
||||||
int ret = nouveau_remove_conflicting_drivers(dev);
|
if (ret)
|
||||||
if (ret)
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Map PRAMIN BAR, or on older cards, the aperture withing BAR0 */
|
/* Map PRAMIN BAR, or on older cards, the aperture withing BAR0 */
|
||||||
if (dev_priv->card_type >= NV_40) {
|
if (dev_priv->card_type >= NV_40) {
|
||||||
@ -812,46 +803,28 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
|
|||||||
dev_priv->flags |= NV_NFORCE2;
|
dev_priv->flags |= NV_NFORCE2;
|
||||||
|
|
||||||
/* For kernel modesetting, init card now and bring up fbcon */
|
/* For kernel modesetting, init card now and bring up fbcon */
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
ret = nouveau_card_init(dev);
|
||||||
int ret = nouveau_card_init(dev);
|
if (ret)
|
||||||
if (ret)
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nouveau_close(struct drm_device *dev)
|
|
||||||
{
|
|
||||||
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
|
||||||
|
|
||||||
/* In the case of an error dev_priv may not be allocated yet */
|
|
||||||
if (dev_priv)
|
|
||||||
nouveau_card_takedown(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* KMS: we need mmio at load time, not when the first drm client opens. */
|
|
||||||
void nouveau_lastclose(struct drm_device *dev)
|
void nouveau_lastclose(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET))
|
|
||||||
return;
|
|
||||||
|
|
||||||
nouveau_close(dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int nouveau_unload(struct drm_device *dev)
|
int nouveau_unload(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||||
|
|
||||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
drm_kms_helper_poll_fini(dev);
|
||||||
drm_kms_helper_poll_fini(dev);
|
nouveau_fbcon_fini(dev);
|
||||||
nouveau_fbcon_fini(dev);
|
if (dev_priv->card_type >= NV_50)
|
||||||
if (dev_priv->card_type >= NV_50)
|
nv50_display_destroy(dev);
|
||||||
nv50_display_destroy(dev);
|
else
|
||||||
else
|
nv04_display_destroy(dev);
|
||||||
nv04_display_destroy(dev);
|
nouveau_card_takedown(dev);
|
||||||
nouveau_close(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
iounmap(dev_priv->mmio);
|
iounmap(dev_priv->mmio);
|
||||||
iounmap(dev_priv->ramin);
|
iounmap(dev_priv->ramin);
|
||||||
|
Reference in New Issue
Block a user