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: Bhanuprakash Modem <bhanuprakash.modem@intel.com> Reported-by: kernel test robot <lkp@intel.com> Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220519095149.3560034-4-bhanuprakash.modem@intel.com
This commit is contained in:
parent
fa373eb219
commit
4cd79f614b
3 changed files with 13 additions and 31 deletions
|
@ -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 = {
|
||||||
.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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
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 {
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
&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 @@
|
||||||
|
|
||||||
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
|
||||||
|
|
Loading…
Add table
Reference in a new issue