Commit ab842041 authored by Dmitry Baryshkov's avatar Dmitry Baryshkov
Browse files

drm/msm/dp: cleanup debugfs handling



Currently there are two subdirs for DP debugfs files, e.g. DP-1, created
by the drm core for the connector, and the msm_dp-DP-1, created by the
DP driver itself. Merge those two, so that there are no extraneous
connector-related subdirs.

Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/563523/
Link: https://lore.kernel.org/r/20231019104419.1032329-1-dmitry.baryshkov@linaro.org


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
parent 96ab215b
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -274,9 +274,6 @@ static int dpu_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
	struct dpu_kms *dpu_kms = to_dpu_kms(kms);
	void *p = dpu_hw_util_get_log_mask_ptr();
	struct dentry *entry;
	struct drm_device *dev;
	struct msm_drm_private *priv;
	int i;

	if (!p)
		return -EINVAL;
@@ -285,9 +282,6 @@ static int dpu_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
	if (minor->type != DRM_MINOR_PRIMARY)
		return 0;

	dev = dpu_kms->dev;
	priv = dev->dev_private;

	entry = debugfs_create_dir("debug", minor->debugfs_root);

	debugfs_create_x32(DPU_DEBUGFS_HWMASKNAME, 0600, entry, p);
@@ -297,11 +291,6 @@ static int dpu_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
	dpu_debugfs_core_irq_init(dpu_kms, entry);
	dpu_debugfs_sspp_init(dpu_kms, entry);

	for (i = 0; i < ARRAY_SIZE(priv->dp); i++) {
		if (priv->dp[i])
			msm_dp_debugfs_init(priv->dp[i], minor);
	}

	return dpu_core_perf_debugfs_init(dpu_kms, entry);
}
#endif
+16 −53
Original line number Diff line number Diff line
@@ -19,13 +19,9 @@
#define DEBUG_NAME "msm_dp"

struct dp_debug_private {
	struct dentry *root;

	struct dp_link *link;
	struct dp_panel *panel;
	struct drm_connector *connector;
	struct device *dev;
	struct drm_device *drm_dev;

	struct dp_debug dp_debug;
};
@@ -204,35 +200,33 @@ static const struct file_operations test_active_fops = {
	.write = dp_test_active_write
};

static void dp_debug_init(struct dp_debug *dp_debug, struct drm_minor *minor)
static void dp_debug_init(struct dp_debug *dp_debug, struct dentry *root, bool is_edp)
{
	char path[64];
	struct dp_debug_private *debug = container_of(dp_debug,
			struct dp_debug_private, dp_debug);

	snprintf(path, sizeof(path), "msm_dp-%s", debug->connector->name);

	debug->root = debugfs_create_dir(path, minor->debugfs_root);

	debugfs_create_file("dp_debug", 0444, debug->root,
	debugfs_create_file("dp_debug", 0444, root,
			debug, &dp_debug_fops);

	if (!is_edp) {
		debugfs_create_file("msm_dp_test_active", 0444,
			debug->root,
				    root,
				    debug, &test_active_fops);

		debugfs_create_file("msm_dp_test_data", 0444,
			debug->root,
				    root,
				    debug, &dp_test_data_fops);

		debugfs_create_file("msm_dp_test_type", 0444,
			debug->root,
				    root,
				    debug, &dp_test_type_fops);
	}
}

struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
		struct dp_link *link,
		struct drm_connector *connector, struct drm_minor *minor)
		struct drm_connector *connector,
		struct dentry *root, bool is_edp)
{
	struct dp_debug_private *debug;
	struct dp_debug *dp_debug;
@@ -253,46 +247,15 @@ struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
	debug->dp_debug.debug_en = false;
	debug->link = link;
	debug->panel = panel;
	debug->dev = dev;
	debug->drm_dev = minor->dev;
	debug->connector = connector;

	dp_debug = &debug->dp_debug;
	dp_debug->vdisplay = 0;
	dp_debug->hdisplay = 0;
	dp_debug->vrefresh = 0;

	dp_debug_init(dp_debug, minor);
	dp_debug_init(dp_debug, root, is_edp);

	return dp_debug;
 error:
	return ERR_PTR(rc);
}

static int dp_debug_deinit(struct dp_debug *dp_debug)
{
	struct dp_debug_private *debug;

	if (!dp_debug)
		return -EINVAL;

	debug = container_of(dp_debug, struct dp_debug_private, dp_debug);

	debugfs_remove_recursive(debug->root);

	return 0;
}

void dp_debug_put(struct dp_debug *dp_debug)
{
	struct dp_debug_private *debug;

	if (!dp_debug)
		return;

	debug = container_of(dp_debug, struct dp_debug_private, dp_debug);

	dp_debug_deinit(dp_debug);

	devm_kfree(debug->dev, debug);
}
+7 −16
Original line number Diff line number Diff line
@@ -34,7 +34,8 @@ struct dp_debug {
 * @panel: instance of panel module
 * @link: instance of link module
 * @connector: double pointer to display connector
 * @minor: pointer to drm minor number after device registration
 * @root: connector's debugfs root
 * @is_edp: set for eDP connectors / panels
 * return: pointer to allocated debug module data
 *
 * This function sets up the debug module and provides a way
@@ -43,31 +44,21 @@ struct dp_debug {
struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
		struct dp_link *link,
		struct drm_connector *connector,
		struct drm_minor *minor);

/**
 * dp_debug_put()
 *
 * Cleans up dp_debug instance
 *
 * @dp_debug: instance of dp_debug
 */
void dp_debug_put(struct dp_debug *dp_debug);
		struct dentry *root,
		bool is_edp);

#else

static inline
struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel,
		struct dp_link *link,
		struct drm_connector *connector, struct drm_minor *minor)
		struct drm_connector *connector,
		struct dentry *root,
		bool is_edp)
{
	return ERR_PTR(-EINVAL);
}

static inline void dp_debug_put(struct dp_debug *dp_debug)
{
}

#endif /* defined(CONFIG_DEBUG_FS) */

#endif /* _DP_DEBUG_H_ */
+2 −3
Original line number Diff line number Diff line
@@ -715,7 +715,6 @@ static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data)

static void dp_display_deinit_sub_modules(struct dp_display_private *dp)
{
	dp_debug_put(dp->debug);
	dp_audio_put(dp->audio);
	dp_panel_put(dp->panel);
	dp_aux_put(dp->aux);
@@ -1451,7 +1450,7 @@ bool msm_dp_wide_bus_available(const struct msm_dp *dp_display)
	return dp->wide_bus_en;
}

void msm_dp_debugfs_init(struct msm_dp *dp_display, struct drm_minor *minor)
void dp_display_debugfs_init(struct msm_dp *dp_display, struct dentry *root, bool is_edp)
{
	struct dp_display_private *dp;
	struct device *dev;
@@ -1462,7 +1461,7 @@ void msm_dp_debugfs_init(struct msm_dp *dp_display, struct drm_minor *minor)

	dp->debug = dp_debug_get(dev, dp->panel,
					dp->link, dp->dp_display.connector,
					minor);
					root, is_edp);
	if (IS_ERR(dp->debug)) {
		rc = PTR_ERR(dp->debug);
		DRM_ERROR("failed to initialize debug, rc = %d\n", rc);
+1 −0
Original line number Diff line number Diff line
@@ -42,5 +42,6 @@ int dp_display_get_test_bpp(struct msm_dp *dp_display);
void dp_display_signal_audio_start(struct msm_dp *dp_display);
void dp_display_signal_audio_complete(struct msm_dp *dp_display);
void dp_display_set_psr(struct msm_dp *dp, bool enter);
void dp_display_debugfs_init(struct msm_dp *dp_display, struct dentry *dentry, bool is_edp);

#endif /* _DP_DISPLAY_H_ */
Loading