drivers/gpu/drm/v3d/v3d_debugfs.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/v3d/v3d_debugfs.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/v3d/v3d_debugfs.c
Extension
.c
Size
9796 bytes
Lines
310
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

struct v3d_reg_def {
	u32 min_ver;
	u32 max_ver;
	u32 reg;
	const char *name;
};

static const struct v3d_reg_def v3d_hub_reg_defs[] = {
	REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_HUB_AXICFG),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_UIFCFG),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT0),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT1),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT2),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT3),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_INT_STS),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_INT_MSK_STS),

	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_CTL),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_VIO_ADDR),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_VIO_ID),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_DEBUG_INFO),

	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_GMP_STATUS(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_GMP_CFG(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_GMP_VIO_ADDR(71)),
};

static const struct v3d_reg_def v3d_gca_reg_defs[] = {
	REGDEF(V3D_GEN_33, V3D_GEN_33, V3D_GCA_SAFE_SHUTDOWN),
	REGDEF(V3D_GEN_33, V3D_GEN_33, V3D_GCA_SAFE_SHUTDOWN_ACK),
};

static const struct v3d_reg_def v3d_core_reg_defs[] = {
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_IDENT0),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_IDENT1),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_IDENT2),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_MISCCFG),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_INT_STS),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_INT_MSK_STS),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT0CS),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT0CA),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT0EA),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT1CS),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT1CA),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT1EA),

	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_PTB_BPCA),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_PTB_BPCS),

	REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_GMP_STATUS(33)),
	REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_GMP_CFG(33)),
	REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_GMP_VIO_ADDR(33)),

	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_FDBGO),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_FDBGB),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_FDBGS),
	REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_STAT),
};

static const struct v3d_reg_def v3d_csd_reg_defs[] = {
	REGDEF(V3D_GEN_41, V3D_GEN_71, V3D_CSD_STATUS),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG0(41)),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG1(41)),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG2(41)),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG3(41)),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG4(41)),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG5(41)),
	REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG6(41)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG0(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG1(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG2(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG3(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG4(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG5(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG6(71)),
	REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_V7_CSD_CURRENT_CFG7),
};

static int v3d_v3d_debugfs_regs(struct seq_file *m, void *unused)
{
	struct drm_debugfs_entry *entry = m->private;
	struct drm_device *dev = entry->dev;
	struct v3d_dev *v3d = to_v3d_dev(dev);
	int i, core, ret;

	ret = v3d_pm_runtime_get(v3d);
	if (ret)
		return ret;

	for (i = 0; i < ARRAY_SIZE(v3d_hub_reg_defs); i++) {

Annotation

Implementation Notes