Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9f61c2d authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau: initial chipset description for nvdX chipsets



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: default avatarBen Skeggs <bskeggs@redhat.com>
parent 03bc9675
Loading
Loading
Loading
Loading
+46 −2
Original line number Original line Diff line number Diff line
@@ -299,7 +299,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
	case 0x50:
	case 0x50:
	case 0x80: /* gotta love NVIDIA's consistency.. */
	case 0x80: /* gotta love NVIDIA's consistency.. */
	case 0x90:
	case 0x90:
	case 0xA0:
	case 0xa0:
		engine->instmem.init		= nv50_instmem_init;
		engine->instmem.init		= nv50_instmem_init;
		engine->instmem.takedown	= nv50_instmem_takedown;
		engine->instmem.takedown	= nv50_instmem_takedown;
		engine->instmem.suspend		= nv50_instmem_suspend;
		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.put		= nv50_vram_del;
		engine->vram.flags_valid	= nv50_vram_flags_valid;
		engine->vram.flags_valid	= nv50_vram_flags_valid;
		break;
		break;
	case 0xC0:
	case 0xc0:
		engine->instmem.init		= nvc0_instmem_init;
		engine->instmem.init		= nvc0_instmem_init;
		engine->instmem.takedown	= nvc0_instmem_takedown;
		engine->instmem.takedown	= nvc0_instmem_takedown;
		engine->instmem.suspend		= nvc0_instmem_suspend;
		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_get		= nouveau_voltage_gpio_get;
		engine->pm.voltage_set		= nouveau_voltage_gpio_set;
		engine->pm.voltage_set		= nouveau_voltage_gpio_set;
		break;
		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:
	default:
		NV_ERROR(dev, "NV%02x unsupported\n", dev_priv->chipset);
		NV_ERROR(dev, "NV%02x unsupported\n", dev_priv->chipset);
		return 1;
		return 1;
@@ -1015,6 +1056,9 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
	case 0xc0:
	case 0xc0:
		dev_priv->card_type = NV_C0;
		dev_priv->card_type = NV_C0;
		break;
		break;
	case 0xd0:
		dev_priv->card_type = NV_D0;
		break;
	default:
	default:
		NV_INFO(dev, "Unsupported chipset 0x%08x\n", reg0);
		NV_INFO(dev, "Unsupported chipset 0x%08x\n", reg0);
		ret = -EINVAL;
		ret = -EINVAL;