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? 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