drivers/gpu/drm/msm/dp/dp_debug.c

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/msm/dp/dp_debug.c
Extension
.c
Size
6257 bytes
Lines
241
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 test_active_fops = {
	.owner = THIS_MODULE,
	.open = msm_dp_test_active_open,
	.read = seq_read,
	.llseek = seq_lseek,
	.release = single_release,
	.write = msm_dp_test_active_write
};

int msm_dp_debug_init(struct device *dev, struct msm_dp_panel *panel,
		  struct msm_dp_link *link,
		  struct drm_connector *connector,
		  struct dentry *root, bool is_edp)
{
	struct msm_dp_debug_private *debug;

	if (!dev || !panel || !link) {
		DRM_ERROR("invalid input\n");
		return -EINVAL;
	}

	debug = devm_kzalloc(dev, sizeof(*debug), GFP_KERNEL);
	if (!debug)
		return -ENOMEM;

	debug->link = link;
	debug->panel = panel;

	debugfs_create_file("dp_debug", 0444, root,
			debug, &msm_dp_debug_fops);

	if (!is_edp) {
		debugfs_create_file("dp_test_active", 0444,
				    root,
				    debug, &test_active_fops);

		debugfs_create_file("dp_test_data", 0444,
				    root,
				    debug, &msm_dp_test_data_fops);

		debugfs_create_file("dp_test_type", 0444,
				    root,
				    debug, &msm_dp_test_type_fops);
	}

	return 0;
}

#endif

Annotation

Implementation Notes