drivers/gpu/drm/nouveau/nvif/device.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/nvif/device.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/nouveau/nvif/device.c
Extension
.c
Size
2238 bytes
Lines
70
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#include <nvif/device.h>
#include <nvif/client.h>

u64
nvif_device_time(struct nvif_device *device)
{
	if (!device->user.func) {
		struct nv_device_time_v0 args = {};
		int ret = nvif_object_mthd(&device->object, NV_DEVICE_V0_TIME,
					   &args, sizeof(args));
		WARN_ON_ONCE(ret != 0);
		return args.time;
	}

	return device->user.func->time(&device->user);
}

int
nvif_device_map(struct nvif_device *device)
{
	return nvif_object_map(&device->object, NULL, 0);
}

void
nvif_device_dtor(struct nvif_device *device)
{
	nvif_user_dtor(device);
	kfree(device->runlist);
	device->runlist = NULL;
	nvif_object_dtor(&device->object);
}

int
nvif_device_ctor(struct nvif_client *client, const char *name, struct nvif_device *device)
{
	int ret = nvif_object_ctor(&client->object, name ? name : "nvifDevice", 0,
				   0x0080, NULL, 0, &device->object);
	device->runlist = NULL;
	device->user.func = NULL;
	if (ret == 0) {
		device->info.version = 0;
		ret = nvif_object_mthd(&device->object, NV_DEVICE_V0_INFO,
				       &device->info, sizeof(device->info));
	}
	return ret;
}

Annotation

Implementation Notes