1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright © 2014 Broadcom 4 */ 5 6 #include <drm/drm_drv.h> 7 8 #include <linux/seq_file.h> 9 #include <linux/circ_buf.h> 10 #include <linux/ctype.h> 11 #include <linux/debugfs.h> 12 #include <linux/platform_device.h> 13 14 #include "vc4_drv.h" 15 #include "vc4_regs.h" 16 17 /* 18 * Called at drm_dev_register() time on each of the minors registered 19 * by the DRM device, to attach the debugfs files. 20 */ 21 void 22 vc4_debugfs_init(struct drm_minor *minor) 23 { 24 struct vc4_dev *vc4 = to_vc4_dev(minor->dev); 25 struct drm_device *drm = &vc4->base; 26 27 drm_WARN_ON(drm, vc4_hvs_debugfs_init(minor)); 28 29 if (vc4->v3d) { 30 drm_WARN_ON(drm, vc4_bo_debugfs_init(minor)); 31 drm_WARN_ON(drm, vc4_v3d_debugfs_init(minor)); 32 } 33 } 34 35 static int vc4_debugfs_regset32(struct seq_file *m, void *unused) 36 { 37 struct drm_debugfs_entry *entry = m->private; 38 struct drm_device *drm = entry->dev; 39 struct debugfs_regset32 *regset = entry->file.data; 40 struct drm_printer p = drm_seq_file_printer(m); 41 int idx; 42 43 if (!drm_dev_enter(drm, &idx)) 44 return -ENODEV; 45 46 drm_print_regset32(&p, regset); 47 48 drm_dev_exit(idx); 49 50 return 0; 51 } 52 53 void vc4_debugfs_add_regset32(struct drm_device *drm, 54 const char *name, 55 struct debugfs_regset32 *regset) 56 { 57 drm_debugfs_add_file(drm, name, vc4_debugfs_regset32, regset); 58 } 59