mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 12:06:22 +07:00
drm/nouveau/device: prepare for new-style subdevs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
7974dd1bdb
commit
6cf813fb26
@ -84,9 +84,9 @@ struct nvkm_device {
|
||||
|
||||
struct nvkm_event event;
|
||||
|
||||
const char *cname;
|
||||
u64 disable_mask;
|
||||
|
||||
const struct nvkm_device_chip *chip;
|
||||
enum {
|
||||
NV_04 = 0x04,
|
||||
NV_10 = 0x10,
|
||||
@ -104,7 +104,6 @@ struct nvkm_device {
|
||||
u32 crystal;
|
||||
|
||||
struct nvkm_oclass *oclass[NVDEV_SUBDEV_NR];
|
||||
struct nvkm_object *subdev[NVDEV_SUBDEV_NR];
|
||||
|
||||
struct {
|
||||
struct notifier_block nb;
|
||||
@ -153,6 +152,9 @@ struct nvkm_device {
|
||||
struct nouveau_platform_gpu *gpu;
|
||||
};
|
||||
|
||||
struct nvkm_subdev *nvkm_device_subdev(struct nvkm_device *, int index);
|
||||
struct nvkm_engine *nvkm_device_engine(struct nvkm_device *, int index);
|
||||
|
||||
struct nvkm_device_func {
|
||||
struct nvkm_device_pci *(*pci)(struct nvkm_device *);
|
||||
struct nvkm_device_tegra *(*tegra)(struct nvkm_device *);
|
||||
@ -164,6 +166,50 @@ struct nvkm_device_func {
|
||||
struct nvkm_device_quirk {
|
||||
};
|
||||
|
||||
struct nvkm_device_chip {
|
||||
const char *name;
|
||||
|
||||
int (*bar )(struct nvkm_device *, int idx, struct nvkm_bar **);
|
||||
int (*bios )(struct nvkm_device *, int idx, struct nvkm_bios **);
|
||||
int (*bus )(struct nvkm_device *, int idx, struct nvkm_bus **);
|
||||
int (*clk )(struct nvkm_device *, int idx, struct nvkm_clk **);
|
||||
int (*devinit)(struct nvkm_device *, int idx, struct nvkm_devinit **);
|
||||
int (*fb )(struct nvkm_device *, int idx, struct nvkm_fb **);
|
||||
int (*fuse )(struct nvkm_device *, int idx, struct nvkm_fuse **);
|
||||
int (*gpio )(struct nvkm_device *, int idx, struct nvkm_gpio **);
|
||||
int (*i2c )(struct nvkm_device *, int idx, struct nvkm_i2c **);
|
||||
int (*ibus )(struct nvkm_device *, int idx, struct nvkm_subdev **);
|
||||
int (*imem )(struct nvkm_device *, int idx, struct nvkm_instmem **);
|
||||
int (*ltc )(struct nvkm_device *, int idx, struct nvkm_ltc **);
|
||||
int (*mc )(struct nvkm_device *, int idx, struct nvkm_mc **);
|
||||
int (*mmu )(struct nvkm_device *, int idx, struct nvkm_mmu **);
|
||||
int (*mxm )(struct nvkm_device *, int idx, struct nvkm_subdev **);
|
||||
int (*pmu )(struct nvkm_device *, int idx, struct nvkm_pmu **);
|
||||
int (*therm )(struct nvkm_device *, int idx, struct nvkm_therm **);
|
||||
int (*timer )(struct nvkm_device *, int idx, struct nvkm_timer **);
|
||||
int (*volt )(struct nvkm_device *, int idx, struct nvkm_volt **);
|
||||
|
||||
int (*bsp )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*ce[3] )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*cipher )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*disp )(struct nvkm_device *, int idx, struct nvkm_disp **);
|
||||
int (*dma )(struct nvkm_device *, int idx, struct nvkm_dmaeng **);
|
||||
int (*fifo )(struct nvkm_device *, int idx, struct nvkm_fifo **);
|
||||
int (*gr )(struct nvkm_device *, int idx, struct nvkm_gr **);
|
||||
int (*ifb )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*me )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*mpeg )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*msenc )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*mspdec )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*msppp )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*msvld )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*pm )(struct nvkm_device *, int idx, struct nvkm_pm **);
|
||||
int (*sec )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*sw )(struct nvkm_device *, int idx, struct nvkm_sw **);
|
||||
int (*vic )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
int (*vp )(struct nvkm_device *, int idx, struct nvkm_engine **);
|
||||
};
|
||||
|
||||
struct nvkm_device *nvkm_device_find(u64 name);
|
||||
int nvkm_device_list(u64 *name, int size);
|
||||
|
||||
|
@ -68,6 +68,8 @@ static int
|
||||
nvkm_engine_fini(struct nvkm_subdev *obj, bool suspend)
|
||||
{
|
||||
struct nvkm_engine *engine = container_of(obj, typeof(*engine), subdev);
|
||||
if (engine->subdev.object.oclass)
|
||||
return engine->subdev.object.oclass->ofuncs->fini(&engine->subdev.object, suspend);
|
||||
if (engine->func->fini)
|
||||
return engine->func->fini(engine, suspend);
|
||||
return 0;
|
||||
@ -86,6 +88,9 @@ nvkm_engine_init(struct nvkm_subdev *obj)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (engine->subdev.object.oclass)
|
||||
return engine->subdev.object.oclass->ofuncs->init(&engine->subdev.object);
|
||||
|
||||
if (engine->func->oneinit && !engine->subdev.oneinit) {
|
||||
nvkm_trace(subdev, "one-time init running...\n");
|
||||
time = ktime_to_us(ktime_get());
|
||||
@ -110,6 +115,10 @@ static void *
|
||||
nvkm_engine_dtor(struct nvkm_subdev *obj)
|
||||
{
|
||||
struct nvkm_engine *engine = container_of(obj, typeof(*engine), subdev);
|
||||
if (engine->subdev.object.oclass) {
|
||||
engine->subdev.object.oclass->ofuncs->dtor(&engine->subdev.object);
|
||||
return NULL;
|
||||
}
|
||||
if (engine->func->dtor)
|
||||
return engine->func->dtor(engine);
|
||||
return engine;
|
||||
@ -201,5 +210,6 @@ nvkm_engine_create_(struct nvkm_object *parent, struct nvkm_object *engobj,
|
||||
|
||||
INIT_LIST_HEAD(&engine->contexts);
|
||||
spin_lock_init(&engine->lock);
|
||||
engine->subdev.func = &nvkm_engine_func;
|
||||
return 0;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
struct nvkm_object *engctx = NULL;
|
||||
struct nvkm_object *object = NULL;
|
||||
struct nvkm_parent *parent;
|
||||
struct nvkm_object *engine;
|
||||
struct nvkm_engine *engine;
|
||||
struct nvkm_oclass *oclass;
|
||||
u32 _handle, _oclass;
|
||||
int ret;
|
||||
@ -117,7 +117,8 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
parent = nv_parent(handle->object);
|
||||
|
||||
/* check that parent supports the requested subclass */
|
||||
ret = nvkm_parent_sclass(&parent->object, _oclass, &engine, &oclass);
|
||||
ret = nvkm_parent_sclass(&parent->object, _oclass,
|
||||
(struct nvkm_object **)&engine, &oclass);
|
||||
if (ret) {
|
||||
nvif_debug(&parent->object, "illegal class 0x%04x\n", _oclass);
|
||||
goto fail_class;
|
||||
@ -128,18 +129,20 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
* state calculated at init (ie. default context construction)
|
||||
*/
|
||||
if (engine) {
|
||||
ret = nvkm_object_inc(engine);
|
||||
if (ret)
|
||||
engine = nvkm_engine_ref(engine);
|
||||
if (IS_ERR(engine)) {
|
||||
ret = PTR_ERR(engine);
|
||||
engine = NULL;
|
||||
goto fail_class;
|
||||
}
|
||||
}
|
||||
|
||||
/* if engine requires it, create a context object to insert
|
||||
* between the parent and its children (eg. PGRAPH context)
|
||||
*/
|
||||
if (engine && nv_engine(engine)->cclass) {
|
||||
ret = nvkm_object_old(&parent->object, engine,
|
||||
nv_engine(engine)->cclass,
|
||||
data, size, &engctx);
|
||||
if (engine && engine->cclass) {
|
||||
ret = nvkm_object_old(&parent->object, &engine->subdev.object,
|
||||
engine->cclass, data, size, &engctx);
|
||||
if (ret)
|
||||
goto fail_engctx;
|
||||
} else {
|
||||
@ -147,7 +150,8 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
}
|
||||
|
||||
/* finally, create new object and bind it to its handle */
|
||||
ret = nvkm_object_old(engctx, engine, oclass, data, size, &object);
|
||||
ret = nvkm_object_old(engctx, &engine->subdev.object, oclass,
|
||||
data, size, &object);
|
||||
client->data = object;
|
||||
if (ret)
|
||||
goto fail_ctor;
|
||||
@ -178,8 +182,7 @@ nvkm_ioctl_new(struct nvkm_handle *handle, void *data, u32 size)
|
||||
fail_ctor:
|
||||
nvkm_object_ref(NULL, &engctx);
|
||||
fail_engctx:
|
||||
if (engine)
|
||||
nvkm_object_dec(engine, false);
|
||||
nvkm_engine_unref(&engine);
|
||||
fail_class:
|
||||
return ret;
|
||||
}
|
||||
|
@ -201,6 +201,7 @@ nvkm_object_del(struct nvkm_object **pobject)
|
||||
if (object && !WARN_ON(!object->func)) {
|
||||
if (object->func->dtor)
|
||||
*pobject = object->func->dtor(object);
|
||||
nvkm_engine_unref(&object->engine);
|
||||
kfree(*pobject);
|
||||
*pobject = NULL;
|
||||
}
|
||||
@ -212,7 +213,7 @@ nvkm_object_ctor(const struct nvkm_object_func *func,
|
||||
{
|
||||
object->func = func;
|
||||
object->client = oclass->client;
|
||||
object->engine = oclass->engine;
|
||||
object->engine = nvkm_engine_ref(oclass->engine);
|
||||
object->oclass_name = oclass->base.oclass;
|
||||
object->handle = oclass->handle;
|
||||
object->parent = oclass->parent;
|
||||
@ -251,10 +252,11 @@ nvkm_object_new(const struct nvkm_oclass *oclass, void *data, u32 size,
|
||||
}
|
||||
|
||||
int
|
||||
nvkm_object_create_(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
nvkm_object_create_(struct nvkm_object *parent, struct nvkm_object *engobj,
|
||||
struct nvkm_oclass *oclass, u32 pclass,
|
||||
int size, void **pobject)
|
||||
{
|
||||
struct nvkm_engine *engine = engobj ? nv_engine(engobj) : NULL;
|
||||
struct nvkm_object *object;
|
||||
|
||||
object = *pobject = kzalloc(size, GFP_KERNEL);
|
||||
@ -262,7 +264,7 @@ nvkm_object_create_(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
return -ENOMEM;
|
||||
|
||||
nvkm_object_ref(parent, &object->parent);
|
||||
nvkm_object_ref(engine, (struct nvkm_object **)&object->engine);
|
||||
object->engine = nvkm_engine_ref(engine);
|
||||
object->oclass = oclass;
|
||||
object->pclass = pclass;
|
||||
atomic_set(&object->refcount, 1);
|
||||
@ -287,7 +289,7 @@ _nvkm_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
void
|
||||
nvkm_object_destroy(struct nvkm_object *object)
|
||||
{
|
||||
nvkm_object_ref(NULL, (struct nvkm_object **)&object->engine);
|
||||
nvkm_engine_unref(&object->engine);
|
||||
nvkm_object_ref(NULL, &object->parent);
|
||||
kfree(object);
|
||||
}
|
||||
@ -333,7 +335,8 @@ nvkm_object_old(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
atomic_set(&object->refcount, 1);
|
||||
if (!nv_iclass(object, NV_SUBDEV_CLASS))
|
||||
atomic_set(&object->refcount, 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -370,14 +373,6 @@ nvkm_object_inc(struct nvkm_object *object)
|
||||
goto fail_parent;
|
||||
}
|
||||
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
ret = nvkm_object_inc(&object->engine->subdev.object);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
if (ret)
|
||||
goto fail_engine;
|
||||
}
|
||||
|
||||
ret = nvkm_object_init(object);
|
||||
atomic_set(&object->usecount, 1);
|
||||
if (ret)
|
||||
@ -386,12 +381,6 @@ nvkm_object_inc(struct nvkm_object *object)
|
||||
return 0;
|
||||
|
||||
fail_self:
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
nvkm_object_dec(&object->engine->subdev.object, false);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
}
|
||||
fail_engine:
|
||||
if (object->parent)
|
||||
nvkm_object_dec(object->parent, false);
|
||||
fail_parent:
|
||||
@ -405,12 +394,6 @@ nvkm_object_decf(struct nvkm_object *object)
|
||||
nvkm_object_fini(object, false);
|
||||
atomic_set(&object->usecount, 0);
|
||||
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
nvkm_object_dec(&object->engine->subdev.object, false);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
}
|
||||
|
||||
if (object->parent)
|
||||
nvkm_object_dec(object->parent, false);
|
||||
|
||||
@ -427,14 +410,6 @@ nvkm_object_decs(struct nvkm_object *object)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
ret = nvkm_object_dec(&object->engine->subdev.object, true);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
if (ret)
|
||||
goto fail_engine;
|
||||
}
|
||||
|
||||
if (object->parent) {
|
||||
ret = nvkm_object_dec(object->parent, true);
|
||||
if (ret)
|
||||
@ -444,13 +419,6 @@ nvkm_object_decs(struct nvkm_object *object)
|
||||
return 0;
|
||||
|
||||
fail_parent:
|
||||
if (object->engine) {
|
||||
mutex_lock(&nv_subdev(object->engine)->mutex);
|
||||
nvkm_object_inc(&object->engine->subdev.object);
|
||||
mutex_unlock(&nv_subdev(object->engine)->mutex);
|
||||
}
|
||||
|
||||
fail_engine:
|
||||
nvkm_object_init(object);
|
||||
|
||||
return ret;
|
||||
|
@ -74,6 +74,12 @@ nvkm_subdev_name[64] = {
|
||||
void
|
||||
nvkm_subdev_intr(struct nvkm_subdev *subdev)
|
||||
{
|
||||
if (subdev->object.oclass) {
|
||||
if (subdev->intr)
|
||||
subdev->intr(subdev);
|
||||
return;
|
||||
}
|
||||
|
||||
if (subdev->func->intr)
|
||||
subdev->func->intr(subdev);
|
||||
}
|
||||
@ -85,10 +91,18 @@ nvkm_subdev_fini(struct nvkm_subdev *subdev, bool suspend)
|
||||
const char *action = suspend ? "suspend" : "fini";
|
||||
u32 pmc_enable = subdev->pmc_enable;
|
||||
s64 time;
|
||||
int ret;
|
||||
|
||||
nvkm_trace(subdev, "%s running...\n", action);
|
||||
time = ktime_to_us(ktime_get());
|
||||
|
||||
if (!subdev->func) {
|
||||
ret = subdev->object.oclass->ofuncs->fini(&subdev->object, suspend);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (subdev->func->fini) {
|
||||
int ret = subdev->func->fini(subdev, suspend);
|
||||
if (ret) {
|
||||
@ -104,6 +118,7 @@ nvkm_subdev_fini(struct nvkm_subdev *subdev, bool suspend)
|
||||
nvkm_rd32(device, 0x000200);
|
||||
}
|
||||
|
||||
done:
|
||||
time = ktime_to_us(ktime_get()) - time;
|
||||
nvkm_trace(subdev, "%s completed in %lldus\n", action, time);
|
||||
return 0;
|
||||
@ -117,7 +132,7 @@ nvkm_subdev_preinit(struct nvkm_subdev *subdev)
|
||||
nvkm_trace(subdev, "preinit running...\n");
|
||||
time = ktime_to_us(ktime_get());
|
||||
|
||||
if (subdev->func->preinit) {
|
||||
if (!subdev->object.oclass && subdev->func->preinit) {
|
||||
int ret = subdev->func->preinit(subdev);
|
||||
if (ret) {
|
||||
nvkm_error(subdev, "preinit failed, %d\n", ret);
|
||||
@ -139,6 +154,13 @@ nvkm_subdev_init(struct nvkm_subdev *subdev)
|
||||
nvkm_trace(subdev, "init running...\n");
|
||||
time = ktime_to_us(ktime_get());
|
||||
|
||||
if (!subdev->func) {
|
||||
ret = subdev->object.oclass->ofuncs->init(&subdev->object);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (subdev->func->oneinit && !subdev->oneinit) {
|
||||
s64 time;
|
||||
nvkm_trace(subdev, "one-time init running...\n");
|
||||
@ -162,6 +184,7 @@ nvkm_subdev_init(struct nvkm_subdev *subdev)
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
time = ktime_to_us(ktime_get()) - time;
|
||||
nvkm_trace(subdev, "init completed in %lldus\n", time);
|
||||
return 0;
|
||||
@ -172,6 +195,12 @@ nvkm_subdev_del(struct nvkm_subdev **psubdev)
|
||||
{
|
||||
struct nvkm_subdev *subdev = *psubdev;
|
||||
s64 time;
|
||||
|
||||
if (subdev && subdev->object.oclass) {
|
||||
subdev->object.oclass->ofuncs->dtor(&subdev->object);
|
||||
return;
|
||||
}
|
||||
|
||||
if (subdev && !WARN_ON(!subdev->func)) {
|
||||
nvkm_trace(subdev, "destroy running...\n");
|
||||
time = ktime_to_us(ktime_get());
|
||||
@ -211,8 +240,10 @@ nvkm_subdev(void *obj, int idx)
|
||||
struct nvkm_object *object = nv_object(obj);
|
||||
while (object && !nv_iclass(object, NV_SUBDEV_CLASS))
|
||||
object = object->parent;
|
||||
if (object == NULL || !object->parent || nv_subidx(nv_subdev(object)) != idx)
|
||||
object = nv_device(obj)->subdev[idx];
|
||||
if (object == NULL || !object->parent || nv_subidx(nv_subdev(object)) != idx) {
|
||||
struct nvkm_device *device = nv_device(obj);
|
||||
return nvkm_device_subdev(device, idx);
|
||||
}
|
||||
return object ? nv_subdev(object) : NULL;
|
||||
}
|
||||
|
||||
@ -266,8 +297,6 @@ _nvkm_subdev_fini(struct nvkm_object *object, bool suspend)
|
||||
void
|
||||
nvkm_subdev_destroy(struct nvkm_subdev *subdev)
|
||||
{
|
||||
int subidx = nv_hclass(subdev) & 0xff;
|
||||
nv_device(subdev)->subdev[subidx] = NULL;
|
||||
nvkm_object_destroy(&subdev->object);
|
||||
}
|
||||
|
||||
|
@ -40,21 +40,19 @@ nvkm_acpi_ntfy(struct notifier_block *nb, unsigned long val, void *data)
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
nvkm_acpi_fini(struct nvkm_device *device, bool suspend)
|
||||
void
|
||||
nvkm_acpi_fini(struct nvkm_device *device)
|
||||
{
|
||||
#ifdef CONFIG_ACPI
|
||||
unregister_acpi_notifier(&device->acpi.nb);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
void
|
||||
nvkm_acpi_init(struct nvkm_device *device)
|
||||
{
|
||||
#ifdef CONFIG_ACPI
|
||||
device->acpi.nb.notifier_call = nvkm_acpi_ntfy;
|
||||
register_acpi_notifier(&device->acpi.nb);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
@ -3,6 +3,6 @@
|
||||
#include <core/os.h>
|
||||
struct nvkm_device;
|
||||
|
||||
int nvkm_acpi_init(struct nvkm_device *);
|
||||
int nvkm_acpi_fini(struct nvkm_device *, bool);
|
||||
void nvkm_acpi_init(struct nvkm_device *);
|
||||
void nvkm_acpi_fini(struct nvkm_device *);
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -23,44 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/fuse.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/mxm.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/ltc.h>
|
||||
#include <subdev/ibus.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/bar.h>
|
||||
#include <subdev/pmu.h>
|
||||
#include <subdev/volt.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/mspdec.h>
|
||||
#include <engine/bsp.h>
|
||||
#include <engine/msvld.h>
|
||||
#include <engine/msppp.h>
|
||||
#include <engine/ce.h>
|
||||
#include <engine/disp.h>
|
||||
#include <engine/pm.h>
|
||||
|
||||
int
|
||||
gf100_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0xc0:
|
||||
device->cname = "GF100";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -93,7 +60,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf100_pm_oclass;
|
||||
break;
|
||||
case 0xc4:
|
||||
device->cname = "GF104";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -126,7 +92,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf100_pm_oclass;
|
||||
break;
|
||||
case 0xc3:
|
||||
device->cname = "GF106";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -158,7 +123,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf100_pm_oclass;
|
||||
break;
|
||||
case 0xce:
|
||||
device->cname = "GF114";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -191,7 +155,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf100_pm_oclass;
|
||||
break;
|
||||
case 0xcf:
|
||||
device->cname = "GF116";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -223,7 +186,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf100_pm_oclass;
|
||||
break;
|
||||
case 0xc1:
|
||||
device->cname = "GF108";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -255,7 +217,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf108_pm_oclass;
|
||||
break;
|
||||
case 0xc8:
|
||||
device->cname = "GF110";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -288,7 +249,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf100_pm_oclass;
|
||||
break;
|
||||
case 0xd9:
|
||||
device->cname = "GF119";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gf110_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gf110_i2c_oclass;
|
||||
@ -320,7 +280,6 @@ gf100_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gf117_pm_oclass;
|
||||
break;
|
||||
case 0xd7:
|
||||
device->cname = "GF117";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gf110_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gf117_i2c_oclass;
|
||||
|
@ -23,44 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/fuse.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/mxm.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/ltc.h>
|
||||
#include <subdev/ibus.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/bar.h>
|
||||
#include <subdev/pmu.h>
|
||||
#include <subdev/volt.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/disp.h>
|
||||
#include <engine/ce.h>
|
||||
#include <engine/bsp.h>
|
||||
#include <engine/msvld.h>
|
||||
#include <engine/mspdec.h>
|
||||
#include <engine/msppp.h>
|
||||
#include <engine/pm.h>
|
||||
|
||||
int
|
||||
gk104_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0xe4:
|
||||
device->cname = "GK104";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gk104_i2c_oclass;
|
||||
@ -94,7 +61,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gk104_pm_oclass;
|
||||
break;
|
||||
case 0xe7:
|
||||
device->cname = "GK107";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gk104_i2c_oclass;
|
||||
@ -128,7 +94,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gk104_pm_oclass;
|
||||
break;
|
||||
case 0xe6:
|
||||
device->cname = "GK106";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gk104_i2c_oclass;
|
||||
@ -162,7 +127,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gk104_pm_oclass;
|
||||
break;
|
||||
case 0xea:
|
||||
device->cname = "GK20A";
|
||||
device->oclass[NVDEV_SUBDEV_CLK ] = &gk20a_clk_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_MC ] = gk20a_mc_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_BUS ] = gf100_bus_oclass;
|
||||
@ -184,7 +148,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_SUBDEV_PMU ] = gk20a_pmu_oclass;
|
||||
break;
|
||||
case 0xf0:
|
||||
device->cname = "GK110";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gk104_i2c_oclass;
|
||||
@ -218,7 +181,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = &gk110_pm_oclass;
|
||||
break;
|
||||
case 0xf1:
|
||||
device->cname = "GK110B";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gf110_i2c_oclass;
|
||||
@ -252,7 +214,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = &gk110_pm_oclass;
|
||||
break;
|
||||
case 0x106:
|
||||
device->cname = "GK208B";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gk104_i2c_oclass;
|
||||
@ -285,7 +246,6 @@ gk104_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_MSPPP ] = &gf100_msppp_oclass;
|
||||
break;
|
||||
case 0x108:
|
||||
device->cname = "GK208";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gk104_i2c_oclass;
|
||||
|
@ -23,44 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/fuse.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/mxm.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/ltc.h>
|
||||
#include <subdev/ibus.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/bar.h>
|
||||
#include <subdev/pmu.h>
|
||||
#include <subdev/volt.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/disp.h>
|
||||
#include <engine/ce.h>
|
||||
#include <engine/bsp.h>
|
||||
#include <engine/msvld.h>
|
||||
#include <engine/mspdec.h>
|
||||
#include <engine/msppp.h>
|
||||
#include <engine/pm.h>
|
||||
|
||||
int
|
||||
gm100_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x117:
|
||||
device->cname = "GM107";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gf110_i2c_oclass;
|
||||
@ -100,7 +67,6 @@ gm100_identify(struct nvkm_device *device)
|
||||
#endif
|
||||
break;
|
||||
case 0x124:
|
||||
device->cname = "GM204";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gm204_i2c_oclass;
|
||||
@ -141,7 +107,6 @@ gm100_identify(struct nvkm_device *device)
|
||||
#endif
|
||||
break;
|
||||
case 0x126:
|
||||
device->cname = "GM206";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = gm204_i2c_oclass;
|
||||
@ -182,7 +147,6 @@ gm100_identify(struct nvkm_device *device)
|
||||
#endif
|
||||
break;
|
||||
case 0x12b:
|
||||
device->cname = "GM20B";
|
||||
|
||||
device->oclass[NVDEV_SUBDEV_MC ] = gk20a_mc_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_MMU ] = &gf100_mmu_oclass;
|
||||
|
@ -23,29 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/disp.h>
|
||||
|
||||
int
|
||||
nv04_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x04:
|
||||
device->cname = "NV04";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_CLK ] = &nv04_clk_oclass;
|
||||
@ -63,7 +45,6 @@ nv04_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x05:
|
||||
device->cname = "NV05";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_CLK ] = &nv04_clk_oclass;
|
||||
|
@ -23,30 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/disp.h>
|
||||
|
||||
int
|
||||
nv10_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x10:
|
||||
device->cname = "NV10";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -63,7 +44,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x15:
|
||||
device->cname = "NV15";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -82,7 +62,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x16:
|
||||
device->cname = "NV16";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -101,7 +80,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x1a:
|
||||
device->cname = "nForce";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -120,7 +98,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x11:
|
||||
device->cname = "NV11";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -139,7 +116,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x17:
|
||||
device->cname = "NV17";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -158,7 +134,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x1f:
|
||||
device->cname = "nForce2";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -177,7 +152,6 @@ nv10_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x18:
|
||||
device->cname = "NV18";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
|
@ -23,31 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/disp.h>
|
||||
|
||||
int
|
||||
nv20_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x20:
|
||||
device->cname = "NV20";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -66,7 +46,6 @@ nv20_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x25:
|
||||
device->cname = "NV25";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -85,7 +64,6 @@ nv20_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x28:
|
||||
device->cname = "NV28";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -104,7 +82,6 @@ nv20_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x2a:
|
||||
device->cname = "NV2A";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
|
@ -23,31 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/mpeg.h>
|
||||
#include <engine/disp.h>
|
||||
|
||||
int
|
||||
nv30_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x30:
|
||||
device->cname = "NV30";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -66,7 +46,6 @@ nv30_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x35:
|
||||
device->cname = "NV35";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -85,7 +64,6 @@ nv30_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x31:
|
||||
device->cname = "NV31";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -105,7 +83,6 @@ nv30_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x36:
|
||||
device->cname = "NV36";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -125,7 +102,6 @@ nv30_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = nv04_disp_oclass;
|
||||
break;
|
||||
case 0x34:
|
||||
device->cname = "NV34";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
|
@ -23,35 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/volt.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/mpeg.h>
|
||||
#include <engine/disp.h>
|
||||
#include <engine/pm.h>
|
||||
|
||||
int
|
||||
nv40_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x40:
|
||||
device->cname = "NV40";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -74,7 +50,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x41:
|
||||
device->cname = "NV41";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -97,7 +72,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x42:
|
||||
device->cname = "NV42";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -120,7 +94,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x43:
|
||||
device->cname = "NV43";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -143,7 +116,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x45:
|
||||
device->cname = "NV45";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -166,7 +138,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x47:
|
||||
device->cname = "G70";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -189,7 +160,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x49:
|
||||
device->cname = "G71";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -212,7 +182,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x4b:
|
||||
device->cname = "G73";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -235,7 +204,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x44:
|
||||
device->cname = "NV44";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -258,7 +226,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x46:
|
||||
device->cname = "G72";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -281,7 +248,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x4a:
|
||||
device->cname = "NV44A";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -304,7 +270,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x4c:
|
||||
device->cname = "C61";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -327,7 +292,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x4e:
|
||||
device->cname = "C51";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv4e_i2c_oclass;
|
||||
@ -350,7 +314,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x63:
|
||||
device->cname = "C73";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -373,7 +336,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x67:
|
||||
device->cname = "C67";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
@ -396,7 +358,6 @@ nv40_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv40_pm_oclass;
|
||||
break;
|
||||
case 0x68:
|
||||
device->cname = "C68";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv10_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv04_i2c_oclass;
|
||||
|
@ -23,46 +23,11 @@
|
||||
*/
|
||||
#include "priv.h"
|
||||
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/fuse.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/mxm.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/bar.h>
|
||||
#include <subdev/pmu.h>
|
||||
#include <subdev/volt.h>
|
||||
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/mpeg.h>
|
||||
#include <engine/vp.h>
|
||||
#include <engine/cipher.h>
|
||||
#include <engine/sec.h>
|
||||
#include <engine/bsp.h>
|
||||
#include <engine/msvld.h>
|
||||
#include <engine/mspdec.h>
|
||||
#include <engine/msppp.h>
|
||||
#include <engine/ce.h>
|
||||
#include <engine/disp.h>
|
||||
#include <engine/pm.h>
|
||||
|
||||
int
|
||||
nv50_identify(struct nvkm_device *device)
|
||||
{
|
||||
switch (device->chipset) {
|
||||
case 0x50:
|
||||
device->cname = "G80";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass;
|
||||
@ -88,7 +53,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = nv50_pm_oclass;
|
||||
break;
|
||||
case 0x84:
|
||||
device->cname = "G84";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass;
|
||||
@ -117,7 +81,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0x86:
|
||||
device->cname = "G86";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass;
|
||||
@ -146,7 +109,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0x92:
|
||||
device->cname = "G92";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = nv50_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass;
|
||||
@ -175,7 +137,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0x94:
|
||||
device->cname = "G94";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -204,7 +165,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0x96:
|
||||
device->cname = "G96";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -233,7 +193,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0x98:
|
||||
device->cname = "G98";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -262,7 +221,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0xa0:
|
||||
device->cname = "G200";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass;
|
||||
@ -291,7 +249,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gt200_pm_oclass;
|
||||
break;
|
||||
case 0xaa:
|
||||
device->cname = "MCP77/MCP78";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -320,7 +277,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0xac:
|
||||
device->cname = "MCP79/MCP7A";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -349,7 +305,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = g84_pm_oclass;
|
||||
break;
|
||||
case 0xa3:
|
||||
device->cname = "GT215";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -380,7 +335,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gt215_pm_oclass;
|
||||
break;
|
||||
case 0xa5:
|
||||
device->cname = "GT216";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -410,7 +364,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gt215_pm_oclass;
|
||||
break;
|
||||
case 0xa8:
|
||||
device->cname = "GT218";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
@ -440,7 +393,6 @@ nv50_identify(struct nvkm_device *device)
|
||||
device->oclass[NVDEV_ENGINE_PM ] = gt215_pm_oclass;
|
||||
break;
|
||||
case 0xaf:
|
||||
device->cname = "MCP89";
|
||||
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nvkm_bios_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
|
||||
device->oclass[NVDEV_SUBDEV_I2C ] = g94_i2c_oclass;
|
||||
|
@ -2,6 +2,42 @@
|
||||
#define __NVKM_DEVICE_PRIV_H__
|
||||
#include <core/device.h>
|
||||
|
||||
#include <subdev/bar.h>
|
||||
#include <subdev/bios.h>
|
||||
#include <subdev/bus.h>
|
||||
#include <subdev/clk.h>
|
||||
#include <subdev/devinit.h>
|
||||
#include <subdev/fb.h>
|
||||
#include <subdev/fuse.h>
|
||||
#include <subdev/gpio.h>
|
||||
#include <subdev/i2c.h>
|
||||
#include <subdev/ibus.h>
|
||||
#include <subdev/instmem.h>
|
||||
#include <subdev/ltc.h>
|
||||
#include <subdev/mc.h>
|
||||
#include <subdev/mmu.h>
|
||||
#include <subdev/mxm.h>
|
||||
#include <subdev/pmu.h>
|
||||
#include <subdev/therm.h>
|
||||
#include <subdev/timer.h>
|
||||
#include <subdev/volt.h>
|
||||
|
||||
#include <engine/bsp.h>
|
||||
#include <engine/ce.h>
|
||||
#include <engine/cipher.h>
|
||||
#include <engine/disp.h>
|
||||
#include <engine/dmaobj.h>
|
||||
#include <engine/fifo.h>
|
||||
#include <engine/gr.h>
|
||||
#include <engine/mpeg.h>
|
||||
#include <engine/mspdec.h>
|
||||
#include <engine/msppp.h>
|
||||
#include <engine/msvld.h>
|
||||
#include <engine/pm.h>
|
||||
#include <engine/sec.h>
|
||||
#include <engine/sw.h>
|
||||
#include <engine/vp.h>
|
||||
|
||||
int nvkm_device_ctor(const struct nvkm_device_func *,
|
||||
const struct nvkm_device_quirk *,
|
||||
void *, enum nv_bus_type type, u64 handle,
|
||||
|
@ -107,8 +107,8 @@ nvkm_udevice_info(struct nvkm_object *object, void *data, u32 size)
|
||||
if (imem && args->v0.ram_size > 0)
|
||||
args->v0.ram_user = args->v0.ram_user - imem->reserved;
|
||||
|
||||
strncpy(args->v0.chip, device->cname, sizeof(args->v0.chip));
|
||||
strncpy(args->v0.name, device->cname, sizeof(args->v0.name));
|
||||
strncpy(args->v0.chip, device->chip->name, sizeof(args->v0.chip));
|
||||
strncpy(args->v0.name, device->name, sizeof(args->v0.name));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ _nvkm_falcon_init(struct nvkm_object *object)
|
||||
ret = request_firmware(&fw, name, nv_device_base(device));
|
||||
if (ret) {
|
||||
nvkm_error(subdev, "unable to load firmware data\n");
|
||||
return ret;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
falcon->data.data = vmemdup(fw->data, fw->size);
|
||||
@ -153,7 +153,7 @@ _nvkm_falcon_init(struct nvkm_object *object)
|
||||
ret = request_firmware(&fw, name, nv_device_base(device));
|
||||
if (ret) {
|
||||
nvkm_error(subdev, "unable to load firmware code\n");
|
||||
return ret;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
falcon->code.data = vmemdup(fw->data, fw->size);
|
||||
|
@ -435,7 +435,7 @@ gf100_fifo_recover_work(struct work_struct *work)
|
||||
{
|
||||
struct gf100_fifo *fifo = container_of(work, typeof(*fifo), fault);
|
||||
struct nvkm_device *device = fifo->base.engine.subdev.device;
|
||||
struct nvkm_object *engine;
|
||||
struct nvkm_engine *engine;
|
||||
unsigned long flags;
|
||||
u32 engn, engm = 0;
|
||||
u64 mask, todo;
|
||||
@ -450,9 +450,9 @@ gf100_fifo_recover_work(struct work_struct *work)
|
||||
nvkm_mask(device, 0x002630, engm, engm);
|
||||
|
||||
for (todo = mask; engn = __ffs64(todo), todo; todo &= ~(1 << engn)) {
|
||||
if ((engine = (void *)nvkm_engine(fifo, engn))) {
|
||||
nvkm_object_fini(engine, false);
|
||||
WARN_ON(nvkm_object_init(engine));
|
||||
if ((engine = nvkm_device_engine(device, engn))) {
|
||||
nvkm_subdev_fini(&engine->subdev, false);
|
||||
WARN_ON(nvkm_subdev_init(&engine->subdev));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -481,7 +481,7 @@ gk104_fifo_recover_work(struct work_struct *work)
|
||||
{
|
||||
struct gk104_fifo *fifo = container_of(work, typeof(*fifo), fault);
|
||||
struct nvkm_device *device = fifo->base.engine.subdev.device;
|
||||
struct nvkm_object *engine;
|
||||
struct nvkm_engine *engine;
|
||||
unsigned long flags;
|
||||
u32 engn, engm = 0;
|
||||
u64 mask, todo;
|
||||
@ -496,9 +496,9 @@ gk104_fifo_recover_work(struct work_struct *work)
|
||||
nvkm_mask(device, 0x002630, engm, engm);
|
||||
|
||||
for (todo = mask; engn = __ffs64(todo), todo; todo &= ~(1 << engn)) {
|
||||
if ((engine = (void *)nvkm_engine(fifo, engn))) {
|
||||
nvkm_object_fini(engine, false);
|
||||
WARN_ON(nvkm_object_init(engine));
|
||||
if ((engine = nvkm_device_engine(device, engn))) {
|
||||
nvkm_subdev_fini(&engine->subdev, false);
|
||||
WARN_ON(nvkm_subdev_init(&engine->subdev));
|
||||
}
|
||||
gk104_fifo_runlist_update(fifo, gk104_fifo_engidx(fifo, engn));
|
||||
}
|
||||
|
@ -1601,7 +1601,7 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, const char *fwname,
|
||||
int i;
|
||||
|
||||
/* Convert device name to lowercase */
|
||||
strncpy(cname, device->cname, sizeof(cname));
|
||||
strncpy(cname, device->chip->name, sizeof(cname));
|
||||
cname[sizeof(cname) - 1] = '\0';
|
||||
i = strlen(cname);
|
||||
while (i) {
|
||||
|
@ -638,8 +638,8 @@ nvkm_perfctx_dtor(struct nvkm_object *object)
|
||||
struct nvkm_pm *pm = (void *)object->engine;
|
||||
struct nvkm_perfctx *ctx = (void *)object;
|
||||
|
||||
mutex_lock(&nv_subdev(pm)->mutex);
|
||||
nvkm_gpuobj_destroy(&ctx->base);
|
||||
mutex_lock(&nv_subdev(pm)->mutex);
|
||||
if (pm->context == ctx)
|
||||
pm->context = NULL;
|
||||
mutex_unlock(&nv_subdev(pm)->mutex);
|
||||
|
@ -40,8 +40,8 @@ nv04_bus_intr(struct nvkm_subdev *subdev)
|
||||
|
||||
if (stat & 0x00000110) {
|
||||
struct nvkm_gpio *gpio = device->gpio;
|
||||
if (gpio && gpio->subdev.intr)
|
||||
gpio->subdev.intr(&gpio->subdev);
|
||||
if (gpio)
|
||||
nvkm_subdev_intr(&gpio->subdev);
|
||||
stat &= ~0x00000110;
|
||||
nvkm_wr32(device, 0x001100, 0x00000110);
|
||||
}
|
||||
|
@ -36,8 +36,8 @@ nv31_bus_intr(struct nvkm_subdev *subdev)
|
||||
|
||||
if (gpio) {
|
||||
struct nvkm_gpio *gpio = device->gpio;
|
||||
if (gpio && gpio->subdev.intr)
|
||||
gpio->subdev.intr(&gpio->subdev);
|
||||
if (gpio)
|
||||
nvkm_subdev_intr(&gpio->subdev);
|
||||
}
|
||||
|
||||
if (stat & 0x00000008) { /* NV41- */
|
||||
@ -54,8 +54,8 @@ nv31_bus_intr(struct nvkm_subdev *subdev)
|
||||
|
||||
if (stat & 0x00070000) {
|
||||
struct nvkm_therm *therm = device->therm;
|
||||
if (therm && therm->subdev.intr)
|
||||
therm->subdev.intr(&therm->subdev);
|
||||
if (therm)
|
||||
nvkm_subdev_intr(&therm->subdev);
|
||||
stat &= ~0x00070000;
|
||||
nvkm_wr32(device, 0x001100, 0x00070000);
|
||||
}
|
||||
|
@ -69,8 +69,8 @@ nv50_bus_intr(struct nvkm_subdev *subdev)
|
||||
|
||||
if (stat & 0x00010000) {
|
||||
struct nvkm_therm *therm = device->therm;
|
||||
if (therm && therm->subdev.intr)
|
||||
therm->subdev.intr(&therm->subdev);
|
||||
if (therm)
|
||||
nvkm_subdev_intr(&therm->subdev);
|
||||
stat &= ~0x00010000;
|
||||
nvkm_wr32(device, 0x001100, 0x00010000);
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ nvkm_mc_intr(int irq, void *arg)
|
||||
while (map->stat) {
|
||||
if (intr & map->stat) {
|
||||
unit = nvkm_subdev(mc, map->unit);
|
||||
if (unit && unit->intr)
|
||||
unit->intr(unit);
|
||||
if (unit)
|
||||
nvkm_subdev_intr(unit);
|
||||
stat &= ~map->stat;
|
||||
}
|
||||
map++;
|
||||
|
Loading…
Reference in New Issue
Block a user