| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /* SPDX-License-Identifier: GPL-2.0-only OR MIT */
- /* Copyright (c) 2023 Imagination Technologies Ltd. */
- #ifndef PVR_FW_TRACE_H
- #define PVR_FW_TRACE_H
- #include <drm/drm_file.h>
- #include <linux/types.h>
- #include "pvr_rogue_fwif.h"
- /* Forward declaration from pvr_device.h. */
- struct pvr_device;
- /* Forward declaration from pvr_gem.h. */
- struct pvr_fw_object;
- /* Forward declarations from pvr_rogue_fwif.h */
- struct rogue_fwif_tracebuf;
- struct rogue_fwif_tracebuf_space;
- /**
- * struct pvr_fw_trace_buffer - Structure representing a trace buffer
- */
- struct pvr_fw_trace_buffer {
- /** @buf_obj: FW buffer object representing trace buffer. */
- struct pvr_fw_object *buf_obj;
- /** @buf: Pointer to CPU mapping of trace buffer. */
- u32 *buf;
- /**
- * @tracebuf_space: Pointer to FW tracebuf_space structure for this
- * trace buffer.
- */
- struct rogue_fwif_tracebuf_space *tracebuf_space;
- };
- /**
- * struct pvr_fw_trace - Device firmware trace data
- */
- struct pvr_fw_trace {
- /**
- * @tracebuf_ctrl_obj: Object representing FW trace buffer control
- * structure.
- */
- struct pvr_fw_object *tracebuf_ctrl_obj;
- /**
- * @tracebuf_ctrl: Pointer to CPU mapping of FW trace buffer control
- * structure.
- */
- struct rogue_fwif_tracebuf *tracebuf_ctrl;
- /**
- * @buffers: Array representing the actual trace buffers owned by this
- * device.
- */
- struct pvr_fw_trace_buffer buffers[ROGUE_FW_THREAD_MAX];
- /** @group_mask: Mask of enabled trace groups. */
- u32 group_mask;
- };
- int pvr_fw_trace_init(struct pvr_device *pvr_dev);
- void pvr_fw_trace_fini(struct pvr_device *pvr_dev);
- #if defined(CONFIG_DEBUG_FS)
- /* Forward declaration from <linux/dcache.h>. */
- struct dentry;
- void pvr_fw_trace_mask_update(struct pvr_device *pvr_dev, u32 old_mask,
- u32 new_mask);
- void pvr_fw_trace_debugfs_init(struct pvr_device *pvr_dev, struct dentry *dir);
- #endif /* defined(CONFIG_DEBUG_FS) */
- #endif /* PVR_FW_TRACE_H */
|