19274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs/* 29274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * Copyright 2012 Red Hat Inc. 39274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * 49274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * Permission is hereby granted, free of charge, to any person obtaining a 59274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * copy of this software and associated documentation files (the "Software"), 69274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * to deal in the Software without restriction, including without limitation 79274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * the rights to use, copy, modify, merge, publish, distribute, sublicense, 89274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * and/or sell copies of the Software, and to permit persons to whom the 99274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * Software is furnished to do so, subject to the following conditions: 109274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * 119274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * The above copyright notice and this permission notice shall be included in 129274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * all copies or substantial portions of the Software. 139274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * 149274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 159274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 169274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 179274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 189274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 199274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 209274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * OTHER DEALINGS IN THE SOFTWARE. 219274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * 229274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs * Authors: Ben Skeggs 239274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs */ 249274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs 2570c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#include <subdev/bios.h> 26a10220bbf883931fcf18eb0e850b87d82cfaa412Martin Peres#include <subdev/bus.h> 27e0996aea4c349ba302b63203b7d5cab6034dbdcaBen Skeggs#include <subdev/gpio.h> 284196faa8623264b79279a06fd186654c959f2767Ben Skeggs#include <subdev/i2c.h> 293ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#include <subdev/fuse.h> 308aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs#include <subdev/clock.h> 31aa1b9b4836a8ab093ec06b0780553566a5430da7Martin Peres#include <subdev/therm.h> 32d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs#include <subdev/mxm.h> 33cb75d97e9c77743ecfcc43375be135a55a4d9b25Ben Skeggs#include <subdev/devinit.h> 347d9115dee978e8540734c456c925d71a37752b8dBen Skeggs#include <subdev/mc.h> 355a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs#include <subdev/timer.h> 36861d21074bbb141b0cc165a61c11f571571cda12Ben Skeggs#include <subdev/fb.h> 373863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#include <subdev/instmem.h> 383863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#include <subdev/vm.h> 393863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#include <subdev/bar.h> 40ff4b42c7532e6ed6a5ae3c9cb71395b41a0a4022Ben Skeggs#include <subdev/pwr.h> 41c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs#include <subdev/volt.h> 429274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs 43dded35dee323e286ef444f148abaf88adb58d4f3Ben Skeggs#include <engine/device.h> 44ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/dmaobj.h> 45ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/fifo.h> 46ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/software.h> 47ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/graph.h> 48ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/mpeg.h> 49ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/vp.h> 50ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/crypt.h> 51ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/bsp.h> 52ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/ppp.h> 53ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/copy.h> 54ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs#include <engine/disp.h> 55aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs#include <engine/perfmon.h> 56ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs 579274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggsint 589274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggsnv50_identify(struct nouveau_device *device) 599274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs{ 609274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs switch (device->chipset) { 619274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x50: 622094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G80"; 6370c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 64d93174ec390ebc7c245ec8d09ec6409904334904Ben Skeggs device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass; 65c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass; 663ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 677c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv50_clock_oclass; 68aa1b9b4836a8ab093ec06b0780553566a5430da7Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv50_therm_oclass; 69d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 70cf336014c6dc3ef1431d84b5a94e47a22660493bBen Skeggs device->oclass[NVDEV_SUBDEV_DEVINIT] = nv50_devinit_oclass; 7108f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; 7248ae0b355f21533145133002854de89a0537408dBen Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; 735a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 741e9fc30e38bbedf5cbba9238393084c35e1df551Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv50_fb_oclass; 7524a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 763863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 773863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 78c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 79bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 8016c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv50_fifo_oclass; 81c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 82ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 83ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv50_mpeg_oclass; 84a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv50_disp_oclass; 85aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv50_perfmon_oclass; 869274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 879274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x84: 882094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G84"; 8970c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 90d93174ec390ebc7c245ec8d09ec6409904334904Ben Skeggs device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass; 91c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass; 923ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 937c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 942f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 95d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 964019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; 9708f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; 9848ae0b355f21533145133002854de89a0537408dBen Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; 995a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 1009ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 10124a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 1023863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 1033863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 104c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 105bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 10616c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 107c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 108ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 109ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 110ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_VP ] = &nv84_vp_oclass; 111ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv84_crypt_oclass; 112ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_BSP ] = &nv84_bsp_oclass; 113a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv84_disp_oclass; 114aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 1159274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 1169274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x86: 1172094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G86"; 11870c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 119d93174ec390ebc7c245ec8d09ec6409904334904Ben Skeggs device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass; 120c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass; 1213ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 1227c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 1232f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 124d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 1254019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; 12608f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; 12748ae0b355f21533145133002854de89a0537408dBen Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; 1285a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 1299ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 13024a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 1313863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 1323863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 133c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 134bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 13516c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 136c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 137ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 138ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 139ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_VP ] = &nv84_vp_oclass; 140ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv84_crypt_oclass; 141ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_BSP ] = &nv84_bsp_oclass; 142a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv84_disp_oclass; 143aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 1449274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 1459274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x92: 1462094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G92"; 14770c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 148b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass; 149c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass; 1503ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 1517c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 1522f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 153d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 1544019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; 15508f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv50_mc_oclass; 15648ae0b355f21533145133002854de89a0537408dBen Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv50_bus_oclass; 1575a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 1589ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 15924a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 1603863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 1613863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 162c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 163bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 16416c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 165c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 166ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 167ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 168ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_VP ] = &nv84_vp_oclass; 169ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv84_crypt_oclass; 170ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_BSP ] = &nv84_bsp_oclass; 171a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv84_disp_oclass; 172aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 1739274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 1749274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x94: 1752094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G94"; 17670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 177b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 178c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 1793ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 1807c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 1812f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 182d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 1834019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; 1849a9d5c64ef8b744a50446a0467aaf49a3292ddffBen Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv94_mc_oclass; 1852984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 1865a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 1879ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 18824a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 1893863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 1903863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 191c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 192bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 19316c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 194c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 195ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 196ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 197ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_VP ] = &nv84_vp_oclass; 198ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv84_crypt_oclass; 199ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_BSP ] = &nv84_bsp_oclass; 200a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv94_disp_oclass; 201aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 2029274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 2039274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x96: 2042094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G96"; 20570c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 206b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 207c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 2083ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 2097c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 2102f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 211d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 2124019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; 2139a9d5c64ef8b744a50446a0467aaf49a3292ddffBen Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv94_mc_oclass; 2142984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 2155a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 2169ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 21724a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 2183863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 2193863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 220c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 221bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 22216c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 223c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 224ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 225ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 226ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_VP ] = &nv84_vp_oclass; 227ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv84_crypt_oclass; 228ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_BSP ] = &nv84_bsp_oclass; 229a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv94_disp_oclass; 230aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 2319274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 2329274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0x98: 2332094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G98"; 23470c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 235b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 236c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 2373ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 2387c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 2392f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 240d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 2414019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv98_devinit_oclass; 24208f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 2432984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 2445a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 2459ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 24624a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 2473863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 2483863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 249c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 250bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 25116c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 252c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 253ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 2540d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 255ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv98_crypt_oclass; 2560d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 257ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 258a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv94_disp_oclass; 259aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 2609274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 2619274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xa0: 2622094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "G200"; 26370c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 264b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 265c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass; 2663ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 2677c856522069755ab9d163a24ac332cd3cb35fe30Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = nv84_clock_oclass; 2682f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 269d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 2704019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv84_devinit_oclass; 27108f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 2722984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 2735a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 2749ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nv84_fb_oclass; 27524a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 2763863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 2773863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 278c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 279bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 28016c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 281c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 282ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 283ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 284ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_VP ] = &nv84_vp_oclass; 285ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv84_crypt_oclass; 286ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_BSP ] = &nv84_bsp_oclass; 287a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nva0_disp_oclass; 288aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 2899274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 2909274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xaa: 2912094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "MCP77/MCP78"; 29270c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 293b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 294c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 2953ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 296a7e4201f0f7d47e03b851f06f8987856e8d33083Roy Spliet device->oclass[NVDEV_SUBDEV_CLOCK ] = nvaa_clock_oclass; 2972f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 298d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 2994019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv98_devinit_oclass; 30008f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 3012984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 3025a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 3039ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nvaa_fb_oclass; 30424a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 3053863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 3063863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 307c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 308bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 30916c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 310c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 311ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 3120d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 313ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv98_crypt_oclass; 3140d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 315ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 316a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv94_disp_oclass; 317aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 3189274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 3199274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xac: 3202094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "MCP79/MCP7A"; 32170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 322b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 323c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 3243ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 325a7e4201f0f7d47e03b851f06f8987856e8d33083Roy Spliet device->oclass[NVDEV_SUBDEV_CLOCK ] = nvaa_clock_oclass; 3262f4573679a8159e0c80a5d4f812b778aef9ceb14Martin Peres device->oclass[NVDEV_SUBDEV_THERM ] = &nv84_therm_oclass; 327d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 3284019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nv98_devinit_oclass; 32908f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 3302984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 3315a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 3329ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nvaa_fb_oclass; 33324a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 3343863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 3353863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 336c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 337bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 33816c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 339c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 340ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 3410d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 342ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_CRYPT ] = &nv98_crypt_oclass; 3430d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 344ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 345a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nv94_disp_oclass; 346aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nv84_perfmon_oclass; 3479274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 3489274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xa3: 3492094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "GT215"; 35070c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 351b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 352c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 3533ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 3548aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; 3557b49bd684cea3916405e1de2f8173ac42cebc87bBen Skeggs device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; 356d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 357cf336014c6dc3ef1431d84b5a94e47a22660493bBen Skeggs device->oclass[NVDEV_SUBDEV_DEVINIT] = nva3_devinit_oclass; 35808f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 3592984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 3605a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 3619ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nva3_fb_oclass; 36224a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 3633863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 3643863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 365adec9bc3bd5f2618cea5ab8dccc506b86ab4aabbBen Skeggs device->oclass[NVDEV_SUBDEV_PWR ] = nva3_pwr_oclass; 366c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 367bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 36816c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 369c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 370ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 371ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_MPEG ] = &nv84_mpeg_oclass; 3720d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 3730d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 374ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 375ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_COPY0 ] = &nva3_copy_oclass; 376a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nva3_disp_oclass; 377aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nva3_perfmon_oclass; 3789274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 3799274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xa5: 3802094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "GT216"; 38170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 382b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 383c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 3843ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 3858aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; 3867b49bd684cea3916405e1de2f8173ac42cebc87bBen Skeggs device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; 387d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 388cf336014c6dc3ef1431d84b5a94e47a22660493bBen Skeggs device->oclass[NVDEV_SUBDEV_DEVINIT] = nva3_devinit_oclass; 38908f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 3902984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 3915a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 3929ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nva3_fb_oclass; 39324a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 3943863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 3953863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 396adec9bc3bd5f2618cea5ab8dccc506b86ab4aabbBen Skeggs device->oclass[NVDEV_SUBDEV_PWR ] = nva3_pwr_oclass; 397c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 398bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 39916c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 400c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 401ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 4020d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 4030d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 404ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 405ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_COPY0 ] = &nva3_copy_oclass; 406a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nva3_disp_oclass; 407aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nva3_perfmon_oclass; 4089274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 4099274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xa8: 4102094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "GT218"; 41170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 412b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 413c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 4143ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 4158aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; 4167b49bd684cea3916405e1de2f8173ac42cebc87bBen Skeggs device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; 417d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 418cf336014c6dc3ef1431d84b5a94e47a22660493bBen Skeggs device->oclass[NVDEV_SUBDEV_DEVINIT] = nva3_devinit_oclass; 41908f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 4202984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 4215a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 4229ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nva3_fb_oclass; 42324a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 4243863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 4253863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 426adec9bc3bd5f2618cea5ab8dccc506b86ab4aabbBen Skeggs device->oclass[NVDEV_SUBDEV_PWR ] = nva3_pwr_oclass; 427c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 428bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 42916c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 430c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 431ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 4320d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 4330d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 434ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 435ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_COPY0 ] = &nva3_copy_oclass; 436a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nva3_disp_oclass; 437aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nva3_perfmon_oclass; 4389274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 4399274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs case 0xaf: 4402094dd82eddc468b53ee99d92c38b23a65efac03Ben Skeggs device->cname = "MCP89"; 44170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; 442b485a7005faba38286bc02ab1d80e2cbf61c1002Emil Velikov device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; 443c26fe843560fe01b4b652ee21952d33f60f4e699Ben Skeggs device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; 4443ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres device->oclass[NVDEV_SUBDEV_FUSE ] = &g80_fuse_oclass; 4458aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs device->oclass[NVDEV_SUBDEV_CLOCK ] = &nva3_clock_oclass; 4467b49bd684cea3916405e1de2f8173ac42cebc87bBen Skeggs device->oclass[NVDEV_SUBDEV_THERM ] = &nva3_therm_oclass; 447d38ac5217ab43cf61e8ebe6d7114fb2d1ca9a3a4Ben Skeggs device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; 4484019aaa2b314a5be9886ae1db64ff8c6d3c060edIlia Mirkin device->oclass[NVDEV_SUBDEV_DEVINIT] = nvaf_devinit_oclass; 44908f6fbdb9bef0f9f920a8531addb0952c293d4c9Ben Skeggs device->oclass[NVDEV_SUBDEV_MC ] = nv98_mc_oclass; 4502984506fb6172712f83e573319baf7dbd0eb9028Ben Skeggs device->oclass[NVDEV_SUBDEV_BUS ] = nv94_bus_oclass; 4515a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs device->oclass[NVDEV_SUBDEV_TIMER ] = &nv04_timer_oclass; 4529ca3037e60924c8fcb53977d72efa493c821eec5Ben Skeggs device->oclass[NVDEV_SUBDEV_FB ] = nvaf_fb_oclass; 45324a4ae86de89b5cbbf8530c371007383de9f2d58Ben Skeggs device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; 4543863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_VM ] = &nv50_vmmgr_oclass; 4553863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs device->oclass[NVDEV_SUBDEV_BAR ] = &nv50_bar_oclass; 456adec9bc3bd5f2618cea5ab8dccc506b86ab4aabbBen Skeggs device->oclass[NVDEV_SUBDEV_PWR ] = nva3_pwr_oclass; 457c9c0ccae48e27b767e98a4c120976e43195dd3a7Ben Skeggs device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; 458bc98540b7b506689a9bd7bedffb9f60f9c62d945Ben Skeggs device->oclass[NVDEV_ENGINE_DMAOBJ ] = nv50_dmaeng_oclass; 45916c4f227ffc556a4851518092e2b5979da1280c1Ben Skeggs device->oclass[NVDEV_ENGINE_FIFO ] = nv84_fifo_oclass; 460c46c3ddf1f5bbc4fbd2cd661a9e8f0ba3daf5298Ben Skeggs device->oclass[NVDEV_ENGINE_SW ] = nv50_software_oclass; 461ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_GR ] = &nv50_graph_oclass; 4620d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_VP ] = &nv98_vp_oclass; 4630d4a1450c95801c21ba4db109303fbad62378b91Ilia Mirkin device->oclass[NVDEV_ENGINE_BSP ] = &nv98_bsp_oclass; 464ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_PPP ] = &nv98_ppp_oclass; 465ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69Ben Skeggs device->oclass[NVDEV_ENGINE_COPY0 ] = &nva3_copy_oclass; 466a8f8b4891d26c430a18aad6cce561e8d50e85b10Ben Skeggs device->oclass[NVDEV_ENGINE_DISP ] = nva3_disp_oclass; 467aa4d7a4d55ab375b2f1c894ba680186e4a7c6fd6Ben Skeggs device->oclass[NVDEV_ENGINE_PERFMON] = nva3_perfmon_oclass; 4689274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs break; 4699274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs default: 4709274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs nv_fatal(device, "unknown Tesla chipset\n"); 4719274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs return -EINVAL; 4729274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs } 4739274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs 4749274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs return 0; 4759274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs} 476