drm/nouveau: initial chipset description for nvdX chipsets
authorBen Skeggs <bskeggs@redhat.com>
Mon, 4 Jul 2011 03:25:17 +0000 (13:25 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 20 Sep 2011 06:05:20 +0000 (16:05 +1000)
All the non-stubbed functions should be okay for this chipset, the rest
will be added back as they're figured out.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_state.c

index d3b0261..10b2011 100644 (file)
@@ -299,7 +299,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
        case 0x50:
        case 0x80: /* gotta love NVIDIA's consistency.. */
        case 0x90:
-       case 0xA0:
+       case 0xa0:
                engine->instmem.init            = nv50_instmem_init;
                engine->instmem.takedown        = nv50_instmem_takedown;
                engine->instmem.suspend         = nv50_instmem_suspend;
@@ -376,7 +376,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
                engine->vram.put                = nv50_vram_del;
                engine->vram.flags_valid        = nv50_vram_flags_valid;
                break;
-       case 0xC0:
+       case 0xc0:
                engine->instmem.init            = nvc0_instmem_init;
                engine->instmem.takedown        = nvc0_instmem_takedown;
                engine->instmem.suspend         = nvc0_instmem_suspend;
@@ -426,6 +426,47 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
                engine->pm.voltage_get          = nouveau_voltage_gpio_get;
                engine->pm.voltage_set          = nouveau_voltage_gpio_set;
                break;
+       case 0xd0:
+               engine->instmem.init            = nvc0_instmem_init;
+               engine->instmem.takedown        = nvc0_instmem_takedown;
+               engine->instmem.suspend         = nvc0_instmem_suspend;
+               engine->instmem.resume          = nvc0_instmem_resume;
+               engine->instmem.get             = nv50_instmem_get;
+               engine->instmem.put             = nv50_instmem_put;
+               engine->instmem.map             = nv50_instmem_map;
+               engine->instmem.unmap           = nv50_instmem_unmap;
+               engine->instmem.flush           = nv84_instmem_flush;
+               engine->mc.init                 = nv50_mc_init;
+               engine->mc.takedown             = nv50_mc_takedown;
+               engine->timer.init              = nv04_timer_init;
+               engine->timer.read              = nv04_timer_read;
+               engine->timer.takedown          = nv04_timer_takedown;
+               engine->fb.init                 = nvc0_fb_init;
+               engine->fb.takedown             = nvc0_fb_takedown;
+               engine->fifo.channels           = 128;
+               engine->fifo.init               = nvc0_fifo_init;
+               engine->fifo.takedown           = nvc0_fifo_takedown;
+               engine->fifo.disable            = nvc0_fifo_disable;
+               engine->fifo.enable             = nvc0_fifo_enable;
+               engine->fifo.reassign           = nvc0_fifo_reassign;
+               engine->fifo.channel_id         = nvc0_fifo_channel_id;
+               engine->fifo.create_context     = nvc0_fifo_create_context;
+               engine->fifo.destroy_context    = nvc0_fifo_destroy_context;
+               engine->fifo.load_context       = nvc0_fifo_load_context;
+               engine->fifo.unload_context     = nvc0_fifo_unload_context;
+               engine->display.early_init      = nouveau_stub_init;
+               engine->display.late_takedown   = nouveau_stub_takedown;
+               engine->display.create          = nouveau_stub_init;
+               engine->display.init            = nouveau_stub_init;
+               engine->display.destroy         = nouveau_stub_takedown;
+               engine->gpio.init               = nouveau_stub_init;
+               engine->gpio.takedown           = nouveau_stub_takedown;
+               engine->vram.init               = nvc0_vram_init;
+               engine->vram.takedown           = nv50_vram_fini;
+               engine->vram.get                = nvc0_vram_new;
+               engine->vram.put                = nv50_vram_del;
+               engine->vram.flags_valid        = nvc0_vram_flags_valid;
+               break;
        default:
                NV_ERROR(dev, "NV%02x unsupported\n", dev_priv->chipset);
                return 1;
@@ -1015,6 +1056,9 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
        case 0xc0:
                dev_priv->card_type = NV_C0;
                break;
+       case 0xd0:
+               dev_priv->card_type = NV_D0;
+               break;
        default:
                NV_INFO(dev, "Unsupported chipset 0x%08x\n", reg0);
                ret = -EINVAL;