Lines Matching +full:stream +full:- +full:id +full:- +full:range

1 /* SPDX-License-Identifier: MIT */
19 * - Structures must be aligned on 64-bit/8-byte. If the object is not
21 * - Fields must be explicitly aligned to their natural type alignment with
23 * - All padding fields will be checked by the driver to make sure they are
25 * - Flags can be added, but not removed/replaced.
26 * - New fields can be added to the main structures (the structures
31 * - New fields can be added to indirect objects (objects pointed by the
35 * - If the kernel driver is too old to know some fields, those will be
37 * - If userspace is too old to know some fields, those will be zeroed
39 * - Each new flag/field addition must come with a driver version update so
42 * - Structures should not contain unions, as this would defeat the
44 * - IOCTLs can't be removed or replaced. New IOCTL IDs should be placed
56 * different offset on 32-bit and 64-bit systems.
63 * ioctl, but Arm provides a well-isolated register page containing only this
64 * read-only register, so let's expose this page through a static mmap offset
66 * user <-> kernel round-trip.
78 * enum drm_panthor_ioctl_id - IOCTL IDs
80 * Place new ioctls at the end, don't re-order, don't replace or remove entries.
137 * struct drm_panthor_obj_array - Object array.
159 * DRM_PANTHOR_OBJ_ARRAY() - Initialize a drm_panthor_obj_array field.
170 * enum drm_panthor_sync_op_flags - Synchronization operation flags.
193 * struct drm_panthor_sync_op - Synchronization operation.
211 * enum drm_panthor_dev_query_type - Query type
213 * Place new types at the end, don't re-order, don't remove or replace.
219 /** @DRM_PANTHOR_DEV_QUERY_CSIF_INFO: Query command-stream interface information. */
232 * struct drm_panthor_gpu_info - GPU information
237 /** @gpu_id : GPU ID. */
250 /** @csf_id: Command stream frontend ID. */
259 /** @l2_features: L2-cache features. */
293 /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
313 * struct drm_panthor_csif_info - Command stream interface information
315 * Structure grouping all queryable information relating to the command stream interface.
318 /** @csg_slot_count: Number of command stream group slots exposed by the firmware. */
321 /** @cs_slot_count: Number of command stream slots per group. */
324 /** @cs_reg_count: Number of command stream registers. */
331 * @unpreserved_cs_reg_count: Number of command stream registers reserved by
332 * the kernel driver to call a userspace command stream.
334 * All registers can be used by a userspace command stream, but the
335 * [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are
347 * struct drm_panthor_timestamp_info - Timestamp information
366 * struct drm_panthor_group_priorities_info - Group priorities information
383 * struct drm_panthor_dev_query - Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY
411 * struct drm_panthor_vm_create - Arguments passed to DRM_PANTHOR_IOCTL_VM_CREATE
417 /** @id: Returned VM ID. */
418 __u32 id; member
423 * The kernel will pick the remaining space to map kernel-only objects to the
428 * range, and chose a user_va_range that leaves some space to the kernel.
431 * TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user
434 * the kernel VA range). The value chosen by the driver will be returned in
438 * the user VA range.
444 * struct drm_panthor_vm_destroy - Arguments passed to DRM_PANTHOR_IOCTL_VM_DESTROY
447 /** @id: ID of the VM to destroy. */
448 __u32 id; member
455 * enum drm_panthor_vm_bind_op_flags - VM bind operation flags
459 * @DRM_PANTHOR_VM_BIND_OP_MAP_READONLY: Map the memory read-only.
466 * @DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC: Map the memory not-executable.
502 * struct drm_panthor_vm_bind_op - VM bind operation
510 * MBZ for unmap or sync-only operations.
516 * MBZ for unmap or sync-only operations.
522 * MBZ for sync-only operations.
528 * MBZ for sync-only operations.
539 * This array shall not be empty for sync-only operations.
546 * enum drm_panthor_vm_bind_flags - VM bind flags
557 * struct drm_panthor_vm_bind - Arguments passed to DRM_IOCTL_PANTHOR_VM_BIND
571 * enum drm_panthor_vm_state - VM states.
598 * struct drm_panthor_vm_get_state - Get VM state.
613 * enum drm_panthor_bo_flags - Buffer object flags, passed at creation time.
616 /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
621 * struct drm_panthor_bo_create - Arguments passed to DRM_IOCTL_PANTHOR_BO_CREATE.
627 * The (page-aligned) allocated size for the object will be returned.
639 * If not zero, the field must refer to a valid VM ID, and implies that:
640 * - the buffer object will only ever be bound to that VM
641 * - cannot be exported as a PRIME fd
657 * struct drm_panthor_bo_mmap_offset - Arguments passed to DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET.
671 * struct drm_panthor_queue_create - Queue creation arguments.
688 * enum drm_panthor_group_priority - Scheduling group priority
713 * struct drm_panthor_group_create - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_CREATE
777 * @vm_id: VM ID to bind this group to.
791 * struct drm_panthor_group_destroy - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_DESTROY
802 * struct drm_panthor_queue_submit - Job submission arguments.
804 * This is describing the userspace command stream to call from the kernel
805 * command stream ring-buffer. Queue submission is always part of a group
813 * @stream_size: Size of the command stream to execute.
815 * Must be 64-bit/8-byte aligned (the size of a CS instruction)
819 * When the stream size is zero, the queue submit serves as a
825 * @stream_addr: GPU address of the command stream to execute.
827 * Must be aligned on 64-byte.
834 * @latest_flush: FLUSH_ID read at the time the stream was built.
839 * stream buffers. If you want the cache flush to happen
854 * struct drm_panthor_group_submit - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_SUBMIT
868 * enum drm_panthor_group_state_flags - Group state flags
896 * struct drm_panthor_group_get_state - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_GET_STATE
919 * struct drm_panthor_tiler_heap_create - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE
922 /** @vm_id: VM ID the tiler heap should be mapped to */
931 * Must be page-aligned and lie in the [128k:8M] range.
943 * @target_in_flight: Maximum number of in-flight render passes.
945 * If the heap has more than tiler jobs in-flight, the FW will wait for render
959 * The tiler heap is formed of heap chunks forming a single-link list. This
966 * struct drm_panthor_tiler_heap_destroy - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY
981 * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
983 * @__id: One of the DRM_PANTHOR_xxx id.