What is already there in debugfs is 'bpc' and 'colorspace', but not the pixel encoding/format. I have searched high and low for that to be able to verify that my monitor and computer are using my preferred combination of all those three values. I do think it should be available as a standard DRM CRTC property, but for the time being, I figured that a simple debugfs property would be sufficient for time being. Rino On Tue, May 21, 2024 at 9:04 PM Christian König <christian.koenig@xxxxxxx> wrote: > > Am 21.05.24 um 07:11 schrieb Rino Andre Johnsen: > > [Why] > > For debugging and testing purposes. > > > > [How] > > Create amdgpu_current_pixelencoding debugfs entry. > > Usage: cat /sys/kernel/debug/dri/1/crtc-0/amdgpu_current_pixelencoding > > Why isn't that available as standard DRM CRTC property in either sysfs > or debugfs? > > I think the format specifiers should already be available somewhere there. > > Regards, > Christian. > > > > > Signed-off-by: Rino Andre Johnsen <rinoandrejohnsen@xxxxxxxxx> > > --- > > > > Changes in v2: > > 1. Do not initialize dm_crtc_state to NULL. > > --- > > .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 47 +++++++++++++++++++ > > 1 file changed, 47 insertions(+) > > > > 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 27d5c6077630..4254d4a4b56b 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 > > @@ -1160,6 +1160,51 @@ static int amdgpu_current_colorspace_show(struct seq_file *m, void *data) > > } > > DEFINE_SHOW_ATTRIBUTE(amdgpu_current_colorspace); > > > > +/* > > + * Returns the current pixelencoding for the crtc. > > + * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/amdgpu_current_pixelencoding > > + */ > > +static int amdgpu_current_pixelencoding_show(struct seq_file *m, void *data) > > +{ > > + struct drm_crtc *crtc = m->private; > > + struct drm_device *dev = crtc->dev; > > + struct dm_crtc_state *dm_crtc_state; > > + int res = -ENODEV; > > + > > + mutex_lock(&dev->mode_config.mutex); > > + drm_modeset_lock(&crtc->mutex, NULL); > > + if (crtc->state == NULL) > > + goto unlock; > > + > > + dm_crtc_state = to_dm_crtc_state(crtc->state); > > + if (dm_crtc_state->stream == NULL) > > + goto unlock; > > + > > + switch (dm_crtc_state->stream->timing.pixel_encoding) { > > + case PIXEL_ENCODING_RGB: > > + seq_puts(m, "RGB"); > > + break; > > + case PIXEL_ENCODING_YCBCR422: > > + seq_puts(m, "YCBCR422"); > > + break; > > + case PIXEL_ENCODING_YCBCR444: > > + seq_puts(m, "YCBCR444"); > > + break; > > + case PIXEL_ENCODING_YCBCR420: > > + seq_puts(m, "YCBCR420"); > > + break; > > + default: > > + goto unlock; > > + } > > + res = 0; > > + > > +unlock: > > + drm_modeset_unlock(&crtc->mutex); > > + mutex_unlock(&dev->mode_config.mutex); > > + > > + return res; > > +} > > +DEFINE_SHOW_ATTRIBUTE(amdgpu_current_pixelencoding); > > > > /* > > * Example usage: > > @@ -3688,6 +3733,8 @@ void crtc_debugfs_init(struct drm_crtc *crtc) > > crtc, &amdgpu_current_bpc_fops); > > debugfs_create_file("amdgpu_current_colorspace", 0644, crtc->debugfs_entry, > > crtc, &amdgpu_current_colorspace_fops); > > + debugfs_create_file("amdgpu_current_pixelencoding", 0644, crtc->debugfs_entry, > > + crtc, &amdgpu_current_pixelencoding_fops); > > } > > > > /* >