drm/msm/dpu: simplify DPU's regset32 code
Squash dpu_debugfs_setup_regset32() into dpu_debugfs_create_regset32(). it makes little sense to have separate function to just setup the structure. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Link: https://lore.kernel.org/r/20211201222633.2476780-8-dmitry.baryshkov@linaro.org Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
Родитель
927e8bcaa7
Коммит
37897856ab
|
@ -182,6 +182,15 @@ static void dpu_debugfs_danger_init(struct dpu_kms *dpu_kms,
|
|||
|
||||
}
|
||||
|
||||
/*
|
||||
* Companion structure for dpu_debugfs_create_regset32.
|
||||
*/
|
||||
struct dpu_debugfs_regset32 {
|
||||
uint32_t offset;
|
||||
uint32_t blk_len;
|
||||
struct dpu_kms *dpu_kms;
|
||||
};
|
||||
|
||||
static int _dpu_debugfs_show_regset32(struct seq_file *s, void *data)
|
||||
{
|
||||
struct dpu_debugfs_regset32 *regset = s->private;
|
||||
|
@ -229,24 +238,23 @@ static const struct file_operations dpu_fops_regset32 = {
|
|||
.release = single_release,
|
||||
};
|
||||
|
||||
void dpu_debugfs_setup_regset32(struct dpu_debugfs_regset32 *regset,
|
||||
void dpu_debugfs_create_regset32(const char *name, umode_t mode,
|
||||
void *parent,
|
||||
uint32_t offset, uint32_t length, struct dpu_kms *dpu_kms)
|
||||
{
|
||||
if (regset) {
|
||||
regset->offset = offset;
|
||||
regset->blk_len = length;
|
||||
regset->dpu_kms = dpu_kms;
|
||||
}
|
||||
}
|
||||
struct dpu_debugfs_regset32 *regset;
|
||||
|
||||
void dpu_debugfs_create_regset32(const char *name, umode_t mode,
|
||||
void *parent, struct dpu_debugfs_regset32 *regset)
|
||||
{
|
||||
if (!name || !regset || !regset->dpu_kms || !regset->blk_len)
|
||||
if (WARN_ON(!name || !dpu_kms || !length))
|
||||
return;
|
||||
|
||||
regset = devm_kzalloc(&dpu_kms->pdev->dev, sizeof(*regset), GFP_KERNEL);
|
||||
if (!regset)
|
||||
return;
|
||||
|
||||
/* make sure offset is a multiple of 4 */
|
||||
regset->offset = round_down(regset->offset, 4);
|
||||
regset->offset = round_down(offset, 4);
|
||||
regset->blk_len = length;
|
||||
regset->dpu_kms = dpu_kms;
|
||||
|
||||
debugfs_create_file(name, mode, parent, regset, &dpu_fops_regset32);
|
||||
}
|
||||
|
|
|
@ -160,33 +160,9 @@ struct dpu_global_state
|
|||
*
|
||||
* Documentation/filesystems/debugfs.rst
|
||||
*
|
||||
* @dpu_debugfs_setup_regset32: Initialize data for dpu_debugfs_create_regset32
|
||||
* @dpu_debugfs_create_regset32: Create 32-bit register dump file
|
||||
* @dpu_debugfs_get_root: Get root dentry for DPU_KMS's debugfs node
|
||||
*/
|
||||
|
||||
/**
|
||||
* Companion structure for dpu_debugfs_create_regset32. Do not initialize the
|
||||
* members of this structure explicitly; use dpu_debugfs_setup_regset32 instead.
|
||||
*/
|
||||
struct dpu_debugfs_regset32 {
|
||||
uint32_t offset;
|
||||
uint32_t blk_len;
|
||||
struct dpu_kms *dpu_kms;
|
||||
};
|
||||
|
||||
/**
|
||||
* dpu_debugfs_setup_regset32 - Initialize register block definition for debugfs
|
||||
* This function is meant to initialize dpu_debugfs_regset32 structures for use
|
||||
* with dpu_debugfs_create_regset32.
|
||||
* @regset: opaque register definition structure
|
||||
* @offset: sub-block offset
|
||||
* @length: sub-block length, in bytes
|
||||
* @dpu_kms: pointer to dpu kms structure
|
||||
*/
|
||||
void dpu_debugfs_setup_regset32(struct dpu_debugfs_regset32 *regset,
|
||||
uint32_t offset, uint32_t length, struct dpu_kms *dpu_kms);
|
||||
|
||||
/**
|
||||
* dpu_debugfs_create_regset32 - Create register read back file for debugfs
|
||||
*
|
||||
|
@ -195,20 +171,16 @@ void dpu_debugfs_setup_regset32(struct dpu_debugfs_regset32 *regset,
|
|||
* names/offsets do not need to be provided. The 'read' function simply outputs
|
||||
* sequential register values over a specified range.
|
||||
*
|
||||
* Similar to the related debugfs_create_regset32 API, the structure pointed to
|
||||
* by regset needs to persist for the lifetime of the created file. The calling
|
||||
* code is responsible for initialization/management of this structure.
|
||||
*
|
||||
* The structure pointed to by regset is meant to be opaque. Please use
|
||||
* dpu_debugfs_setup_regset32 to initialize it.
|
||||
*
|
||||
* @name: File name within debugfs
|
||||
* @mode: File mode within debugfs
|
||||
* @parent: Parent directory entry within debugfs, can be NULL
|
||||
* @regset: Pointer to persistent register block definition
|
||||
* @offset: sub-block offset
|
||||
* @length: sub-block length, in bytes
|
||||
* @dpu_kms: pointer to dpu kms structure
|
||||
*/
|
||||
void dpu_debugfs_create_regset32(const char *name, umode_t mode,
|
||||
void *parent, struct dpu_debugfs_regset32 *regset);
|
||||
void *parent,
|
||||
uint32_t offset, uint32_t length, struct dpu_kms *dpu_kms);
|
||||
|
||||
/**
|
||||
* dpu_debugfs_get_root - Return root directory entry for KMS's debugfs
|
||||
|
|
|
@ -108,11 +108,6 @@ struct dpu_plane {
|
|||
bool is_virtual;
|
||||
struct list_head mplane_list;
|
||||
struct dpu_mdss_cfg *catalog;
|
||||
|
||||
/* debugfs related stuff */
|
||||
struct dpu_debugfs_regset32 debugfs_src;
|
||||
struct dpu_debugfs_regset32 debugfs_scaler;
|
||||
struct dpu_debugfs_regset32 debugfs_csc;
|
||||
};
|
||||
|
||||
static const uint64_t supported_format_modifiers[] = {
|
||||
|
@ -1371,35 +1366,29 @@ static int _dpu_plane_init_debugfs(struct drm_plane *plane)
|
|||
debugfs_root, (unsigned long *)&pdpu->pipe_hw->cap->features);
|
||||
|
||||
/* add register dump support */
|
||||
dpu_debugfs_setup_regset32(&pdpu->debugfs_src,
|
||||
dpu_debugfs_create_regset32("src_blk", 0400,
|
||||
debugfs_root,
|
||||
sblk->src_blk.base + cfg->base,
|
||||
sblk->src_blk.len,
|
||||
kms);
|
||||
dpu_debugfs_create_regset32("src_blk", 0400,
|
||||
debugfs_root, &pdpu->debugfs_src);
|
||||
|
||||
if (cfg->features & BIT(DPU_SSPP_SCALER_QSEED3) ||
|
||||
cfg->features & BIT(DPU_SSPP_SCALER_QSEED3LITE) ||
|
||||
cfg->features & BIT(DPU_SSPP_SCALER_QSEED2) ||
|
||||
cfg->features & BIT(DPU_SSPP_SCALER_QSEED4)) {
|
||||
dpu_debugfs_setup_regset32(&pdpu->debugfs_scaler,
|
||||
cfg->features & BIT(DPU_SSPP_SCALER_QSEED4))
|
||||
dpu_debugfs_create_regset32("scaler_blk", 0400,
|
||||
debugfs_root,
|
||||
sblk->scaler_blk.base + cfg->base,
|
||||
sblk->scaler_blk.len,
|
||||
kms);
|
||||
dpu_debugfs_create_regset32("scaler_blk", 0400,
|
||||
debugfs_root,
|
||||
&pdpu->debugfs_scaler);
|
||||
}
|
||||
|
||||
if (cfg->features & BIT(DPU_SSPP_CSC) ||
|
||||
cfg->features & BIT(DPU_SSPP_CSC_10BIT)) {
|
||||
dpu_debugfs_setup_regset32(&pdpu->debugfs_csc,
|
||||
cfg->features & BIT(DPU_SSPP_CSC_10BIT))
|
||||
dpu_debugfs_create_regset32("csc_blk", 0400,
|
||||
debugfs_root,
|
||||
sblk->csc_blk.base + cfg->base,
|
||||
sblk->csc_blk.len,
|
||||
kms);
|
||||
dpu_debugfs_create_regset32("csc_blk", 0400,
|
||||
debugfs_root, &pdpu->debugfs_csc);
|
||||
}
|
||||
|
||||
debugfs_create_u32("xin_id",
|
||||
0400,
|
||||
|
|
Загрузка…
Ссылка в новой задаче