nv04.c revision 5a5c7432bbbd2e318dff107b4ff960ab543a7cef
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
259274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs#include <subdev/device.h>
2670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#include <subdev/bios.h>
274196faa8623264b79279a06fd186654c959f2767Ben Skeggs#include <subdev/i2c.h>
288aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs#include <subdev/clock.h>
29cb75d97e9c77743ecfcc43375be135a55a4d9b25Ben Skeggs#include <subdev/devinit.h>
307d9115dee978e8540734c456c925d71a37752b8dBen Skeggs#include <subdev/mc.h>
315a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs#include <subdev/timer.h>
329274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs
339274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggsint
349274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggsnv04_identify(struct nouveau_device *device)
359274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs{
369274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	switch (device->chipset) {
379274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	case 0x04:
3870c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		device->oclass[NVDEV_SUBDEV_VBIOS  ] = &nouveau_bios_oclass;
394196faa8623264b79279a06fd186654c959f2767Ben Skeggs		device->oclass[NVDEV_SUBDEV_I2C    ] = &nouveau_i2c_oclass;
408aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs		device->oclass[NVDEV_SUBDEV_CLOCK  ] = &nv04_clock_oclass;
41cb75d97e9c77743ecfcc43375be135a55a4d9b25Ben Skeggs		device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv04_devinit_oclass;
427d9115dee978e8540734c456c925d71a37752b8dBen Skeggs		device->oclass[NVDEV_SUBDEV_MC     ] = &nv04_mc_oclass;
435a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs		device->oclass[NVDEV_SUBDEV_TIMER  ] = &nv04_timer_oclass;
449274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		break;
459274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	case 0x05:
4670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		device->oclass[NVDEV_SUBDEV_VBIOS  ] = &nouveau_bios_oclass;
474196faa8623264b79279a06fd186654c959f2767Ben Skeggs		device->oclass[NVDEV_SUBDEV_I2C    ] = &nouveau_i2c_oclass;
488aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs		device->oclass[NVDEV_SUBDEV_CLOCK  ] = &nv04_clock_oclass;
49cb75d97e9c77743ecfcc43375be135a55a4d9b25Ben Skeggs		device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv05_devinit_oclass;
507d9115dee978e8540734c456c925d71a37752b8dBen Skeggs		device->oclass[NVDEV_SUBDEV_MC     ] = &nv04_mc_oclass;
515a5c7432bbbd2e318dff107b4ff960ab543a7cefBen Skeggs		device->oclass[NVDEV_SUBDEV_TIMER  ] = &nv04_timer_oclass;
529274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		break;
539274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	default:
549274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		nv_fatal(device, "unknown RIVA chipset\n");
559274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		return -EINVAL;
569274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	}
579274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs
589274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	return 0;
599274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs}
60