nv04.c revision cb75d97e9c77743ecfcc43375be135a55a4d9b25
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>
309274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs
319274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggsint
329274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggsnv04_identify(struct nouveau_device *device)
339274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs{
349274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	switch (device->chipset) {
359274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	case 0x04:
3670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		device->oclass[NVDEV_SUBDEV_VBIOS  ] = &nouveau_bios_oclass;
374196faa8623264b79279a06fd186654c959f2767Ben Skeggs		device->oclass[NVDEV_SUBDEV_I2C    ] = &nouveau_i2c_oclass;
388aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs		device->oclass[NVDEV_SUBDEV_CLOCK  ] = &nv04_clock_oclass;
39cb75d97e9c77743ecfcc43375be135a55a4d9b25Ben Skeggs		device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv04_devinit_oclass;
409274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		break;
419274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	case 0x05:
4270c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		device->oclass[NVDEV_SUBDEV_VBIOS  ] = &nouveau_bios_oclass;
434196faa8623264b79279a06fd186654c959f2767Ben Skeggs		device->oclass[NVDEV_SUBDEV_I2C    ] = &nouveau_i2c_oclass;
448aceb7de47ea2491abc1a577dc875b19e9947a54Ben Skeggs		device->oclass[NVDEV_SUBDEV_CLOCK  ] = &nv04_clock_oclass;
45cb75d97e9c77743ecfcc43375be135a55a4d9b25Ben Skeggs		device->oclass[NVDEV_SUBDEV_DEVINIT] = &nv05_devinit_oclass;
469274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		break;
479274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	default:
489274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		nv_fatal(device, "unknown RIVA chipset\n");
499274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs		return -EINVAL;
509274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	}
519274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs
529274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs	return 0;
539274f4a9ba7e70d1770e237fca16d52f27f0c728Ben Skeggs}
54