Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[pandora-kernel.git] / drivers / gpu / drm / nouveau / nouveau_state.c
index a54fc43..6e2b1a6 100644 (file)
@@ -376,15 +376,11 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
                engine->graph.destroy_context   = nv50_graph_destroy_context;
                engine->graph.load_context      = nv50_graph_load_context;
                engine->graph.unload_context    = nv50_graph_unload_context;
-               if (dev_priv->chipset != 0x86)
+               if (dev_priv->chipset == 0x50 ||
+                   dev_priv->chipset == 0xac)
                        engine->graph.tlb_flush = nv50_graph_tlb_flush;
-               else {
-                       /* from what i can see nvidia do this on every
-                        * pre-NVA3 board except NVAC, but, we've only
-                        * ever seen problems on NV86
-                        */
-                       engine->graph.tlb_flush = nv86_graph_tlb_flush;
-               }
+               else
+                       engine->graph.tlb_flush = nv84_graph_tlb_flush;
                engine->fifo.channels           = 128;
                engine->fifo.init               = nv50_fifo_init;
                engine->fifo.takedown           = nv50_fifo_takedown;
@@ -544,7 +540,6 @@ static int
 nouveau_card_init_channel(struct drm_device *dev)
 {
        struct drm_nouveau_private *dev_priv = dev->dev_private;
-       struct nouveau_gpuobj *gpuobj = NULL;
        int ret;
 
        ret = nouveau_channel_alloc(dev, &dev_priv->channel,
@@ -552,41 +547,8 @@ nouveau_card_init_channel(struct drm_device *dev)
        if (ret)
                return ret;
 
-       /* no dma objects on fermi... */
-       if (dev_priv->card_type >= NV_C0)
-               goto out_done;
-
-       ret = nouveau_gpuobj_dma_new(dev_priv->channel, NV_CLASS_DMA_IN_MEMORY,
-                                    0, dev_priv->vram_size,
-                                    NV_MEM_ACCESS_RW, NV_MEM_TARGET_VRAM,
-                                    &gpuobj);
-       if (ret)
-               goto out_err;
-
-       ret = nouveau_ramht_insert(dev_priv->channel, NvDmaVRAM, gpuobj);
-       nouveau_gpuobj_ref(NULL, &gpuobj);
-       if (ret)
-               goto out_err;
-
-       ret = nouveau_gpuobj_dma_new(dev_priv->channel, NV_CLASS_DMA_IN_MEMORY,
-                                    0, dev_priv->gart_info.aper_size,
-                                    NV_MEM_ACCESS_RW, NV_MEM_TARGET_GART,
-                                    &gpuobj);
-       if (ret)
-               goto out_err;
-
-       ret = nouveau_ramht_insert(dev_priv->channel, NvDmaGART, gpuobj);
-       nouveau_gpuobj_ref(NULL, &gpuobj);
-       if (ret)
-               goto out_err;
-
-out_done:
        mutex_unlock(&dev_priv->channel->mutex);
        return 0;
-
-out_err:
-       nouveau_channel_put(&dev_priv->channel);
-       return ret;
 }
 
 static void nouveau_switcheroo_set_state(struct pci_dev *pdev,
@@ -738,10 +700,6 @@ nouveau_card_init(struct drm_device *dev)
                        goto out_fence;
        }
 
-       ret = nouveau_backlight_init(dev);
-       if (ret)
-               NV_ERROR(dev, "Error %d registering backlight\n", ret);
-
        nouveau_fbcon_init(dev);
        drm_kms_helper_poll_init(dev);
        return 0;
@@ -793,8 +751,6 @@ static void nouveau_card_takedown(struct drm_device *dev)
        struct drm_nouveau_private *dev_priv = dev->dev_private;
        struct nouveau_engine *engine = &dev_priv->engine;
 
-       nouveau_backlight_exit(dev);
-
        if (!engine->graph.accel_blocked) {
                nouveau_fence_fini(dev);
                nouveau_channel_put_unlocked(&dev_priv->channel);
@@ -929,12 +885,6 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
        NV_DEBUG(dev, "vendor: 0x%X device: 0x%X class: 0x%X\n",
                 dev->pci_vendor, dev->pci_device, dev->pdev->class);
 
-       dev_priv->wq = create_workqueue("nouveau");
-       if (!dev_priv->wq) {
-               ret = -EINVAL;
-               goto err_priv;
-       }
-
        /* resource 0 is mmio regs */
        /* resource 1 is linear FB */
        /* resource 2 is RAMIN (mmio regs + 0x1000000) */
@@ -947,7 +897,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
                NV_ERROR(dev, "Unable to initialize the mmio mapping. "
                         "Please report your setup to " DRIVER_EMAIL "\n");
                ret = -EINVAL;
-               goto err_wq;
+               goto err_priv;
        }
        NV_DEBUG(dev, "regs mapped ok at 0x%llx\n",
                                        (unsigned long long)mmio_start_offs);
@@ -1009,7 +959,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
        if (ret)
                goto err_mmio;
 
-       /* Map PRAMIN BAR, or on older cards, the aperture withing BAR0 */
+       /* Map PRAMIN BAR, or on older cards, the aperture within BAR0 */
        if (dev_priv->card_type >= NV_40) {
                int ramin_bar = 2;
                if (pci_resource_len(dev->pdev, ramin_bar) == 0)
@@ -1054,8 +1004,6 @@ err_ramin:
        iounmap(dev_priv->ramin);
 err_mmio:
        iounmap(dev_priv->mmio);
-err_wq:
-       destroy_workqueue(dev_priv->wq);
 err_priv:
        kfree(dev_priv);
        dev->dev_private = NULL;
@@ -1103,9 +1051,9 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
                getparam->value = dev->pci_device;
                break;
        case NOUVEAU_GETPARAM_BUS_TYPE:
-               if (drm_device_is_agp(dev))
+               if (drm_pci_device_is_agp(dev))
                        getparam->value = NV_AGP;
-               else if (drm_device_is_pcie(dev))
+               else if (drm_pci_device_is_pcie(dev))
                        getparam->value = NV_PCIE;
                else
                        getparam->value = NV_PCI;
@@ -1126,7 +1074,7 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
                getparam->value = 1;
                break;
        case NOUVEAU_GETPARAM_HAS_PAGEFLIP:
-               getparam->value = (dev_priv->card_type < NV_50);
+               getparam->value = 1;
                break;
        case NOUVEAU_GETPARAM_GRAPH_UNITS:
                /* NV40 and NV50 versions are quite different, but register