diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2014-01-09 21:19:11 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-01-22 22:39:13 -0500 |
commit | f0d13e3a851ef29691076d89ff7ee69f004037a7 (patch) | |
tree | d9f952fdbb529aa50c4a48ab1cbb88e460465d5e | |
parent | cf336014c6dc3ef1431d84b5a94e47a22660493b (diff) |
drm/nouveau/device: provide a way for devinit to mark engines as disabled
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/core/core/engine.c | 23 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/include/core/device.h | 1 |
2 files changed, 19 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/core/core/engine.c b/drivers/gpu/drm/nouveau/core/core/engine.c index c8bed4a26833..1f6954ae9dd3 100644 --- a/drivers/gpu/drm/nouveau/core/core/engine.c +++ b/drivers/gpu/drm/nouveau/core/core/engine.c | |||
@@ -42,11 +42,24 @@ nouveau_engine_create_(struct nouveau_object *parent, | |||
42 | if (ret) | 42 | if (ret) |
43 | return ret; | 43 | return ret; |
44 | 44 | ||
45 | if ( parent && | 45 | if (parent) { |
46 | !nouveau_boolopt(nv_device(parent)->cfgopt, iname, enable)) { | 46 | struct nouveau_device *device = nv_device(parent); |
47 | if (!enable) | 47 | int engidx = nv_engidx(nv_object(engine)); |
48 | nv_warn(engine, "disabled, %s=1 to enable\n", iname); | 48 | |
49 | return -ENODEV; | 49 | if (device->disable_mask & (1ULL << engidx)) { |
50 | if (!nouveau_boolopt(device->cfgopt, iname, false)) { | ||
51 | nv_debug(engine, "engine disabled by hw/fw\n"); | ||
52 | return -ENODEV; | ||
53 | } | ||
54 | |||
55 | nv_warn(engine, "ignoring hw/fw engine disable\n"); | ||
56 | } | ||
57 | |||
58 | if (!nouveau_boolopt(device->cfgopt, iname, enable)) { | ||
59 | if (!enable) | ||
60 | nv_warn(engine, "disabled, %s=1 to enable\n", iname); | ||
61 | return -ENODEV; | ||
62 | } | ||
50 | } | 63 | } |
51 | 64 | ||
52 | INIT_LIST_HEAD(&engine->contexts); | 65 | INIT_LIST_HEAD(&engine->contexts); |
diff --git a/drivers/gpu/drm/nouveau/core/include/core/device.h b/drivers/gpu/drm/nouveau/core/include/core/device.h index 24809c10b4b3..7b8ea221b00d 100644 --- a/drivers/gpu/drm/nouveau/core/include/core/device.h +++ b/drivers/gpu/drm/nouveau/core/include/core/device.h | |||
@@ -71,6 +71,7 @@ struct nouveau_device { | |||
71 | const char *dbgopt; | 71 | const char *dbgopt; |
72 | const char *name; | 72 | const char *name; |
73 | const char *cname; | 73 | const char *cname; |
74 | u64 disable_mask; | ||
74 | 75 | ||
75 | enum { | 76 | enum { |
76 | NV_04 = 0x04, | 77 | NV_04 = 0x04, |