drm-misc-next for 5.11:
UAPI Changes:
Cross-subsystem Changes:
* char/agp: Disable frontend without CONFIG_DRM_LEGACY
* mm: Fix fput in mmap error path; Introduce vma_set_file() to change
vma->vm_file
Core Changes:
* dma-buf: Use sgtables in system heap; Move heap helpers to CMA-heap code;
Skip sync for unmapped buffers; Alloc higher order pages is available;
Respect num_fences when initializing shared fence list
* doc: Improvements around DRM modes and SCALING_FILTER
* Pass full state to connector atomic functions + callee updates
* Cleanups
* shmem: Map pages with caching by default; Cleanups
* ttm: Fix DMA32 for global page pool
* fbdev: Cleanups
* fb-helper: Update framebuffer after userspace writes; Unmap console buffer
during shutdown; Rework damage handling of shadow framebuffer
Driver Changes:
* amdgpu: Multi-hop fixes, Clenaups
* imx: Fix rotation for Vivante tiled formats; Support nearest-neighour
skaling; Cleanups
* mcde: Fix RGB formats; Support DPI output; Cleanups
* meson: HDMI clock fixes
* panel: Add driver and bindings for Innolux N125HCE-GN1
* panel/s6e63m0: More backlight levels; Fix init; Cleanups
* via: Clenunps
* virtio: Use fence ID for handling fences; Cleanups
-----BEGIN PGP SIGNATURE-----
iQEzBAABCAAdFiEEchf7rIzpz2NEoWjlaA3BHVMLeiMFAl/AuLYACgkQaA3BHVML
eiMzvQgAmE1FGqUSNPGFjWpWN+hYDqEnpa3MXBVZ4sOqXxmzaI+SdnmexsaQ6v+F
37VSlk3OFa69gYV6kQp9NbfYc0E7TZ9CusU6WNcxo36GpInsWmuIHJI3BhlCgpKm
hDDRylv5c4+e6RlGaz+yS73zkddmrMPi4HqarMP+8c2+UJxaDe1Huv22MKE7PJK3
noBck4Afelk51kn9bpeGj+WXvpEY+CMzXA7cvx1U26INZZyIdontZXJEeN6hAxzP
yyhzOWPMH1X9Wfe8Qj1Ua9r27btG/0SKfhseovLU9Cjm1FGBjRiAnkxZua/ScwIL
H7JcYplEkiLXuxnDAJOAZkvF6EcaJQ==
=TatG
-----END PGP SIGNATURE-----
Merge tag 'drm-misc-next-2020-11-27-1' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for 5.11:
UAPI Changes:
Cross-subsystem Changes:
* char/agp: Disable frontend without CONFIG_DRM_LEGACY
* mm: Fix fput in mmap error path; Introduce vma_set_file() to change
vma->vm_file
Core Changes:
* dma-buf: Use sgtables in system heap; Move heap helpers to CMA-heap code;
Skip sync for unmapped buffers; Alloc higher order pages is available;
Respect num_fences when initializing shared fence list
* doc: Improvements around DRM modes and SCALING_FILTER
* Pass full state to connector atomic functions + callee updates
* Cleanups
* shmem: Map pages with caching by default; Cleanups
* ttm: Fix DMA32 for global page pool
* fbdev: Cleanups
* fb-helper: Update framebuffer after userspace writes; Unmap console buffer
during shutdown; Rework damage handling of shadow framebuffer
Driver Changes:
* amdgpu: Multi-hop fixes, Clenaups
* imx: Fix rotation for Vivante tiled formats; Support nearest-neighour
skaling; Cleanups
* mcde: Fix RGB formats; Support DPI output; Cleanups
* meson: HDMI clock fixes
* panel: Add driver and bindings for Innolux N125HCE-GN1
* panel/s6e63m0: More backlight levels; Fix init; Cleanups
* via: Clenunps
* virtio: Use fence ID for handling fences; Cleanups
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20201127083055.GA29139@linux-uq9g
This commit is contained in:
commit
5fbd41d3bf
70 changed files with 2134 additions and 905 deletions
|
|
@ -218,6 +218,27 @@ extern "C" {
|
|||
#define DRM_MODE_CONTENT_PROTECTION_DESIRED 1
|
||||
#define DRM_MODE_CONTENT_PROTECTION_ENABLED 2
|
||||
|
||||
/**
|
||||
* struct drm_mode_modeinfo - Display mode information.
|
||||
* @clock: pixel clock in kHz
|
||||
* @hdisplay: horizontal display size
|
||||
* @hsync_start: horizontal sync start
|
||||
* @hsync_end: horizontal sync end
|
||||
* @htotal: horizontal total size
|
||||
* @hskew: horizontal skew
|
||||
* @vdisplay: vertical display size
|
||||
* @vsync_start: vertical sync start
|
||||
* @vsync_end: vertical sync end
|
||||
* @vtotal: vertical total size
|
||||
* @vscan: vertical scan
|
||||
* @vrefresh: approximate vertical refresh rate in Hz
|
||||
* @flags: bitmask of misc. flags, see DRM_MODE_FLAG_* defines
|
||||
* @type: bitmask of type flags, see DRM_MODE_TYPE_* defines
|
||||
* @name: string describing the mode resolution
|
||||
*
|
||||
* This is the user-space API display mode information structure. For the
|
||||
* kernel version see struct drm_display_mode.
|
||||
*/
|
||||
struct drm_mode_modeinfo {
|
||||
__u32 clock;
|
||||
__u16 hdisplay;
|
||||
|
|
@ -368,27 +389,95 @@ enum drm_mode_subconnector {
|
|||
#define DRM_MODE_CONNECTOR_WRITEBACK 18
|
||||
#define DRM_MODE_CONNECTOR_SPI 19
|
||||
|
||||
/**
|
||||
* struct drm_mode_get_connector - Get connector metadata.
|
||||
*
|
||||
* User-space can perform a GETCONNECTOR ioctl to retrieve information about a
|
||||
* connector. User-space is expected to retrieve encoders, modes and properties
|
||||
* by performing this ioctl at least twice: the first time to retrieve the
|
||||
* number of elements, the second time to retrieve the elements themselves.
|
||||
*
|
||||
* To retrieve the number of elements, set @count_props and @count_encoders to
|
||||
* zero, set @count_modes to 1, and set @modes_ptr to a temporary struct
|
||||
* drm_mode_modeinfo element.
|
||||
*
|
||||
* To retrieve the elements, allocate arrays for @encoders_ptr, @modes_ptr,
|
||||
* @props_ptr and @prop_values_ptr, then set @count_modes, @count_props and
|
||||
* @count_encoders to their capacity.
|
||||
*
|
||||
* Performing the ioctl only twice may be racy: the number of elements may have
|
||||
* changed with a hotplug event in-between the two ioctls. User-space is
|
||||
* expected to retry the last ioctl until the number of elements stabilizes.
|
||||
* The kernel won't fill any array which doesn't have the expected length.
|
||||
*
|
||||
* **Force-probing a connector**
|
||||
*
|
||||
* If the @count_modes field is set to zero, the kernel will perform a forced
|
||||
* probe on the connector to refresh the connector status, modes and EDID.
|
||||
* A forced-probe can be slow and the ioctl will block. A force-probe can cause
|
||||
* flickering and temporary freezes, so it should not be performed
|
||||
* automatically.
|
||||
*
|
||||
* User-space shouldn't need to force-probe connectors in general: the kernel
|
||||
* will automatically take care of probing connectors that don't support
|
||||
* hot-plug detection when appropriate. However, user-space may force-probe
|
||||
* connectors on user request (e.g. clicking a "Scan connectors" button, or
|
||||
* opening a UI to manage screens).
|
||||
*/
|
||||
struct drm_mode_get_connector {
|
||||
|
||||
/** @encoders_ptr: Pointer to ``__u32`` array of object IDs. */
|
||||
__u64 encoders_ptr;
|
||||
/** @modes_ptr: Pointer to struct drm_mode_modeinfo array. */
|
||||
__u64 modes_ptr;
|
||||
/** @props_ptr: Pointer to ``__u32`` array of property IDs. */
|
||||
__u64 props_ptr;
|
||||
/** @prop_values_ptr: Pointer to ``__u64`` array of property values. */
|
||||
__u64 prop_values_ptr;
|
||||
|
||||
/** @count_modes: Number of modes. */
|
||||
__u32 count_modes;
|
||||
/** @count_props: Number of properties. */
|
||||
__u32 count_props;
|
||||
/** @count_encoders: Number of encoders. */
|
||||
__u32 count_encoders;
|
||||
|
||||
__u32 encoder_id; /**< Current Encoder */
|
||||
__u32 connector_id; /**< Id */
|
||||
/** @encoder_id: Object ID of the current encoder. */
|
||||
__u32 encoder_id;
|
||||
/** @connector_id: Object ID of the connector. */
|
||||
__u32 connector_id;
|
||||
/**
|
||||
* @connector_type: Type of the connector.
|
||||
*
|
||||
* See DRM_MODE_CONNECTOR_* defines.
|
||||
*/
|
||||
__u32 connector_type;
|
||||
/**
|
||||
* @connector_type_id: Type-specific connector number.
|
||||
*
|
||||
* This is not an object ID. This is a per-type connector number. Each
|
||||
* (type, type_id) combination is unique across all connectors of a DRM
|
||||
* device.
|
||||
*/
|
||||
__u32 connector_type_id;
|
||||
|
||||
/**
|
||||
* @connection: Status of the connector.
|
||||
*
|
||||
* See enum drm_connector_status.
|
||||
*/
|
||||
__u32 connection;
|
||||
__u32 mm_width; /**< width in millimeters */
|
||||
__u32 mm_height; /**< height in millimeters */
|
||||
/** @mm_width: Width of the connected sink in millimeters. */
|
||||
__u32 mm_width;
|
||||
/** @mm_height: Height of the connected sink in millimeters. */
|
||||
__u32 mm_height;
|
||||
/**
|
||||
* @subpixel: Subpixel order of the connected sink.
|
||||
*
|
||||
* See enum subpixel_order.
|
||||
*/
|
||||
__u32 subpixel;
|
||||
|
||||
/** @pad: Padding, must be zero. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
|
@ -905,24 +994,23 @@ struct drm_format_modifier {
|
|||
|
||||
/**
|
||||
* struct drm_mode_create_blob - Create New block property
|
||||
* @data: Pointer to data to copy.
|
||||
* @length: Length of data to copy.
|
||||
* @blob_id: new property ID.
|
||||
*
|
||||
* Create a new 'blob' data property, copying length bytes from data pointer,
|
||||
* and returning new blob ID.
|
||||
*/
|
||||
struct drm_mode_create_blob {
|
||||
/** Pointer to data to copy. */
|
||||
/** @data: Pointer to data to copy. */
|
||||
__u64 data;
|
||||
/** Length of data to copy. */
|
||||
/** @length: Length of data to copy. */
|
||||
__u32 length;
|
||||
/** Return: new property ID. */
|
||||
/** @blob_id: Return: new property ID. */
|
||||
__u32 blob_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_mode_destroy_blob - Destroy user blob
|
||||
* @blob_id: blob_id to destroy
|
||||
*
|
||||
* Destroy a user-created blob property.
|
||||
*
|
||||
* User-space can release blobs as soon as they do not need to refer to them by
|
||||
|
|
@ -937,36 +1025,32 @@ struct drm_mode_destroy_blob {
|
|||
|
||||
/**
|
||||
* struct drm_mode_create_lease - Create lease
|
||||
* @object_ids: Pointer to array of object ids.
|
||||
* @object_count: Number of object ids.
|
||||
* @flags: flags for new FD.
|
||||
* @lessee_id: unique identifier for lessee.
|
||||
* @fd: file descriptor to new drm_master file.
|
||||
*
|
||||
* Lease mode resources, creating another drm_master.
|
||||
*/
|
||||
struct drm_mode_create_lease {
|
||||
/** Pointer to array of object ids (__u32) */
|
||||
/** @object_ids: Pointer to array of object ids (__u32) */
|
||||
__u64 object_ids;
|
||||
/** Number of object ids */
|
||||
/** @object_count: Number of object ids */
|
||||
__u32 object_count;
|
||||
/** flags for new FD (O_CLOEXEC, etc) */
|
||||
/** @flags: flags for new FD (O_CLOEXEC, etc) */
|
||||
__u32 flags;
|
||||
|
||||
/** Return: unique identifier for lessee. */
|
||||
/** @lessee_id: Return: unique identifier for lessee. */
|
||||
__u32 lessee_id;
|
||||
/** Return: file descriptor to new drm_master file */
|
||||
/** @fd: Return: file descriptor to new drm_master file */
|
||||
__u32 fd;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_mode_list_lessees - List lessees
|
||||
* @count_lessees: Number of lessees.
|
||||
* @pad: pad.
|
||||
* @lessees_ptr: Pointer to lessess.
|
||||
* List lesses from a drm_master
|
||||
*
|
||||
* List lesses from a drm_master.
|
||||
*/
|
||||
struct drm_mode_list_lessees {
|
||||
/** Number of lessees.
|
||||
/**
|
||||
* @count_lessees: Number of lessees.
|
||||
*
|
||||
* On input, provides length of the array.
|
||||
* On output, provides total number. No
|
||||
* more than the input number will be written
|
||||
|
|
@ -974,23 +1058,26 @@ struct drm_mode_list_lessees {
|
|||
* the size and then the data.
|
||||
*/
|
||||
__u32 count_lessees;
|
||||
/** @pad: Padding. */
|
||||
__u32 pad;
|
||||
|
||||
/** Pointer to lessees.
|
||||
* pointer to __u64 array of lessee ids
|
||||
/**
|
||||
* @lessees_ptr: Pointer to lessees.
|
||||
*
|
||||
* Pointer to __u64 array of lessee ids
|
||||
*/
|
||||
__u64 lessees_ptr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_mode_get_lease - Get Lease
|
||||
* @count_objects: Number of leased objects.
|
||||
* @pad: pad.
|
||||
* @objects_ptr: Pointer to objects.
|
||||
* Get leased objects
|
||||
*
|
||||
* Get leased objects.
|
||||
*/
|
||||
struct drm_mode_get_lease {
|
||||
/** Number of leased objects.
|
||||
/**
|
||||
* @count_objects: Number of leased objects.
|
||||
*
|
||||
* On input, provides length of the array.
|
||||
* On output, provides total number. No
|
||||
* more than the input number will be written
|
||||
|
|
@ -998,22 +1085,22 @@ struct drm_mode_get_lease {
|
|||
* the size and then the data.
|
||||
*/
|
||||
__u32 count_objects;
|
||||
/** @pad: Padding. */
|
||||
__u32 pad;
|
||||
|
||||
/** Pointer to objects.
|
||||
* pointer to __u32 array of object ids
|
||||
/**
|
||||
* @objects_ptr: Pointer to objects.
|
||||
*
|
||||
* Pointer to __u32 array of object ids.
|
||||
*/
|
||||
__u64 objects_ptr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_mode_revoke_lease - Revoke lease
|
||||
* @lessee_id: Unique ID of lessee.
|
||||
* Revoke lease
|
||||
*/
|
||||
struct drm_mode_revoke_lease {
|
||||
/** Unique ID of lessee
|
||||
*/
|
||||
/** @lessee_id: Unique ID of lessee */
|
||||
__u32 lessee_id;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -115,6 +115,10 @@ enum virtio_gpu_ctrl_type {
|
|||
|
||||
enum virtio_gpu_shm_id {
|
||||
VIRTIO_GPU_SHM_ID_UNDEFINED = 0,
|
||||
/*
|
||||
* VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB
|
||||
* VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB
|
||||
*/
|
||||
VIRTIO_GPU_SHM_ID_HOST_VISIBLE = 1
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue