Commit 4cd79f61 authored by Bhanuprakash Modem's avatar Bhanuprakash Modem Committed by Jani Nikula

drm/amd/display: Move connector debugfs to drm

As drm_connector already have the display_info, instead of creating
"output_bpc" debugfs in vendor specific driver, move the logic to
the drm layer.

This patch will also move "Current" bpc to the crtc debugfs from
connector debugfs, since we are getting this info from crtc_state.

Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: default avatarBhanuprakash Modem <bhanuprakash.modem@intel.com>
Reported-by: default avatarkernel test robot <lkp@intel.com>
Reviewed-by: default avatarArun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220519095149.3560034-4-bhanuprakash.modem@intel.com
parent fa373eb2
...@@ -6617,14 +6617,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc) ...@@ -6617,14 +6617,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
return &state->base; return &state->base;
} }
#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc) static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
{ {
crtc_debugfs_init(crtc); crtc_debugfs_init(crtc);
return 0; return 0;
} }
#endif
static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable) static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable)
{ {
...@@ -6722,9 +6720,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = { ...@@ -6722,9 +6720,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
.enable_vblank = dm_enable_vblank, .enable_vblank = dm_enable_vblank,
.disable_vblank = dm_disable_vblank, .disable_vblank = dm_disable_vblank,
.get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp, .get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp,
#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
.late_register = amdgpu_dm_crtc_late_register, .late_register = amdgpu_dm_crtc_late_register,
#endif
}; };
static enum drm_connector_status static enum drm_connector_status
......
...@@ -873,28 +873,18 @@ static int psr_capability_show(struct seq_file *m, void *data) ...@@ -873,28 +873,18 @@ static int psr_capability_show(struct seq_file *m, void *data)
} }
/* /*
* Returns the current and maximum output bpc for the connector. * Returns the current bpc for the crtc.
* Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/amdgpu_current_bpc
*/ */
static int output_bpc_show(struct seq_file *m, void *data) static int amdgpu_current_bpc_show(struct seq_file *m, void *data)
{ {
struct drm_connector *connector = m->private; struct drm_crtc *crtc = m->private;
struct drm_device *dev = connector->dev; struct drm_device *dev = crtc->dev;
struct drm_crtc *crtc = NULL;
struct dm_crtc_state *dm_crtc_state = NULL; struct dm_crtc_state *dm_crtc_state = NULL;
int res = -ENODEV; int res = -ENODEV;
unsigned int bpc; unsigned int bpc;
mutex_lock(&dev->mode_config.mutex); mutex_lock(&dev->mode_config.mutex);
drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
if (connector->state == NULL)
goto unlock;
crtc = connector->state->crtc;
if (crtc == NULL)
goto unlock;
drm_modeset_lock(&crtc->mutex, NULL); drm_modeset_lock(&crtc->mutex, NULL);
if (crtc->state == NULL) if (crtc->state == NULL)
goto unlock; goto unlock;
...@@ -924,18 +914,15 @@ static int output_bpc_show(struct seq_file *m, void *data) ...@@ -924,18 +914,15 @@ static int output_bpc_show(struct seq_file *m, void *data)
} }
seq_printf(m, "Current: %u\n", bpc); seq_printf(m, "Current: %u\n", bpc);
seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
res = 0; res = 0;
unlock: unlock:
if (crtc) drm_modeset_unlock(&crtc->mutex);
drm_modeset_unlock(&crtc->mutex);
drm_modeset_unlock(&dev->mode_config.connection_mutex);
mutex_unlock(&dev->mode_config.mutex); mutex_unlock(&dev->mode_config.mutex);
return res; return res;
} }
DEFINE_SHOW_ATTRIBUTE(amdgpu_current_bpc);
/* /*
* Example usage: * Example usage:
...@@ -2541,7 +2528,6 @@ static int target_backlight_show(struct seq_file *m, void *unused) ...@@ -2541,7 +2528,6 @@ static int target_backlight_show(struct seq_file *m, void *unused)
DEFINE_SHOW_ATTRIBUTE(dp_dsc_fec_support); DEFINE_SHOW_ATTRIBUTE(dp_dsc_fec_support);
DEFINE_SHOW_ATTRIBUTE(dmub_fw_state); DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer); DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
DEFINE_SHOW_ATTRIBUTE(output_bpc);
DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status); DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status);
#ifdef CONFIG_DRM_AMD_DC_HDCP #ifdef CONFIG_DRM_AMD_DC_HDCP
DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability); DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
...@@ -2788,7 +2774,6 @@ static const struct { ...@@ -2788,7 +2774,6 @@ static const struct {
const struct file_operations *fops; const struct file_operations *fops;
} connector_debugfs_entries[] = { } connector_debugfs_entries[] = {
{"force_yuv420_output", &force_yuv420_output_fops}, {"force_yuv420_output", &force_yuv420_output_fops},
{"output_bpc", &output_bpc_fops},
{"trigger_hotplug", &trigger_hotplug_debugfs_fops}, {"trigger_hotplug", &trigger_hotplug_debugfs_fops},
{"internal_display", &internal_display_fops} {"internal_display", &internal_display_fops}
}; };
...@@ -3172,9 +3157,10 @@ static int crc_win_update_get(void *data, u64 *val) ...@@ -3172,9 +3157,10 @@ static int crc_win_update_get(void *data, u64 *val)
DEFINE_DEBUGFS_ATTRIBUTE(crc_win_update_fops, crc_win_update_get, DEFINE_DEBUGFS_ATTRIBUTE(crc_win_update_fops, crc_win_update_get,
crc_win_update_set, "%llu\n"); crc_win_update_set, "%llu\n");
#endif
void crtc_debugfs_init(struct drm_crtc *crtc) void crtc_debugfs_init(struct drm_crtc *crtc)
{ {
#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry); struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry);
if (!dir) if (!dir)
...@@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc) ...@@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc)
&crc_win_y_end_fops); &crc_win_y_end_fops);
debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc, debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc,
&crc_win_update_fops); &crc_win_update_fops);
}
#endif #endif
debugfs_create_file("amdgpu_current_bpc", 0644, crtc->debugfs_entry,
crtc, &amdgpu_current_bpc_fops);
}
/* /*
* Writes DTN log state to the user supplied buffer. * Writes DTN log state to the user supplied buffer.
* Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log * Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log
......
...@@ -31,8 +31,6 @@ ...@@ -31,8 +31,6 @@
void connector_debugfs_init(struct amdgpu_dm_connector *connector); void connector_debugfs_init(struct amdgpu_dm_connector *connector);
void dtn_debugfs_init(struct amdgpu_device *adev); void dtn_debugfs_init(struct amdgpu_device *adev);
#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
void crtc_debugfs_init(struct drm_crtc *crtc); void crtc_debugfs_init(struct drm_crtc *crtc);
#endif
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment