diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_state.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c index 58b46807de23..a9e9cf35429c 100644 --- a/drivers/gpu/drm/nouveau/nouveau_state.c +++ b/drivers/gpu/drm/nouveau/nouveau_state.c | |||
@@ -340,7 +340,7 @@ nouveau_card_init_channel(struct drm_device *dev) | |||
340 | 340 | ||
341 | gpuobj = NULL; | 341 | gpuobj = NULL; |
342 | ret = nouveau_gpuobj_dma_new(dev_priv->channel, NV_CLASS_DMA_IN_MEMORY, | 342 | ret = nouveau_gpuobj_dma_new(dev_priv->channel, NV_CLASS_DMA_IN_MEMORY, |
343 | 0, nouveau_mem_fb_amount(dev), | 343 | 0, dev_priv->vram_size, |
344 | NV_DMA_ACCESS_RW, NV_DMA_TARGET_VIDMEM, | 344 | NV_DMA_ACCESS_RW, NV_DMA_TARGET_VIDMEM, |
345 | &gpuobj); | 345 | &gpuobj); |
346 | if (ret) | 346 | if (ret) |
@@ -426,6 +426,10 @@ nouveau_card_init(struct drm_device *dev) | |||
426 | goto out; | 426 | goto out; |
427 | } | 427 | } |
428 | 428 | ||
429 | ret = nouveau_mem_detect(dev); | ||
430 | if (ret) | ||
431 | goto out_bios; | ||
432 | |||
429 | ret = nouveau_gpuobj_early_init(dev); | 433 | ret = nouveau_gpuobj_early_init(dev); |
430 | if (ret) | 434 | if (ret) |
431 | goto out_bios; | 435 | goto out_bios; |
@@ -501,7 +505,7 @@ nouveau_card_init(struct drm_device *dev) | |||
501 | else | 505 | else |
502 | ret = nv04_display_create(dev); | 506 | ret = nv04_display_create(dev); |
503 | if (ret) | 507 | if (ret) |
504 | goto out_irq; | 508 | goto out_channel; |
505 | } | 509 | } |
506 | 510 | ||
507 | ret = nouveau_backlight_init(dev); | 511 | ret = nouveau_backlight_init(dev); |
@@ -515,6 +519,11 @@ nouveau_card_init(struct drm_device *dev) | |||
515 | 519 | ||
516 | return 0; | 520 | return 0; |
517 | 521 | ||
522 | out_channel: | ||
523 | if (dev_priv->channel) { | ||
524 | nouveau_channel_free(dev_priv->channel); | ||
525 | dev_priv->channel = NULL; | ||
526 | } | ||
518 | out_irq: | 527 | out_irq: |
519 | drm_irq_uninstall(dev); | 528 | drm_irq_uninstall(dev); |
520 | out_fifo: | 529 | out_fifo: |
@@ -532,6 +541,7 @@ out_mc: | |||
532 | out_gpuobj: | 541 | out_gpuobj: |
533 | nouveau_gpuobj_takedown(dev); | 542 | nouveau_gpuobj_takedown(dev); |
534 | out_mem: | 543 | out_mem: |
544 | nouveau_sgdma_takedown(dev); | ||
535 | nouveau_mem_close(dev); | 545 | nouveau_mem_close(dev); |
536 | out_instmem: | 546 | out_instmem: |
537 | engine->instmem.takedown(dev); | 547 | engine->instmem.takedown(dev); |