include/uapi/drm/pvr_drm.h
Source file repositories/reference/linux-study-clean/include/uapi/drm/pvr_drm.h
File Facts
- System
- Linux kernel
- Corpus path
include/uapi/drm/pvr_drm.h- Extension
.h- Size
- 40166 bytes
- Lines
- 1296
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
drm.hlinux/const.hlinux/types.h
Detected Declarations
struct drm_pvr_obj_arraystruct drm_pvr_dev_query_gpu_infostruct drm_pvr_dev_query_runtime_infostruct drm_pvr_dev_query_quirksstruct drm_pvr_dev_query_enhancementsstruct drm_pvr_heapstruct drm_pvr_dev_query_heap_infostruct drm_pvr_static_data_areastruct drm_pvr_dev_query_static_data_areasstruct drm_pvr_ioctl_dev_query_argsstruct drm_pvr_ioctl_create_bo_argsstruct drm_pvr_ioctl_get_bo_mmap_offset_argsstruct drm_pvr_ioctl_create_vm_context_argsstruct drm_pvr_ioctl_destroy_vm_context_argsstruct drm_pvr_ioctl_vm_map_argsstruct drm_pvr_ioctl_vm_unmap_argsstruct drm_pvr_ioctl_create_context_argsstruct drm_pvr_ioctl_destroy_context_argsstruct drm_pvr_ioctl_create_free_list_argsstruct drm_pvr_ioctl_destroy_free_list_argsstruct drm_pvr_create_hwrt_geom_data_argsstruct drm_pvr_create_hwrt_rt_data_argsstruct drm_pvr_ioctl_create_hwrt_dataset_argsstruct drm_pvr_ioctl_destroy_hwrt_dataset_argsstruct drm_pvr_sync_opstruct drm_pvr_hwrt_data_refstruct drm_pvr_jobstruct drm_pvr_ioctl_submit_jobs_argsenum drm_pvr_heap_idenum drm_pvr_static_data_area_usageenum drm_pvr_dev_queryenum drm_pvr_ctx_priorityenum drm_pvr_ctx_typeenum drm_pvr_job_type
Annotated Snippet
struct drm_pvr_obj_array {
/** @stride: Stride of object struct. Used for versioning. */
__u32 stride;
/** @count: Number of objects in the array. */
__u32 count;
/** @array: User pointer to an array of objects. */
__u64 array;
};
/**
* DRM_PVR_OBJ_ARRAY() - Helper macro for filling &struct drm_pvr_obj_array.
* @cnt: Number of elements pointed to py @ptr.
* @ptr: Pointer to start of a C array.
*
* Return: Literal of type &struct drm_pvr_obj_array.
*/
#define DRM_PVR_OBJ_ARRAY(cnt, ptr) \
{ .stride = sizeof((ptr)[0]), .count = (cnt), .array = (__u64)(uintptr_t)(ptr) }
/**
* DOC: PowerVR IOCTL interface
*/
/**
* PVR_IOCTL() - Build a PowerVR IOCTL number
* @_ioctl: An incrementing id for this IOCTL. Added to %DRM_COMMAND_BASE.
* @_mode: Must be one of %DRM_IOR, %DRM_IOW or %DRM_IOWR.
* @_data: The type of the args struct passed by this IOCTL.
*
* The struct referred to by @_data must have a ``drm_pvr_ioctl_`` prefix and an
* ``_args suffix``. They are therefore omitted from @_data.
*
* This should only be used to build the constants described below; it should
* never be used to call an IOCTL directly.
*
* Return: An IOCTL number to be passed to ioctl() from userspace.
*/
#define PVR_IOCTL(_ioctl, _mode, _data) \
_mode(DRM_COMMAND_BASE + (_ioctl), struct drm_pvr_ioctl_##_data##_args)
#define DRM_IOCTL_PVR_DEV_QUERY PVR_IOCTL(0x00, DRM_IOWR, dev_query)
#define DRM_IOCTL_PVR_CREATE_BO PVR_IOCTL(0x01, DRM_IOWR, create_bo)
#define DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET PVR_IOCTL(0x02, DRM_IOWR, get_bo_mmap_offset)
#define DRM_IOCTL_PVR_CREATE_VM_CONTEXT PVR_IOCTL(0x03, DRM_IOWR, create_vm_context)
#define DRM_IOCTL_PVR_DESTROY_VM_CONTEXT PVR_IOCTL(0x04, DRM_IOW, destroy_vm_context)
#define DRM_IOCTL_PVR_VM_MAP PVR_IOCTL(0x05, DRM_IOW, vm_map)
#define DRM_IOCTL_PVR_VM_UNMAP PVR_IOCTL(0x06, DRM_IOW, vm_unmap)
#define DRM_IOCTL_PVR_CREATE_CONTEXT PVR_IOCTL(0x07, DRM_IOWR, create_context)
#define DRM_IOCTL_PVR_DESTROY_CONTEXT PVR_IOCTL(0x08, DRM_IOW, destroy_context)
#define DRM_IOCTL_PVR_CREATE_FREE_LIST PVR_IOCTL(0x09, DRM_IOWR, create_free_list)
#define DRM_IOCTL_PVR_DESTROY_FREE_LIST PVR_IOCTL(0x0a, DRM_IOW, destroy_free_list)
#define DRM_IOCTL_PVR_CREATE_HWRT_DATASET PVR_IOCTL(0x0b, DRM_IOWR, create_hwrt_dataset)
#define DRM_IOCTL_PVR_DESTROY_HWRT_DATASET PVR_IOCTL(0x0c, DRM_IOW, destroy_hwrt_dataset)
#define DRM_IOCTL_PVR_SUBMIT_JOBS PVR_IOCTL(0x0d, DRM_IOW, submit_jobs)
/**
* DOC: PowerVR IOCTL DEV_QUERY interface
*/
/**
* struct drm_pvr_dev_query_gpu_info - Container used to fetch information about
* the graphics processor.
*
* When fetching this type &struct drm_pvr_ioctl_dev_query_args.type must be set
* to %DRM_PVR_DEV_QUERY_GPU_INFO_GET.
*/
struct drm_pvr_dev_query_gpu_info {
/**
* @gpu_id: GPU identifier.
*
* For all currently supported GPUs this is the BVNC encoded as a 64-bit
* value as follows:
*
* +--------+--------+--------+-------+
* | 63..48 | 47..32 | 31..16 | 15..0 |
* +========+========+========+=======+
* | B | V | N | C |
* +--------+--------+--------+-------+
*/
__u64 gpu_id;
/**
* @num_phantoms: Number of Phantoms present.
*/
__u32 num_phantoms;
/** @_padding_c: Reserved. This field must be zeroed. */
__u32 _padding_c;
Annotation
- Immediate include surface: `drm.h`, `linux/const.h`, `linux/types.h`.
- Detected declarations: `struct drm_pvr_obj_array`, `struct drm_pvr_dev_query_gpu_info`, `struct drm_pvr_dev_query_runtime_info`, `struct drm_pvr_dev_query_quirks`, `struct drm_pvr_dev_query_enhancements`, `struct drm_pvr_heap`, `struct drm_pvr_dev_query_heap_info`, `struct drm_pvr_static_data_area`, `struct drm_pvr_dev_query_static_data_areas`, `struct drm_pvr_ioctl_dev_query_args`.
- Atlas domain: Repository Root And Misc / include.
- 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.