Hi, On Sun, Dec 03, 2023 at 02:53:13PM +0300, Dmitry Baryshkov wrote: > Each of connectors and CRTCs used by the DRM device provides debugfs > directory, which is used by several standard debugfs files and can > further be extended by the driver. Add such generic debugfs directories > for encoder. > > Reviewed-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > --- > drivers/gpu/drm/drm_debugfs.c | 25 +++++++++++++++++++++++++ > drivers/gpu/drm/drm_encoder.c | 4 ++++ > drivers/gpu/drm/drm_internal.h | 9 +++++++++ > include/drm/drm_encoder.h | 16 +++++++++++++++- > 4 files changed, 53 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c > index f291fb4b359f..00406b4f3235 100644 > --- a/drivers/gpu/drm/drm_debugfs.c > +++ b/drivers/gpu/drm/drm_debugfs.c > @@ -589,4 +589,29 @@ void drm_debugfs_crtc_remove(struct drm_crtc *crtc) > crtc->debugfs_entry = NULL; > } > > +void drm_debugfs_encoder_add(struct drm_encoder *encoder) > +{ > + struct drm_minor *minor = encoder->dev->primary; > + struct dentry *root; > + char *name; > + > + name = kasprintf(GFP_KERNEL, "encoder-%d", encoder->index); > + if (!name) > + return; > + > + root = debugfs_create_dir(name, minor->debugfs_root); > + kfree(name); > + > + encoder->debugfs_entry = root; > + > + if (encoder->funcs->debugfs_init) > + encoder->funcs->debugfs_init(encoder, root); > +} > + > +void drm_debugfs_encoder_remove(struct drm_encoder *encoder) > +{ > + debugfs_remove_recursive(encoder->debugfs_entry); > + encoder->debugfs_entry = NULL; > +} > + > #endif /* CONFIG_DEBUG_FS */ > diff --git a/drivers/gpu/drm/drm_encoder.c b/drivers/gpu/drm/drm_encoder.c > index 1143bc7f3252..8f2bc6a28482 100644 > --- a/drivers/gpu/drm/drm_encoder.c > +++ b/drivers/gpu/drm/drm_encoder.c > @@ -30,6 +30,7 @@ > #include <drm/drm_print.h> > > #include "drm_crtc_internal.h" > +#include "drm_internal.h" > > /** > * DOC: overview > @@ -74,6 +75,8 @@ int drm_encoder_register_all(struct drm_device *dev) > int ret = 0; > > drm_for_each_encoder(encoder, dev) { > + drm_debugfs_encoder_add(encoder); > + > if (encoder->funcs && encoder->funcs->late_register) > ret = encoder->funcs->late_register(encoder); > if (ret) > @@ -90,6 +93,7 @@ void drm_encoder_unregister_all(struct drm_device *dev) > drm_for_each_encoder(encoder, dev) { > if (encoder->funcs && encoder->funcs->early_unregister) > encoder->funcs->early_unregister(encoder); > + drm_debugfs_encoder_remove(encoder); > } > } > > diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h > index b12c463bc460..7df17e4b0513 100644 > --- a/drivers/gpu/drm/drm_internal.h > +++ b/drivers/gpu/drm/drm_internal.h > @@ -194,6 +194,8 @@ void drm_debugfs_connector_remove(struct drm_connector *connector); > void drm_debugfs_crtc_add(struct drm_crtc *crtc); > void drm_debugfs_crtc_remove(struct drm_crtc *crtc); > void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc); > +void drm_debugfs_encoder_add(struct drm_encoder *encoder); > +void drm_debugfs_encoder_remove(struct drm_encoder *encoder); > #else > static inline void drm_debugfs_dev_fini(struct drm_device *dev) > { > @@ -231,6 +233,13 @@ static inline void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) > { > } > > +static inline void drm_debugfs_encoder_add(struct drm_encoder *encoder) > +{ > +} <- You need to insert a new line here. Once fixed, Acked-by: Maxime Ripard <mripard@xxxxxxxxxx> Maxime
Attachment:
signature.asc
Description: PGP signature