drivers/gpu/drm/msm/msm_drv.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/msm/msm_drv.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/msm/msm_drv.c
Extension
.c
Size
28317 bytes
Lines
1161
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: operation-table or driver-model contract
Status
pattern 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

static const struct file_operations fops = {
	.owner = THIS_MODULE,
	DRM_GEM_FOPS,
	.show_fdinfo = drm_show_fdinfo,
};

#define DRIVER_FEATURES_GPU ( \
		DRIVER_GEM | \
		DRIVER_GEM_GPUVA | \
		DRIVER_RENDER | \
		DRIVER_SYNCOBJ | \
		DRIVER_SYNCOBJ_TIMELINE | \
		0 )

#define DRIVER_FEATURES_KMS ( \
		DRIVER_GEM | \
		DRIVER_GEM_GPUVA | \
		DRIVER_ATOMIC | \
		DRIVER_MODESET | \
		0 )

static const struct drm_driver msm_driver = {
	.driver_features    = DRIVER_FEATURES_GPU | DRIVER_FEATURES_KMS,
	.open               = msm_open,
	.postclose          = msm_postclose,
	.dumb_create        = msm_gem_dumb_create,
	.dumb_map_offset    = drm_gem_dumb_map_offset,
	.gem_prime_import   = msm_gem_prime_import,
	.gem_prime_import_sg_table = msm_gem_prime_import_sg_table,
#ifdef CONFIG_DEBUG_FS
	.debugfs_init       = msm_debugfs_init,
#endif
	MSM_FBDEV_DRIVER_OPS,
	.show_fdinfo        = msm_show_fdinfo,
	.ioctls             = msm_ioctls,
	.num_ioctls         = ARRAY_SIZE(msm_ioctls),
	.fops               = &fops,
	.name               = "msm",
	.desc               = "MSM Snapdragon DRM",
	.major              = MSM_VERSION_MAJOR,
	.minor              = MSM_VERSION_MINOR,
	.patchlevel         = MSM_VERSION_PATCHLEVEL,
};

static const struct drm_driver msm_kms_driver = {
	.driver_features    = DRIVER_FEATURES_KMS,
	.open               = msm_open,
	.postclose          = msm_postclose,
	.dumb_create        = msm_gem_dumb_create,
	.dumb_map_offset    = drm_gem_dumb_map_offset,
	.gem_prime_import_sg_table = msm_gem_prime_import_sg_table,
#ifdef CONFIG_DEBUG_FS
	.debugfs_init       = msm_debugfs_init,
#endif
	MSM_FBDEV_DRIVER_OPS,
	.show_fdinfo        = msm_show_fdinfo,
	.fops               = &fops,
	.name               = "msm-kms",
	.desc               = "MSM Snapdragon DRM",
	.major              = MSM_VERSION_MAJOR,
	.minor              = MSM_VERSION_MINOR,
	.patchlevel         = MSM_VERSION_PATCHLEVEL,
};

static const struct drm_driver msm_gpu_driver = {
	.driver_features    = DRIVER_FEATURES_GPU,
	.open               = msm_open,
	.postclose          = msm_postclose,
	.gem_prime_import_sg_table = msm_gem_prime_import_sg_table,
#ifdef CONFIG_DEBUG_FS
	.debugfs_init       = msm_debugfs_init,
#endif
	.show_fdinfo        = msm_show_fdinfo,
	.ioctls             = msm_ioctls,
	.num_ioctls         = ARRAY_SIZE(msm_ioctls),
	.fops               = &fops,
	.name               = "msm",
	.desc               = "MSM Snapdragon DRM",
	.major              = MSM_VERSION_MAJOR,
	.minor              = MSM_VERSION_MINOR,
	.patchlevel         = MSM_VERSION_PATCHLEVEL,
};

/*
 * Componentized driver support:
 */

/*
 * Identify what components need to be added by parsing what remote-endpoints
 * our MDP output ports are connected to. In the case of LVDS on MDP4, there

Annotation

Implementation Notes