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:
@@ -74,23 +74,18 @@ static struct drm_framebuffer *
|
||||
rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
|
||||
const struct drm_mode_fb_cmd2 *mode_cmd)
|
||||
{
|
||||
const struct drm_format_info *info = drm_get_format_info(dev,
|
||||
mode_cmd);
|
||||
struct drm_framebuffer *fb;
|
||||
struct drm_gem_object *objs[ROCKCHIP_MAX_FB_BUFFER];
|
||||
struct drm_gem_object *obj;
|
||||
unsigned int hsub;
|
||||
unsigned int vsub;
|
||||
int num_planes;
|
||||
int num_planes = min_t(int, info->num_planes, ROCKCHIP_MAX_FB_BUFFER);
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
hsub = drm_format_horz_chroma_subsampling(mode_cmd->pixel_format);
|
||||
vsub = drm_format_vert_chroma_subsampling(mode_cmd->pixel_format);
|
||||
num_planes = min(drm_format_num_planes(mode_cmd->pixel_format),
|
||||
ROCKCHIP_MAX_FB_BUFFER);
|
||||
|
||||
for (i = 0; i < num_planes; i++) {
|
||||
unsigned int width = mode_cmd->width / (i ? hsub : 1);
|
||||
unsigned int height = mode_cmd->height / (i ? vsub : 1);
|
||||
unsigned int width = mode_cmd->width / (i ? info->hsub : 1);
|
||||
unsigned int height = mode_cmd->height / (i ? info->vsub : 1);
|
||||
unsigned int min_size;
|
||||
|
||||
obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[i]);
|
||||
@@ -103,7 +98,7 @@ rockchip_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
|
||||
|
||||
min_size = (height - 1) * mode_cmd->pitches[i] +
|
||||
mode_cmd->offsets[i] +
|
||||
width * drm_format_plane_cpp(mode_cmd->pixel_format, i);
|
||||
width * info->cpp[i];
|
||||
|
||||
if (obj->size < min_size) {
|
||||
drm_gem_object_put_unlocked(obj);
|
||||
|
@@ -315,24 +315,19 @@ static uint16_t scl_vop_cal_scale(enum scale_mode mode, uint32_t src,
|
||||
|
||||
static void scl_vop_cal_scl_fac(struct vop *vop, const struct vop_win_data *win,
|
||||
uint32_t src_w, uint32_t src_h, uint32_t dst_w,
|
||||
uint32_t dst_h, uint32_t pixel_format)
|
||||
uint32_t dst_h, const struct drm_format_info *info)
|
||||
{
|
||||
uint16_t yrgb_hor_scl_mode, yrgb_ver_scl_mode;
|
||||
uint16_t cbcr_hor_scl_mode = SCALE_NONE;
|
||||
uint16_t cbcr_ver_scl_mode = SCALE_NONE;
|
||||
int hsub = drm_format_horz_chroma_subsampling(pixel_format);
|
||||
int vsub = drm_format_vert_chroma_subsampling(pixel_format);
|
||||
const struct drm_format_info *info;
|
||||
bool is_yuv = false;
|
||||
uint16_t cbcr_src_w = src_w / hsub;
|
||||
uint16_t cbcr_src_h = src_h / vsub;
|
||||
uint16_t cbcr_src_w = src_w / info->hsub;
|
||||
uint16_t cbcr_src_h = src_h / info->vsub;
|
||||
uint16_t vsu_mode;
|
||||
uint16_t lb_mode;
|
||||
uint32_t val;
|
||||
int vskiplines;
|
||||
|
||||
info = drm_format_info(pixel_format);
|
||||
|
||||
if (info->is_yuv)
|
||||
is_yuv = true;
|
||||
|
||||
@@ -831,8 +826,8 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
||||
(state->rotation & DRM_MODE_REFLECT_X) ? 1 : 0);
|
||||
|
||||
if (is_yuv) {
|
||||
int hsub = drm_format_horz_chroma_subsampling(fb->format->format);
|
||||
int vsub = drm_format_vert_chroma_subsampling(fb->format->format);
|
||||
int hsub = fb->format->hsub;
|
||||
int vsub = fb->format->vsub;
|
||||
int bpp = fb->format->cpp[1];
|
||||
|
||||
uv_obj = fb->obj[1];
|
||||
@@ -856,7 +851,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
||||
if (win->phy->scl)
|
||||
scl_vop_cal_scl_fac(vop, win, actual_w, actual_h,
|
||||
drm_rect_width(dest), drm_rect_height(dest),
|
||||
fb->format->format);
|
||||
fb->format);
|
||||
|
||||
VOP_WIN_SET(vop, win, act_info, act_info);
|
||||
VOP_WIN_SET(vop, win, dsp_info, dsp_info);
|
||||
@@ -1222,17 +1217,6 @@ static void vop_crtc_destroy(struct drm_crtc *crtc)
|
||||
drm_crtc_cleanup(crtc);
|
||||
}
|
||||
|
||||
static void vop_crtc_reset(struct drm_crtc *crtc)
|
||||
{
|
||||
if (crtc->state)
|
||||
__drm_atomic_helper_crtc_destroy_state(crtc->state);
|
||||
kfree(crtc->state);
|
||||
|
||||
crtc->state = kzalloc(sizeof(struct rockchip_crtc_state), GFP_KERNEL);
|
||||
if (crtc->state)
|
||||
crtc->state->crtc = crtc;
|
||||
}
|
||||
|
||||
static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
|
||||
{
|
||||
struct rockchip_crtc_state *rockchip_state;
|
||||
@@ -1254,6 +1238,17 @@ static void vop_crtc_destroy_state(struct drm_crtc *crtc,
|
||||
kfree(s);
|
||||
}
|
||||
|
||||
static void vop_crtc_reset(struct drm_crtc *crtc)
|
||||
{
|
||||
struct rockchip_crtc_state *crtc_state =
|
||||
kzalloc(sizeof(*crtc_state), GFP_KERNEL);
|
||||
|
||||
if (crtc->state)
|
||||
vop_crtc_destroy_state(crtc, crtc->state);
|
||||
|
||||
__drm_atomic_helper_crtc_reset(crtc, &crtc_state->base);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DRM_ANALOGIX_DP
|
||||
static struct drm_connector *vop_get_edp_connector(struct vop *vop)
|
||||
{
|
||||
|
Reference in New Issue
Block a user