drm-misc-next for v5.3, try #2:
Cross-subsystem Changes: - Fix device tree bindings in drm-misc-next after a botched merge. Core Changes: - Docbook fix for drm_hdmi_infoframe_set_hdr_metadata. Driver Changes: - mediatek: Fix compiler warning after merging the HDR series. - vc4: Rework binner bo handling. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuXvWqAysSYEJGuVH/lWMcqZwE8MFAlznr6oACgkQ/lWMcqZw E8Mjbw//Rf2KeOyNYOpaUjzUIXjdGNKCSLG+MYbBzJLbdj6hywAi8tS6aS89d1qW CCBzPTUWFktuUVuHqIpZwNTPLndXzPvyC9v1BafKkF6Tkod1usBMaXD1266giAbC pKkJrejqeeQtYNfAQIGDzD/ndxXptw+mwK7DgRvMIQSGYuMCm+p5cG0RBtLV7Ijv fXIromzIQ+YUuOIyGRgmXW9zDUaieztovrLtIzpYALzTPZb5dqrJiuv3SKIiB4EK mlTprRqHbHpYLHHNhFrO2blfi/50+SThEHvUBP8rkMf3nu3nhQSMQrPtxJSfL71e 1nAWvIYkLY7lKid7ugFvsZL+1L0zgG6XnsqHs5/x5x/LGDK1jVCEGG/DdsXVjGFj XH8zdLBi3PrmwbKy/HHCh6QD5Iwtg4qm8Dfjjfil4XNQDI8pK8q8TaVMZETn3YRC 63JtZq8nBnrWgT57N/28apkymsHdz2QK99Yyc+GflFhhHsoNy6LhP+OqzW11rIas ANxZrF5CR8rudtoo2QeMkHcvkbIvDTQOPPuW6LXdXuqkhi91NFmgkxCCecFfpO74 QvTiBQHrlb8zqTMZJ/j6uSBTFNOXI2NxXTKUBMJ2O3FcyVqvpL+HutVPcBuIw3mM FNvCI1M9rVH1qFOZ+t1y9ceebuHPy6xYwuak6fKDwzOwJOmOMFI= =2K7c -----END PGP SIGNATURE----- Merge tag 'drm-misc-next-2019-05-24' of git://anongit.freedesktop.org/drm/drm-misc into drm-next drm-misc-next for v5.3, try #2: UAPI Changes: - Add HDR source metadata property. - Make drm.h compile on GNU/kFreeBSD by including stdint.h - Clarify how the userspace reviewer has to review new kernel UAPI. - Clarify that for using new UAPI, merging to drm-next or drm-misc-next should be enough. Cross-subsystem Changes: - video/hdmi: Add unpack function for DRM infoframes. - Device tree bindings: * Updating a property for Mali Midgard GPUs * Updating a property for STM32 DSI panel * Adding support for FriendlyELEC HD702E 800x1280 panel * Adding support for Evervision VGG804821 800x480 5.0" WVGA TFT panel * Adding support for the EDT ET035012DM6 3.5" 320x240 QVGA 24-bit RGB TFT. * Adding support for Three Five displays TFC S9700RTWV43TR-01B 800x480 panel with resistive touch found on TI's AM335X-EVM. * Adding support for EDT ETM0430G0DH6 480x272 panel. - Add OSD101T2587-53TS driver with DT bindings. - Add Samsung S6E63M0 panel driver with DT bindings. - Add VXT VL050-8048NT-C01 800x480 panel with DT bindings. - Dma-buf: - Make mmap callback actually optional. - Documentation updates. - Fix debugfs refcount inbalance. - Remove unused sync_dump function. - Fix device tree bindings in drm-misc-next after a botched merge. Core Changes: - Add support for HDR infoframes and related EDID parsing. - Remove prime sg_table caching, now done inside dma-buf. - Add shiny new drm_gem_vram helpers for simple VRAM drivers; with some fixes to the new API on top. - Small fix to job cleanup without timeout handler. - Documentation fixes to drm_fourcc. - Replace lookups of drm_format with struct drm_format_info; remove functions that become obsolete by this conversion. - Remove double include in bridge/panel.c and some drivers. - Remove drmP.h include from drm/edid and drm/dp. - Fix null pointer deref in drm_fb_helper_hotplug_event(). - Remove most members from drm_fb_helper_crtc, only mode_set is kept. - Remove race of fb helpers with userspace; only restore mode when userspace is not master. - Move legacy setup from drm_file.c to drm_legacy_misc.c - Rework scheduler job destruction. - drm/bus was removed, remove from TODO. - Add __drm_atomic_helper_crtc_reset() to subclass crtc_state, and convert some drivers to use it (conversion is not complete yet). - Bump vblank timeout wait to 100 ms for atomic. - Docbook fix for drm_hdmi_infoframe_set_hdr_metadata. Driver Changes: - sun4i: Use DRM_GEM_CMA_VMAP_DRIVER_OPS instead of definining manually. - v3d: Small cleanups, adding support for compute shaders, reservation/synchronization fixes and job management refactoring, fixes MMU and debugfs. - lima: Fix null pointer in irq handler on startup, set default timeout for scheduled jobs. - stm/ltdc: Assorted fixes and adding FB modifier support. - amdgpu: Avoid hw reset if guilty job was already signaled. - virtio: Add seqno to fences, add trace events, use correct flags for fence allocation. - Convert AST, bochs, mgag200, vboxvideo, hisilicon to the new drm_gem_vram API. - sun6i_mipi_dsi: Support DSI GENERIC_SHORT_WRITE_2 transfers. - bochs: Small fix to use PTR_RET_OR_ZERO and driver unload. - gma500: header fixes - cirrus: Remove unused files. - mediatek: Fix compiler warning after merging the HDR series. - vc4: Rework binner bo handling. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/052875a5-27ba-3832-60c2-193d950afdff@linux.intel.com
This commit is contained in:
commit
88cd7a2c1b
220 changed files with 5980 additions and 4630 deletions
|
|
@ -39,18 +39,20 @@ struct dma_buf_attachment;
|
|||
|
||||
/**
|
||||
* struct dma_buf_ops - operations possible on struct dma_buf
|
||||
* @map_atomic: [optional] maps a page from the buffer into kernel address
|
||||
* space, users may not block until the subsequent unmap call.
|
||||
* This callback must not sleep.
|
||||
* @unmap_atomic: [optional] unmaps a atomically mapped page from the buffer.
|
||||
* This Callback must not sleep.
|
||||
* @map: [optional] maps a page from the buffer into kernel address space.
|
||||
* @unmap: [optional] unmaps a page from the buffer.
|
||||
* @vmap: [optional] creates a virtual mapping for the buffer into kernel
|
||||
* address space. Same restrictions as for vmap and friends apply.
|
||||
* @vunmap: [optional] unmaps a vmap from the buffer
|
||||
*/
|
||||
struct dma_buf_ops {
|
||||
/**
|
||||
* @cache_sgt_mapping:
|
||||
*
|
||||
* If true the framework will cache the first mapping made for each
|
||||
* attachment. This avoids creating mappings for attachments multiple
|
||||
* times.
|
||||
*/
|
||||
bool cache_sgt_mapping;
|
||||
|
||||
/**
|
||||
* @attach:
|
||||
*
|
||||
|
|
@ -205,8 +207,6 @@ struct dma_buf_ops {
|
|||
* to be restarted.
|
||||
*/
|
||||
int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
|
||||
void *(*map)(struct dma_buf *, unsigned long);
|
||||
void (*unmap)(struct dma_buf *, unsigned long, void *);
|
||||
|
||||
/**
|
||||
* @mmap:
|
||||
|
|
@ -245,6 +245,31 @@ struct dma_buf_ops {
|
|||
*/
|
||||
int (*mmap)(struct dma_buf *, struct vm_area_struct *vma);
|
||||
|
||||
/**
|
||||
* @map:
|
||||
*
|
||||
* Maps a page from the buffer into kernel address space. The page is
|
||||
* specified by offset into the buffer in PAGE_SIZE units.
|
||||
*
|
||||
* This callback is optional.
|
||||
*
|
||||
* Returns:
|
||||
*
|
||||
* Virtual address pointer where requested page can be accessed. NULL
|
||||
* on error or when this function is unimplemented by the exporter.
|
||||
*/
|
||||
void *(*map)(struct dma_buf *, unsigned long);
|
||||
|
||||
/**
|
||||
* @unmap:
|
||||
*
|
||||
* Unmaps a page from the buffer. Page offset and address pointer should
|
||||
* be the same as the one passed to and returned by matching call to map.
|
||||
*
|
||||
* This callback is optional.
|
||||
*/
|
||||
void (*unmap)(struct dma_buf *, unsigned long, void *);
|
||||
|
||||
void *(*vmap)(struct dma_buf *);
|
||||
void (*vunmap)(struct dma_buf *, void *vaddr);
|
||||
};
|
||||
|
|
@ -307,6 +332,8 @@ struct dma_buf {
|
|||
* @dmabuf: buffer for this attachment.
|
||||
* @dev: device attached to the buffer.
|
||||
* @node: list of dma_buf_attachment.
|
||||
* @sgt: cached mapping.
|
||||
* @dir: direction of cached mapping.
|
||||
* @priv: exporter specific attachment data.
|
||||
*
|
||||
* This structure holds the attachment information between the dma_buf buffer
|
||||
|
|
@ -322,6 +349,8 @@ struct dma_buf_attachment {
|
|||
struct dma_buf *dmabuf;
|
||||
struct device *dev;
|
||||
struct list_head node;
|
||||
struct sg_table *sgt;
|
||||
enum dma_data_direction dir;
|
||||
void *priv;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ enum hdmi_infoframe_type {
|
|||
HDMI_INFOFRAME_TYPE_AVI = 0x82,
|
||||
HDMI_INFOFRAME_TYPE_SPD = 0x83,
|
||||
HDMI_INFOFRAME_TYPE_AUDIO = 0x84,
|
||||
HDMI_INFOFRAME_TYPE_DRM = 0x87,
|
||||
};
|
||||
|
||||
#define HDMI_IEEE_OUI 0x000c03
|
||||
|
|
@ -55,6 +56,7 @@ enum hdmi_infoframe_type {
|
|||
#define HDMI_AVI_INFOFRAME_SIZE 13
|
||||
#define HDMI_SPD_INFOFRAME_SIZE 25
|
||||
#define HDMI_AUDIO_INFOFRAME_SIZE 10
|
||||
#define HDMI_DRM_INFOFRAME_SIZE 26
|
||||
|
||||
#define HDMI_INFOFRAME_SIZE(type) \
|
||||
(HDMI_INFOFRAME_HEADER_SIZE + HDMI_ ## type ## _INFOFRAME_SIZE)
|
||||
|
|
@ -152,6 +154,17 @@ enum hdmi_content_type {
|
|||
HDMI_CONTENT_TYPE_GAME,
|
||||
};
|
||||
|
||||
enum hdmi_metadata_type {
|
||||
HDMI_STATIC_METADATA_TYPE1 = 1,
|
||||
};
|
||||
|
||||
enum hdmi_eotf {
|
||||
HDMI_EOTF_TRADITIONAL_GAMMA_SDR,
|
||||
HDMI_EOTF_TRADITIONAL_GAMMA_HDR,
|
||||
HDMI_EOTF_SMPTE_ST2084,
|
||||
HDMI_EOTF_BT_2100_HLG,
|
||||
};
|
||||
|
||||
struct hdmi_avi_infoframe {
|
||||
enum hdmi_infoframe_type type;
|
||||
unsigned char version;
|
||||
|
|
@ -175,12 +188,37 @@ struct hdmi_avi_infoframe {
|
|||
unsigned short right_bar;
|
||||
};
|
||||
|
||||
/* DRM Infoframe as per CTA 861.G spec */
|
||||
struct hdmi_drm_infoframe {
|
||||
enum hdmi_infoframe_type type;
|
||||
unsigned char version;
|
||||
unsigned char length;
|
||||
enum hdmi_eotf eotf;
|
||||
enum hdmi_metadata_type metadata_type;
|
||||
struct {
|
||||
u16 x, y;
|
||||
} display_primaries[3];
|
||||
struct {
|
||||
u16 x, y;
|
||||
} white_point;
|
||||
u16 max_display_mastering_luminance;
|
||||
u16 min_display_mastering_luminance;
|
||||
u16 max_cll;
|
||||
u16 max_fall;
|
||||
};
|
||||
|
||||
int hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame);
|
||||
ssize_t hdmi_avi_infoframe_pack(struct hdmi_avi_infoframe *frame, void *buffer,
|
||||
size_t size);
|
||||
ssize_t hdmi_avi_infoframe_pack_only(const struct hdmi_avi_infoframe *frame,
|
||||
void *buffer, size_t size);
|
||||
int hdmi_avi_infoframe_check(struct hdmi_avi_infoframe *frame);
|
||||
int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *frame);
|
||||
ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe *frame, void *buffer,
|
||||
size_t size);
|
||||
ssize_t hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *frame,
|
||||
void *buffer, size_t size);
|
||||
int hdmi_drm_infoframe_check(struct hdmi_drm_infoframe *frame);
|
||||
|
||||
enum hdmi_spd_sdi {
|
||||
HDMI_SPD_SDI_UNKNOWN,
|
||||
|
|
@ -320,6 +358,22 @@ struct hdmi_vendor_infoframe {
|
|||
unsigned int s3d_ext_data;
|
||||
};
|
||||
|
||||
/* HDR Metadata as per 861.G spec */
|
||||
struct hdr_static_metadata {
|
||||
__u8 eotf;
|
||||
__u8 metadata_type;
|
||||
__u16 max_cll;
|
||||
__u16 max_fall;
|
||||
__u16 min_cll;
|
||||
};
|
||||
|
||||
struct hdr_sink_metadata {
|
||||
__u32 metadata_type;
|
||||
union {
|
||||
struct hdr_static_metadata hdmi_type1;
|
||||
};
|
||||
};
|
||||
|
||||
int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame);
|
||||
ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
|
||||
void *buffer, size_t size);
|
||||
|
|
@ -355,6 +409,7 @@ union hdmi_infoframe {
|
|||
struct hdmi_spd_infoframe spd;
|
||||
union hdmi_vendor_any_infoframe vendor;
|
||||
struct hdmi_audio_infoframe audio;
|
||||
struct hdmi_drm_infoframe drm;
|
||||
};
|
||||
|
||||
ssize_t hdmi_infoframe_pack(union hdmi_infoframe *frame, void *buffer,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue