drivers/gpu/drm/imagination/pvr_device.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/imagination/pvr_device.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/imagination/pvr_device.h- Extension
.h- Size
- 23646 bytes
- Lines
- 791
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
pvr_ccb.hpvr_device_info.hpvr_fw.hpvr_rogue_fwif_stream.hpvr_stream.hdrm/drm_device.hdrm/drm_file.hdrm/drm_mm.hlinux/bits.hlinux/compiler_attributes.hlinux/compiler_types.hlinux/device.hlinux/io.hlinux/iopoll.hlinux/kernel.hlinux/math.hlinux/mutex.hlinux/spinlock_types.hlinux/timer.hlinux/types.hlinux/wait.hlinux/workqueue.hlinux/xarray.h
Detected Declarations
struct clkstruct firmwarestruct pwrseq_descstruct pvr_gpu_idstruct pvr_fw_versionstruct pvr_device_datastruct pvr_devicestruct pvr_device_powerstruct pvr_filefunction PVR_HAS_QUIRKfunction packed_bvnc_to_pvr_gpu_idfunction PVR_CR_FIELD_GETfunction pvr_cr_read64function pvr_cr_write32function pvr_cr_write64function pvr_cr_poll_reg32function pvr_cr_poll_reg64function pvr_round_up_to_cacheline_sizefunction PVR_IOCTL_UNION_PADDING_CHECKfunction pvr_fw_irq_pendingfunction pvr_fw_irq_clear
Annotated Snippet
struct pvr_gpu_id {
u16 b, v, n, c;
};
/**
* struct pvr_fw_version - Firmware version information
* @major: Major version number.
* @minor: Minor version number.
*/
struct pvr_fw_version {
u16 major, minor;
};
/**
* struct pvr_device_data - Platform specific data associated with a compatible string.
* @pwr_ops: Pointer to a structure with platform-specific power functions.
*/
struct pvr_device_data {
const struct pvr_power_sequence_ops *pwr_ops;
};
/**
* struct pvr_device - powervr-specific wrapper for &struct drm_device
*/
struct pvr_device {
/**
* @base: The underlying &struct drm_device.
*
* Do not access this member directly, instead call
* from_pvr_device().
*/
struct drm_device base;
/** @gpu_id: GPU ID detected at runtime. */
struct pvr_gpu_id gpu_id;
/**
* @features: Hardware feature information.
*
* Do not access this member directly, instead use PVR_HAS_FEATURE()
* or PVR_FEATURE_VALUE() macros.
*/
struct pvr_device_features features;
/**
* @quirks: Hardware quirk information.
*
* Do not access this member directly, instead use PVR_HAS_QUIRK().
*/
struct pvr_device_quirks quirks;
/**
* @enhancements: Hardware enhancement information.
*
* Do not access this member directly, instead use
* PVR_HAS_ENHANCEMENT().
*/
struct pvr_device_enhancements enhancements;
/** @fw_version: Firmware version detected at runtime. */
struct pvr_fw_version fw_version;
/** @device_data: Pointer to platform-specific data. */
const struct pvr_device_data *device_data;
/** @regs_resource: Resource representing device control registers. */
struct resource *regs_resource;
/**
* @regs: Device control registers.
*
* These are mapped into memory when the device is initialized; that
* location is where this pointer points.
*/
void __iomem *regs;
/**
* @core_clk: General core clock.
*
* This is the primary clock used by the entire GPU core.
*/
struct clk *core_clk;
/**
* @sys_clk: Optional system bus clock.
*
* This may be used on some platforms to provide an independent clock to the SoC Interface
* (SOCIF). If present, this needs to be enabled/disabled together with @core_clk.
*/
struct clk *sys_clk;
Annotation
- Immediate include surface: `pvr_ccb.h`, `pvr_device_info.h`, `pvr_fw.h`, `pvr_rogue_fwif_stream.h`, `pvr_stream.h`, `drm/drm_device.h`, `drm/drm_file.h`, `drm/drm_mm.h`.
- Detected declarations: `struct clk`, `struct firmware`, `struct pwrseq_desc`, `struct pvr_gpu_id`, `struct pvr_fw_version`, `struct pvr_device_data`, `struct pvr_device`, `struct pvr_device_power`, `struct pvr_file`, `function PVR_HAS_QUIRK`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.