Lines Matching +full:1 +full:- +full:v0

51 		return -EINVAL;  in nvkm_udevice_info_subdev()
57 return -ENODEV; in nvkm_udevice_info_subdev()
64 if (args->mthd & NV_DEVICE_INFO_UNIT) { in nvkm_udevice_info_v1()
65 if (nvkm_udevice_info_subdev(device, args->mthd, &args->data)) in nvkm_udevice_info_v1()
66 args->mthd = NV_DEVICE_INFO_INVALID; in nvkm_udevice_info_v1()
70 switch (args->mthd) { in nvkm_udevice_info_v1()
72 for (_i = (B), args->data = 0ULL; _i <= (C); _i++) { \ in nvkm_udevice_info_v1()
74 args->data |= BIT_ULL(_i); \ in nvkm_udevice_info_v1()
97 args->mthd = NV_DEVICE_INFO_INVALID; in nvkm_udevice_info_v1()
105 struct nvkm_object *object = &udev->object; in nvkm_udevice_info()
106 struct nvkm_device *device = udev->device; in nvkm_udevice_info()
107 struct nvkm_fb *fb = device->fb; in nvkm_udevice_info()
108 struct nvkm_instmem *imem = device->imem; in nvkm_udevice_info()
110 struct nv_device_info_v0 v0; in nvkm_udevice_info() member
113 int ret = -ENOSYS, i; in nvkm_udevice_info()
116 if (!(ret = nvif_unpack(ret, &data, &size, args->v1, 1, 1, true))) { in nvkm_udevice_info()
118 args->v1.version, args->v1.count); in nvkm_udevice_info()
119 if (args->v1.count * sizeof(args->v1.data[0]) == size) { in nvkm_udevice_info()
120 for (i = 0; i < args->v1.count; i++) in nvkm_udevice_info()
121 nvkm_udevice_info_v1(device, &args->v1.data[i]); in nvkm_udevice_info()
124 return -EINVAL; in nvkm_udevice_info()
126 if (!(ret = nvif_unpack(ret, &data, &size, args->v0, 0, 0, false))) { in nvkm_udevice_info()
127 nvif_ioctl(object, "device info vers %d\n", args->v0.version); in nvkm_udevice_info()
131 switch (device->chipset) { in nvkm_udevice_info()
142 args->v0.platform = NV_DEVICE_INFO_V0_IGP; in nvkm_udevice_info()
145 switch (device->type) { in nvkm_udevice_info()
147 args->v0.platform = NV_DEVICE_INFO_V0_PCI; in nvkm_udevice_info()
150 args->v0.platform = NV_DEVICE_INFO_V0_AGP; in nvkm_udevice_info()
153 args->v0.platform = NV_DEVICE_INFO_V0_PCIE; in nvkm_udevice_info()
156 args->v0.platform = NV_DEVICE_INFO_V0_SOC; in nvkm_udevice_info()
159 WARN_ON(1); in nvkm_udevice_info()
165 switch (device->card_type) { in nvkm_udevice_info()
166 case NV_04: args->v0.family = NV_DEVICE_INFO_V0_TNT; break; in nvkm_udevice_info()
168 case NV_11: args->v0.family = NV_DEVICE_INFO_V0_CELSIUS; break; in nvkm_udevice_info()
169 case NV_20: args->v0.family = NV_DEVICE_INFO_V0_KELVIN; break; in nvkm_udevice_info()
170 case NV_30: args->v0.family = NV_DEVICE_INFO_V0_RANKINE; break; in nvkm_udevice_info()
171 case NV_40: args->v0.family = NV_DEVICE_INFO_V0_CURIE; break; in nvkm_udevice_info()
172 case NV_50: args->v0.family = NV_DEVICE_INFO_V0_TESLA; break; in nvkm_udevice_info()
173 case NV_C0: args->v0.family = NV_DEVICE_INFO_V0_FERMI; break; in nvkm_udevice_info()
174 case NV_E0: args->v0.family = NV_DEVICE_INFO_V0_KEPLER; break; in nvkm_udevice_info()
175 case GM100: args->v0.family = NV_DEVICE_INFO_V0_MAXWELL; break; in nvkm_udevice_info()
176 case GP100: args->v0.family = NV_DEVICE_INFO_V0_PASCAL; break; in nvkm_udevice_info()
177 case GV100: args->v0.family = NV_DEVICE_INFO_V0_VOLTA; break; in nvkm_udevice_info()
178 case TU100: args->v0.family = NV_DEVICE_INFO_V0_TURING; break; in nvkm_udevice_info()
180 args->v0.family = 0; in nvkm_udevice_info()
184 args->v0.chipset = device->chipset; in nvkm_udevice_info()
185 args->v0.revision = device->chiprev; in nvkm_udevice_info()
186 if (fb && fb->ram) in nvkm_udevice_info()
187 args->v0.ram_size = args->v0.ram_user = fb->ram->size; in nvkm_udevice_info()
189 args->v0.ram_size = args->v0.ram_user = 0; in nvkm_udevice_info()
190 if (imem && args->v0.ram_size > 0) in nvkm_udevice_info()
191 args->v0.ram_user = args->v0.ram_user - imem->reserved; in nvkm_udevice_info()
193 strncpy(args->v0.chip, device->chip->name, sizeof(args->v0.chip)); in nvkm_udevice_info()
194 strncpy(args->v0.name, device->name, sizeof(args->v0.name)); in nvkm_udevice_info()
201 struct nvkm_object *object = &udev->object; in nvkm_udevice_time()
202 struct nvkm_device *device = udev->device; in nvkm_udevice_time()
204 struct nv_device_time_v0 v0; in nvkm_udevice_time() member
206 int ret = -ENOSYS; in nvkm_udevice_time()
209 if (!(ret = nvif_unpack(ret, &data, &size, args->v0, 0, 0, false))) { in nvkm_udevice_time()
210 nvif_ioctl(object, "device time vers %d\n", args->v0.version); in nvkm_udevice_time()
211 args->v0.time = nvkm_timer_read(device->timer); in nvkm_udevice_time()
230 return -EINVAL; in nvkm_udevice_mthd()
237 *data = nvkm_rd08(udev->device, addr); in nvkm_udevice_rd08()
245 *data = nvkm_rd16(udev->device, addr); in nvkm_udevice_rd16()
253 *data = nvkm_rd32(udev->device, addr); in nvkm_udevice_rd32()
261 nvkm_wr08(udev->device, addr, data); in nvkm_udevice_wr08()
269 nvkm_wr16(udev->device, addr, data); in nvkm_udevice_wr16()
277 nvkm_wr32(udev->device, addr, data); in nvkm_udevice_wr32()
286 struct nvkm_device *device = udev->device; in nvkm_udevice_map()
288 *addr = device->func->resource_addr(device, 0); in nvkm_udevice_map()
289 *size = device->func->resource_size(device, 0); in nvkm_udevice_map()
297 struct nvkm_device *device = udev->device; in nvkm_udevice_fini()
300 mutex_lock(&device->mutex); in nvkm_udevice_fini()
301 if (!--device->refcount) { in nvkm_udevice_fini()
304 device->refcount++; in nvkm_udevice_fini()
310 mutex_unlock(&device->mutex); in nvkm_udevice_fini()
318 struct nvkm_device *device = udev->device; in nvkm_udevice_init()
321 mutex_lock(&device->mutex); in nvkm_udevice_init()
322 if (!device->refcount++) { in nvkm_udevice_init()
325 device->refcount--; in nvkm_udevice_init()
331 mutex_unlock(&device->mutex); in nvkm_udevice_init()
339 struct nvkm_udevice *udev = nvkm_udevice(oclass->parent); in nvkm_udevice_child_new()
340 const struct nvkm_device_oclass *sclass = oclass->priv; in nvkm_udevice_child_new()
341 return sclass->ctor(udev->device, oclass, data, size, pobject); in nvkm_udevice_child_new()
349 struct nvkm_device *device = udev->device; in nvkm_udevice_child_get()
351 u64 mask = (1ULL << NVKM_ENGINE_DMAOBJ) | in nvkm_udevice_child_get()
352 (1ULL << NVKM_ENGINE_FIFO) | in nvkm_udevice_child_get()
353 (1ULL << NVKM_ENGINE_DISP) | in nvkm_udevice_child_get()
354 (1ULL << NVKM_ENGINE_PM); in nvkm_udevice_child_get()
358 for (; i = __ffs64(mask), mask && !sclass; mask &= ~(1ULL << i)) { in nvkm_udevice_child_get()
360 !(engine->func->base.sclass)) in nvkm_udevice_child_get()
362 oclass->engine = engine; in nvkm_udevice_child_get()
364 index -= engine->func->base.sclass(oclass, index, &sclass); in nvkm_udevice_child_get()
368 if (index-- == 0) in nvkm_udevice_child_get()
370 else if (device->mmu && index-- == 0) in nvkm_udevice_child_get()
371 sclass = &device->mmu->user; in nvkm_udevice_child_get()
372 else if (device->fault && index-- == 0) in nvkm_udevice_child_get()
373 sclass = &device->fault->user; in nvkm_udevice_child_get()
375 return -EINVAL; in nvkm_udevice_child_get()
377 oclass->base = sclass->base; in nvkm_udevice_child_get()
380 oclass->ctor = nvkm_udevice_child_new; in nvkm_udevice_child_get()
381 oclass->priv = sclass; in nvkm_udevice_child_get()
413 struct nv_device_v0 v0; in nvkm_udevice_new() member
415 struct nvkm_client *client = oclass->client; in nvkm_udevice_new()
416 struct nvkm_object *parent = &client->object; in nvkm_udevice_new()
419 int ret = -ENOSYS; in nvkm_udevice_new()
422 if (!(ret = nvif_unpack(ret, &data, &size, args->v0, 0, 0, false))) { in nvkm_udevice_new()
424 args->v0.version, args->v0.device); in nvkm_udevice_new()
429 if (client->super) in nvkm_udevice_new()
435 return -ENOMEM; in nvkm_udevice_new()
436 nvkm_object_ctor(func, oclass, &udev->object); in nvkm_udevice_new()
437 *pobject = &udev->object; in nvkm_udevice_new()
440 if (args->v0.device != ~0) in nvkm_udevice_new()
441 udev->device = nvkm_device_find(args->v0.device); in nvkm_udevice_new()
443 udev->device = nvkm_device_find(client->device); in nvkm_udevice_new()
444 if (!udev->device) in nvkm_udevice_new()
445 return -ENODEV; in nvkm_udevice_new()