Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/bridge: move bridges_show logic from drm_debugfs.c

In preparation to expose more info about bridges in debugfs, which will
require more insight into drm_bridge data structures, move the bridges_show
code to drm_bridge.c.

Suggested-by: Jani Nikula <jani.nikula@linux.intel.com>
Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250226-drm-debugfs-show-all-bridges-v8-1-bb511cc49d83@bootlin.com
Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>

authored by

Luca Ceresoli and committed by
Louis Chauvet
9497c5a0 6374a100

+45 -37
+42
drivers/gpu/drm/drm_bridge.c
··· 21 21 * DEALINGS IN THE SOFTWARE. 22 22 */ 23 23 24 + #include <linux/debugfs.h> 24 25 #include <linux/err.h> 25 26 #include <linux/media-bus-format.h> 26 27 #include <linux/module.h> ··· 1300 1299 } 1301 1300 EXPORT_SYMBOL(of_drm_find_bridge); 1302 1301 #endif 1302 + 1303 + static int encoder_bridges_show(struct seq_file *m, void *data) 1304 + { 1305 + struct drm_encoder *encoder = m->private; 1306 + struct drm_printer p = drm_seq_file_printer(m); 1307 + struct drm_bridge *bridge; 1308 + unsigned int idx = 0; 1309 + 1310 + drm_for_each_bridge_in_chain(encoder, bridge) { 1311 + drm_printf(&p, "bridge[%u]: %ps\n", idx++, bridge->funcs); 1312 + drm_printf(&p, "\ttype: [%d] %s\n", 1313 + bridge->type, 1314 + drm_get_connector_type_name(bridge->type)); 1315 + 1316 + if (bridge->of_node) 1317 + drm_printf(&p, "\tOF: %pOFfc\n", bridge->of_node); 1318 + 1319 + drm_printf(&p, "\tops: [0x%x]", bridge->ops); 1320 + if (bridge->ops & DRM_BRIDGE_OP_DETECT) 1321 + drm_puts(&p, " detect"); 1322 + if (bridge->ops & DRM_BRIDGE_OP_EDID) 1323 + drm_puts(&p, " edid"); 1324 + if (bridge->ops & DRM_BRIDGE_OP_HPD) 1325 + drm_puts(&p, " hpd"); 1326 + if (bridge->ops & DRM_BRIDGE_OP_MODES) 1327 + drm_puts(&p, " modes"); 1328 + if (bridge->ops & DRM_BRIDGE_OP_HDMI) 1329 + drm_puts(&p, " hdmi"); 1330 + drm_puts(&p, "\n"); 1331 + } 1332 + 1333 + return 0; 1334 + } 1335 + DEFINE_SHOW_ATTRIBUTE(encoder_bridges); 1336 + 1337 + void drm_bridge_debugfs_encoder_params(struct dentry *root, 1338 + struct drm_encoder *encoder) 1339 + { 1340 + /* bridges list */ 1341 + debugfs_create_file("bridges", 0444, root, encoder, &encoder_bridges_fops); 1342 + } 1303 1343 1304 1344 MODULE_AUTHOR("Ajay Kumar <ajaykumar.rs@samsung.com>"); 1305 1345 MODULE_DESCRIPTION("DRM bridge infrastructure");
+1 -37
drivers/gpu/drm/drm_debugfs.c
··· 740 740 crtc->debugfs_entry = NULL; 741 741 } 742 742 743 - static int bridges_show(struct seq_file *m, void *data) 744 - { 745 - struct drm_encoder *encoder = m->private; 746 - struct drm_printer p = drm_seq_file_printer(m); 747 - struct drm_bridge *bridge; 748 - unsigned int idx = 0; 749 - 750 - drm_for_each_bridge_in_chain(encoder, bridge) { 751 - drm_printf(&p, "bridge[%u]: %ps\n", idx++, bridge->funcs); 752 - drm_printf(&p, "\ttype: [%d] %s\n", 753 - bridge->type, 754 - drm_get_connector_type_name(bridge->type)); 755 - 756 - if (bridge->of_node) 757 - drm_printf(&p, "\tOF: %pOFfc\n", bridge->of_node); 758 - 759 - drm_printf(&p, "\tops: [0x%x]", bridge->ops); 760 - if (bridge->ops & DRM_BRIDGE_OP_DETECT) 761 - drm_puts(&p, " detect"); 762 - if (bridge->ops & DRM_BRIDGE_OP_EDID) 763 - drm_puts(&p, " edid"); 764 - if (bridge->ops & DRM_BRIDGE_OP_HPD) 765 - drm_puts(&p, " hpd"); 766 - if (bridge->ops & DRM_BRIDGE_OP_MODES) 767 - drm_puts(&p, " modes"); 768 - if (bridge->ops & DRM_BRIDGE_OP_HDMI) 769 - drm_puts(&p, " hdmi"); 770 - drm_puts(&p, "\n"); 771 - } 772 - 773 - return 0; 774 - } 775 - DEFINE_SHOW_ATTRIBUTE(bridges); 776 - 777 743 void drm_debugfs_encoder_add(struct drm_encoder *encoder) 778 744 { 779 745 struct drm_minor *minor = encoder->dev->primary; ··· 755 789 756 790 encoder->debugfs_entry = root; 757 791 758 - /* bridges list */ 759 - debugfs_create_file("bridges", 0444, root, encoder, 760 - &bridges_fops); 792 + drm_bridge_debugfs_encoder_params(root, encoder); 761 793 762 794 if (encoder->funcs && encoder->funcs->debugfs_init) 763 795 encoder->funcs->debugfs_init(encoder, root);
+2
include/drm/drm_bridge.h
··· 1108 1108 } 1109 1109 #endif 1110 1110 1111 + void drm_bridge_debugfs_encoder_params(struct dentry *root, struct drm_encoder *encoder); 1112 + 1111 1113 #endif