Commit f8678a33 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-fixes-2023-12-14' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes



drm-misc-fixes for v6.7-rc6:
- Fix regression for checking if FD is master capable.
- Fix uninitialized variables in drm/crtc.
- Fix ivpu w/a.
- Refresh modes correctly when updating EDID.
- Small panel fixes.

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/2d46b68f-c5a4-45e5-beb4-411569f4aac8@linux.intel.com
parents 7beae483 6c9dbee8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ properties:
      - lg,acx467akm-7
        # LG Corporation 7" WXGA TFT LCD panel
      - lg,ld070wx3-sl01
        # LG Corporation 5" HD TFT LCD panel
      - lg,lh500wx1-sd03
        # One Stop Displays OSD101T2587-53TS 10.1" 1920x1200 panel
      - osddisplays,osd101t2587-53ts
        # Panasonic 10" WUXGA TFT LCD panel
+0 −2
Original line number Diff line number Diff line
@@ -208,8 +208,6 @@ properties:
      - lemaker,bl035-rgb-002
        # LG 7" (800x480 pixels) TFT LCD panel
      - lg,lb070wv8
        # LG Corporation 5" HD TFT LCD panel
      - lg,lh500wx1-sd03
        # LG LP079QX1-SP0V 7.9" (1536x2048 pixels) TFT LCD panel
      - lg,lp079qx1-sp0v
        # LG 9.7" (2048x1536 pixels) TFT LCD panel
+9 −3
Original line number Diff line number Diff line
@@ -53,10 +53,12 @@

#define ICB_0_1_IRQ_MASK ((((u64)ICB_1_IRQ_MASK) << 32) | ICB_0_IRQ_MASK)

#define BUTTRESS_IRQ_MASK ((REG_FLD(VPU_37XX_BUTTRESS_INTERRUPT_STAT, FREQ_CHANGE)) | \
			   (REG_FLD(VPU_37XX_BUTTRESS_INTERRUPT_STAT, ATS_ERR)) | \
#define BUTTRESS_IRQ_MASK ((REG_FLD(VPU_37XX_BUTTRESS_INTERRUPT_STAT, ATS_ERR)) | \
			   (REG_FLD(VPU_37XX_BUTTRESS_INTERRUPT_STAT, UFI_ERR)))

#define BUTTRESS_ALL_IRQ_MASK (BUTTRESS_IRQ_MASK | \
			       (REG_FLD(VPU_37XX_BUTTRESS_INTERRUPT_STAT, FREQ_CHANGE)))

#define BUTTRESS_IRQ_ENABLE_MASK ((u32)~BUTTRESS_IRQ_MASK)
#define BUTTRESS_IRQ_DISABLE_MASK ((u32)-1)

@@ -74,8 +76,12 @@ static void ivpu_hw_wa_init(struct ivpu_device *vdev)
	vdev->wa.clear_runtime_mem = false;
	vdev->wa.d3hot_after_power_off = true;

	if (ivpu_device_id(vdev) == PCI_DEVICE_ID_MTL && ivpu_revision(vdev) < 4)
	REGB_WR32(VPU_37XX_BUTTRESS_INTERRUPT_STAT, BUTTRESS_ALL_IRQ_MASK);
	if (REGB_RD32(VPU_37XX_BUTTRESS_INTERRUPT_STAT) == BUTTRESS_ALL_IRQ_MASK) {
		/* Writing 1s does not clear the interrupt status register */
		vdev->wa.interrupt_clear_with_0 = true;
		REGB_WR32(VPU_37XX_BUTTRESS_INTERRUPT_STAT, 0x0);
	}

	IVPU_PRINT_WA(punit_disabled);
	IVPU_PRINT_WA(clear_runtime_mem);
+1 −1
Original line number Diff line number Diff line
@@ -236,7 +236,7 @@ static int
drm_master_check_perm(struct drm_device *dev, struct drm_file *file_priv)
{
	if (file_priv->was_master &&
	    rcu_access_pointer(file_priv->pid) == task_pid(current))
	    rcu_access_pointer(file_priv->pid) == task_tgid(current))
		return 0;

	if (!capable(CAP_SYS_ADMIN))
+4 −4
Original line number Diff line number Diff line
@@ -715,8 +715,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
	struct drm_mode_set set;
	uint32_t __user *set_connectors_ptr;
	struct drm_modeset_acquire_ctx ctx;
	int ret;
	int i;
	int ret, i, num_connectors = 0;

	if (!drm_core_check_feature(dev, DRIVER_MODESET))
		return -EOPNOTSUPP;
@@ -871,6 +870,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
					connector->name);

			connector_set[i] = connector;
			num_connectors++;
		}
	}

@@ -879,7 +879,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
	set.y = crtc_req->y;
	set.mode = mode;
	set.connectors = connector_set;
	set.num_connectors = crtc_req->count_connectors;
	set.num_connectors = num_connectors;
	set.fb = fb;

	if (drm_drv_uses_atomic_modeset(dev))
@@ -892,7 +892,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
		drm_framebuffer_put(fb);

	if (connector_set) {
		for (i = 0; i < crtc_req->count_connectors; i++) {
		for (i = 0; i < num_connectors; i++) {
			if (connector_set[i])
				drm_connector_put(connector_set[i]);
		}
Loading