On 2022-04-08 11:23, Modem, Bhanuprakash wrote: > On Fri-08-04-2022 08:33 pm, Harry Wentland wrote: >> >> >> On 2022-04-08 02:53, Bhanuprakash Modem wrote: >>> 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. >>> >> >> Does the amd_max_bpc test pass after this change? > > We need IGT fix along with this change. And I have made the required changes in IGT: https://patchwork.freedesktop.org/series/102387/>> Thanks, I spotted that patch after I sent this email. :) Harry > - Bhanu > >> >> Harry >> >>> Cc: Harry Wentland <harry.wentland@xxxxxxx> >>> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@xxxxxxx> >>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@xxxxxxxxx> >>> --- >>> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 -- >>> .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------ >>> .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h | 2 - >>> 3 files changed, 13 insertions(+), 31 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> index 73423b805b54..f89651c71ec7 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> @@ -6615,14 +6615,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc) >>> return &state->base; >>> } >>> -#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY >>> static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc) >>> { >>> crtc_debugfs_init(crtc); >>> return 0; >>> } >>> -#endif >>> static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable) >>> { >>> @@ -6720,9 +6718,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = { >>> .enable_vblank = dm_enable_vblank, >>> .disable_vblank = dm_disable_vblank, >>> .get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp, >>> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY) >>> .late_register = amdgpu_dm_crtc_late_register, >>> -#endif >>> }; >>> static enum drm_connector_status >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> index da17ece1a2c5..3ee26083920b 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> @@ -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. >>> - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc >>> + * Returns the current bpc for the crtc. >>> + * 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_device *dev = connector->dev; >>> - struct drm_crtc *crtc = NULL; >>> + struct drm_crtc *crtc = m->private; >>> + struct drm_device *dev = crtc->dev; >>> struct dm_crtc_state *dm_crtc_state = NULL; >>> int res = -ENODEV; >>> unsigned int bpc; >>> 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); >>> if (crtc->state == NULL) >>> 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, "Maximum: %u\n", connector->display_info.bpc); >>> res = 0; >>> unlock: >>> - if (crtc) >>> - drm_modeset_unlock(&crtc->mutex); >>> - >>> - drm_modeset_unlock(&dev->mode_config.connection_mutex); >>> + drm_modeset_unlock(&crtc->mutex); >>> mutex_unlock(&dev->mode_config.mutex); >>> return res; >>> } >>> +DEFINE_SHOW_ATTRIBUTE(amdgpu_current_bpc); >>> /* >>> * 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(dmub_fw_state); >>> DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer); >>> -DEFINE_SHOW_ATTRIBUTE(output_bpc); >>> DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status); >>> #ifdef CONFIG_DRM_AMD_DC_HDCP >>> DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability); >>> @@ -2788,7 +2774,6 @@ static const struct { >>> const struct file_operations *fops; >>> } connector_debugfs_entries[] = { >>> {"force_yuv420_output", &force_yuv420_output_fops}, >>> - {"output_bpc", &output_bpc_fops}, >>> {"trigger_hotplug", &trigger_hotplug_debugfs_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, >>> crc_win_update_set, "%llu\n"); >>> - >>> +#endif >>> void crtc_debugfs_init(struct drm_crtc *crtc) >>> { >>> +#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY >>> struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry); >>> if (!dir) >>> @@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc) >>> &crc_win_y_end_fops); >>> debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc, >>> &crc_win_update_fops); >>> - >>> -} >>> #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. >>> * Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h >>> index 3366cb644053..071200473c27 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h >>> @@ -31,8 +31,6 @@ >>> void connector_debugfs_init(struct amdgpu_dm_connector *connector); >>> void dtn_debugfs_init(struct amdgpu_device *adev); >>> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY) >>> void crtc_debugfs_init(struct drm_crtc *crtc); >>> -#endif >>> #endif >> >