drivers/gpu/drm/imagination/pvr_rogue_fwif.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/imagination/pvr_rogue_fwif.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/imagination/pvr_rogue_fwif.h- Extension
.h- Size
- 70972 bytes
- Lines
- 2193
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bits.hlinux/build_bug.hlinux/compiler.hlinux/kernel.hlinux/types.hpvr_rogue_defs.hpvr_rogue_fwif_common.hpvr_rogue_fwif_shared.hpvr_rogue_fwif_check.h
Detected Declarations
struct rogue_fwif_log_group_map_entrystruct rogue_fwif_file_info_bufstruct rogue_fwif_tracebuf_spacestruct rogue_fw_fault_infostruct rogue_fwif_os_runtime_flagsstruct rogue_fwif_slr_entrystruct rogue_fwif_tracebufstruct rogue_fwif_sysdatastruct rogue_fwif_osdatastruct rogue_bifinfostruct rogue_eccinfostruct rogue_mmuinfostruct rogue_pollinfostruct rogue_tlbinfostruct rogue_hwrinfostruct rogue_fwif_hwrinfobufstruct rogue_fw_register_liststruct rogue_fwif_dllist_nodestruct rogue_fwif_fwmemcontextstruct rogue_fwif_geom_ctx_state_per_geomstruct rogue_fwif_geom_ctx_statestruct rogue_fwif_frag_ctx_statestruct rogue_fwif_compute_ctx_statestruct rogue_fwif_fwcommoncontextstruct rogue_fwif_fwrendercontextstruct rogue_fwif_fwcomputecontextstruct rogue_fwif_fwtdmcontextstruct rogue_fwif_fwtransfercontextstruct rogue_fwif_ccb_ctlstruct rogue_fwif_mmucachedatastruct rogue_fwif_bpdatastruct rogue_fwif_kccb_cmd_kick_datastruct rogue_fwif_kccb_cmd_combined_geom_frag_kick_datastruct rogue_fwif_kccb_cmd_force_update_datastruct rogue_fwif_cleanup_requeststruct rogue_fwif_power_requeststruct rogue_fwif_slcflushinvaldatastruct rogue_fwif_hwperf_ctrlstruct rogue_fwif_hwperf_config_enable_blksstruct rogue_fwif_hwperf_config_da_blksstruct rogue_fwif_coreclkspeedchange_datastruct rogue_fwif_hwperf_ctrl_blksstruct rogue_fwif_hwperf_select_custom_cntrsstruct rogue_fwif_zsbuffer_backing_datastruct rogue_fwif_freelist_gs_datastruct rogue_fwif_freelists_reconstruction_datastruct rogue_fwif_write_offset_update_datastruct pdvfs_opp
Annotated Snippet
struct rogue_fwif_log_group_map_entry {
const char *log_group_name;
u32 log_group_type;
};
/*
****************************************************************************
* ROGUE FW signature checks
****************************************************************************
*/
#define ROGUE_FW_SIG_BUFFER_SIZE_MIN (8192)
#define ROGUE_FWIF_TIMEDIFF_ID ((0x1UL << 28) | ROGUE_CR_TIMER)
/*
****************************************************************************
* Trace Buffer
****************************************************************************
*/
/* Default size of ROGUE_FWIF_TRACEBUF_SPACE in DWords */
#define ROGUE_FW_TRACE_BUF_DEFAULT_SIZE_IN_DWORDS 12000U
#define ROGUE_FW_TRACE_BUFFER_ASSERT_SIZE 200U
#define ROGUE_FW_THREAD_NUM 1U
#define ROGUE_FW_THREAD_MAX 2U
#define ROGUE_FW_POLL_TYPE_SET 0x80000000U
struct rogue_fwif_file_info_buf {
char path[ROGUE_FW_TRACE_BUFFER_ASSERT_SIZE];
char info[ROGUE_FW_TRACE_BUFFER_ASSERT_SIZE];
u32 line_num;
u32 padding;
} __aligned(8);
struct rogue_fwif_tracebuf_space {
u32 trace_pointer;
u32 trace_buffer_fw_addr;
/* To be used by host when reading from trace buffer */
u32 *trace_buffer;
struct rogue_fwif_file_info_buf assert_buf;
} __aligned(8);
/* Total number of FW fault logs stored */
#define ROGUE_FWIF_FWFAULTINFO_MAX (8U)
struct rogue_fw_fault_info {
aligned_u64 cr_timer;
aligned_u64 os_timer;
u32 data __aligned(8);
u32 reserved;
struct rogue_fwif_file_info_buf fault_buf;
} __aligned(8);
enum rogue_fwif_pow_state {
ROGUE_FWIF_POW_OFF, /* idle and ready to full power down */
ROGUE_FWIF_POW_ON, /* running HW commands */
ROGUE_FWIF_POW_FORCED_IDLE, /* forced idle */
ROGUE_FWIF_POW_IDLE, /* idle waiting for host handshake */
};
/* Firmware HWR states */
/* The HW state is ok or locked up */
#define ROGUE_FWIF_HWR_HARDWARE_OK BIT(0)
/* Tells if a HWR reset is in progress */
#define ROGUE_FWIF_HWR_RESET_IN_PROGRESS BIT(1)
/* A DM unrelated lockup has been detected */
#define ROGUE_FWIF_HWR_GENERAL_LOCKUP BIT(3)
/* At least one DM is running without being close to a lockup */
#define ROGUE_FWIF_HWR_DM_RUNNING_OK BIT(4)
/* At least one DM is close to lockup */
#define ROGUE_FWIF_HWR_DM_STALLING BIT(5)
/* The FW has faulted and needs to restart */
#define ROGUE_FWIF_HWR_FW_FAULT BIT(6)
/* The FW has requested the host to restart it */
#define ROGUE_FWIF_HWR_RESTART_REQUESTED BIT(7)
#define ROGUE_FWIF_PHR_STATE_SHIFT (8U)
/* The FW has requested the host to restart it, per PHR configuration */
#define ROGUE_FWIF_PHR_RESTART_REQUESTED ((1) << ROGUE_FWIF_PHR_STATE_SHIFT)
/* A PHR triggered GPU reset has just finished */
#define ROGUE_FWIF_PHR_RESTART_FINISHED ((2) << ROGUE_FWIF_PHR_STATE_SHIFT)
#define ROGUE_FWIF_PHR_RESTART_MASK \
(ROGUE_FWIF_PHR_RESTART_REQUESTED | ROGUE_FWIF_PHR_RESTART_FINISHED)
#define ROGUE_FWIF_PHR_MODE_OFF (0UL)
Annotation
- Immediate include surface: `linux/bits.h`, `linux/build_bug.h`, `linux/compiler.h`, `linux/kernel.h`, `linux/types.h`, `pvr_rogue_defs.h`, `pvr_rogue_fwif_common.h`, `pvr_rogue_fwif_shared.h`.
- Detected declarations: `struct rogue_fwif_log_group_map_entry`, `struct rogue_fwif_file_info_buf`, `struct rogue_fwif_tracebuf_space`, `struct rogue_fw_fault_info`, `struct rogue_fwif_os_runtime_flags`, `struct rogue_fwif_slr_entry`, `struct rogue_fwif_tracebuf`, `struct rogue_fwif_sysdata`, `struct rogue_fwif_osdata`, `struct rogue_bifinfo`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.