Skip to content

Commit 0ed9041

Browse files
committed
Merge tag 'drm-intel-fixes-2023-02-09' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
- Display watermark fix (Ville) - fbdev fix for PSR, FBC, DRRS (Jouni) - Move fd_install after last use of fence (Rob) - Initialize the obj flags for shmem objects (Aravind) - Fix VBT DSI DVO port handling (Ville) Signed-off-by: Dave Airlie <[email protected]> From: Rodrigo Vivi <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 337d5b5 + 6a7ff13 commit 0ed9041

File tree

5 files changed

+45
-19
lines changed

5 files changed

+45
-19
lines changed

drivers/gpu/drm/i915/display/intel_bios.c

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2466,6 +2466,22 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
24662466
dvo_port);
24672467
}
24682468

2469+
static enum port
2470+
dsi_dvo_port_to_port(struct drm_i915_private *i915, u8 dvo_port)
2471+
{
2472+
switch (dvo_port) {
2473+
case DVO_PORT_MIPIA:
2474+
return PORT_A;
2475+
case DVO_PORT_MIPIC:
2476+
if (DISPLAY_VER(i915) >= 11)
2477+
return PORT_B;
2478+
else
2479+
return PORT_C;
2480+
default:
2481+
return PORT_NONE;
2482+
}
2483+
}
2484+
24692485
static int parse_bdb_230_dp_max_link_rate(const int vbt_max_link_rate)
24702486
{
24712487
switch (vbt_max_link_rate) {
@@ -3414,19 +3430,16 @@ bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
34143430

34153431
dvo_port = child->dvo_port;
34163432

3417-
if (dvo_port == DVO_PORT_MIPIA ||
3418-
(dvo_port == DVO_PORT_MIPIB && DISPLAY_VER(i915) >= 11) ||
3419-
(dvo_port == DVO_PORT_MIPIC && DISPLAY_VER(i915) < 11)) {
3420-
if (port)
3421-
*port = dvo_port - DVO_PORT_MIPIA;
3422-
return true;
3423-
} else if (dvo_port == DVO_PORT_MIPIB ||
3424-
dvo_port == DVO_PORT_MIPIC ||
3425-
dvo_port == DVO_PORT_MIPID) {
3433+
if (dsi_dvo_port_to_port(i915, dvo_port) == PORT_NONE) {
34263434
drm_dbg_kms(&i915->drm,
34273435
"VBT has unsupported DSI port %c\n",
34283436
port_name(dvo_port - DVO_PORT_MIPIA));
3437+
continue;
34293438
}
3439+
3440+
if (port)
3441+
*port = dsi_dvo_port_to_port(i915, dvo_port);
3442+
return true;
34303443
}
34313444

34323445
return false;
@@ -3511,7 +3524,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
35113524
if (!(child->device_type & DEVICE_TYPE_MIPI_OUTPUT))
35123525
continue;
35133526

3514-
if (child->dvo_port - DVO_PORT_MIPIA == encoder->port) {
3527+
if (dsi_dvo_port_to_port(i915, child->dvo_port) == encoder->port) {
35153528
if (!devdata->dsc)
35163529
return false;
35173530

drivers/gpu/drm/i915/display/intel_fbdev.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,20 @@ static int intelfb_create(struct drm_fb_helper *helper,
328328
return ret;
329329
}
330330

331+
static int intelfb_dirty(struct drm_fb_helper *helper, struct drm_clip_rect *clip)
332+
{
333+
if (!(clip->x1 < clip->x2 && clip->y1 < clip->y2))
334+
return 0;
335+
336+
if (helper->fb->funcs->dirty)
337+
return helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, clip, 1);
338+
339+
return 0;
340+
}
341+
331342
static const struct drm_fb_helper_funcs intel_fb_helper_funcs = {
332343
.fb_probe = intelfb_create,
344+
.fb_dirty = intelfb_dirty,
333345
};
334346

335347
static void intel_fbdev_destroy(struct intel_fbdev *ifbdev)

drivers/gpu/drm/i915/display/skl_watermark.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1587,7 +1587,8 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state *state,
15871587
skl_check_wm_level(&wm->wm[level], ddb);
15881588

15891589
if (icl_need_wm1_wa(i915, plane_id) &&
1590-
level == 1 && wm->wm[0].enable) {
1590+
level == 1 && !wm->wm[level].enable &&
1591+
wm->wm[0].enable) {
15911592
wm->wm[level].blocks = wm->wm[0].blocks;
15921593
wm->wm[level].lines = wm->wm[0].lines;
15931594
wm->wm[level].ignore_lines = wm->wm[0].ignore_lines;

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3483,6 +3483,13 @@ i915_gem_do_execbuffer(struct drm_device *dev,
34833483
eb.composite_fence :
34843484
&eb.requests[0]->fence);
34853485

3486+
if (unlikely(eb.gem_context->syncobj)) {
3487+
drm_syncobj_replace_fence(eb.gem_context->syncobj,
3488+
eb.composite_fence ?
3489+
eb.composite_fence :
3490+
&eb.requests[0]->fence);
3491+
}
3492+
34863493
if (out_fence) {
34873494
if (err == 0) {
34883495
fd_install(out_fence_fd, out_fence->file);
@@ -3494,13 +3501,6 @@ i915_gem_do_execbuffer(struct drm_device *dev,
34943501
}
34953502
}
34963503

3497-
if (unlikely(eb.gem_context->syncobj)) {
3498-
drm_syncobj_replace_fence(eb.gem_context->syncobj,
3499-
eb.composite_fence ?
3500-
eb.composite_fence :
3501-
&eb.requests[0]->fence);
3502-
}
3503-
35043504
if (!out_fence && eb.composite_fence)
35053505
dma_fence_put(eb.composite_fence);
35063506

drivers/gpu/drm/i915/gem/i915_gem_shmem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ static int shmem_object_init(struct intel_memory_region *mem,
579579
mapping_set_gfp_mask(mapping, mask);
580580
GEM_BUG_ON(!(mapping_gfp_mask(mapping) & __GFP_RECLAIM));
581581

582-
i915_gem_object_init(obj, &i915_gem_shmem_ops, &lock_class, 0);
582+
i915_gem_object_init(obj, &i915_gem_shmem_ops, &lock_class, flags);
583583
obj->mem_flags |= I915_BO_FLAG_STRUCT_PAGE;
584584
obj->write_domain = I915_GEM_DOMAIN_CPU;
585585
obj->read_domains = I915_GEM_DOMAIN_CPU;

0 commit comments

Comments
 (0)