Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c163b524 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
 "Exynos, i915 and msm fixes and one core fix.

  exynos:
     hdmi power off and mixer issues

  msm:
     iommu, build fixes,

  i915:
     regression races and warning fixes"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (22 commits)
  drm/i915: vlv_prepare_pll is only needed in case of non DSI interfaces
  drm: fix NULL pointer access by wrong ioctl
  drm/exynos: enable vsync interrupt while waiting for vblank
  drm/exynos: soft reset mixer before reconfigure after power-on
  drm/exynos: allow multiple layer updates per vsync for mixer
  drm/i915: Hold the table lock whilst walking the file's idr and counting the objects in debugfs
  drm/i915: BDW: Adding Reserved PCI IDs.
  drm/i915: Only mark the ctx as initialised after a SET_CONTEXT operation
  drm/exynos: stop mixer before gating clocks during poweroff
  drm/exynos: set power state variable after enabling clocks and power
  drm/exynos: disable unused windows on apply
  drm/exynos: Fix de-registration ordering
  drm/exynos: change zero to NULL for sparse
  drm/exynos: dpi: Fix NULL pointer dereference with legacy bindings
  drm/exynos: hdmi: fix power order issue
  drm/i915: default to having backlight if VBT not available
  drm/i915: cache hw power well enabled state
  drm/msm: fix IOMMU cleanup for -EPROBE_DEFER
  drm/msm: use PAGE_ALIGNED instead of IS_ALIGNED(PAGE_SIZE)
  drm/msm/hdmi: set hdp clock rate before prepare_enable
  ...
parents 3493860c 0fcb70c3
Loading
Loading
Loading
Loading

drivers/gpu/drm/drm_drv.c

100644 → 100755
+2 −1
Original line number Original line Diff line number Diff line
@@ -419,8 +419,9 @@ long drm_ioctl(struct file *filp,
			retcode = -EFAULT;
			retcode = -EFAULT;
			goto err_i1;
			goto err_i1;
		}
		}
	} else
	} else if (cmd & IOC_OUT) {
		memset(kdata, 0, usize);
		memset(kdata, 0, usize);
	}


	if (ioctl->flags & DRM_UNLOCKED)
	if (ioctl->flags & DRM_UNLOCKED)
		retcode = func(dev, kdata, file_priv);
		retcode = func(dev, kdata, file_priv);
+1 −1
Original line number Original line Diff line number Diff line
@@ -40,7 +40,7 @@ exynos_dpi_detect(struct drm_connector *connector, bool force)
{
{
	struct exynos_dpi *ctx = connector_to_dpi(connector);
	struct exynos_dpi *ctx = connector_to_dpi(connector);


	if (!ctx->panel->connector)
	if (ctx->panel && !ctx->panel->connector)
		drm_panel_attach(ctx->panel, &ctx->connector);
		drm_panel_attach(ctx->panel, &ctx->connector);


	return connector_status_connected;
	return connector_status_connected;
+4 −4
Original line number Original line Diff line number Diff line
@@ -765,24 +765,24 @@ static int exynos_drm_init(void)


	return 0;
	return 0;


err_unregister_pd:
	platform_device_unregister(exynos_drm_pdev);

err_remove_vidi:
err_remove_vidi:
#ifdef CONFIG_DRM_EXYNOS_VIDI
#ifdef CONFIG_DRM_EXYNOS_VIDI
	exynos_drm_remove_vidi();
	exynos_drm_remove_vidi();

err_unregister_pd:
#endif
#endif
	platform_device_unregister(exynos_drm_pdev);


	return ret;
	return ret;
}
}


static void exynos_drm_exit(void)
static void exynos_drm_exit(void)
{
{
	platform_driver_unregister(&exynos_drm_platform_driver);
#ifdef CONFIG_DRM_EXYNOS_VIDI
#ifdef CONFIG_DRM_EXYNOS_VIDI
	exynos_drm_remove_vidi();
	exynos_drm_remove_vidi();
#endif
#endif
	platform_device_unregister(exynos_drm_pdev);
	platform_device_unregister(exynos_drm_pdev);
	platform_driver_unregister(&exynos_drm_platform_driver);
}
}


module_init(exynos_drm_init);
module_init(exynos_drm_init);
+1 −1
Original line number Original line Diff line number Diff line
@@ -343,7 +343,7 @@ struct exynos_drm_display * exynos_dpi_probe(struct device *dev);
int exynos_dpi_remove(struct device *dev);
int exynos_dpi_remove(struct device *dev);
#else
#else
static inline struct exynos_drm_display *
static inline struct exynos_drm_display *
exynos_dpi_probe(struct device *dev) { return 0; }
exynos_dpi_probe(struct device *dev) { return NULL; }
static inline int exynos_dpi_remove(struct device *dev) { return 0; }
static inline int exynos_dpi_remove(struct device *dev) { return 0; }
#endif
#endif


+2 −0
Original line number Original line Diff line number Diff line
@@ -741,6 +741,8 @@ static void fimd_apply(struct exynos_drm_manager *mgr)
		win_data = &ctx->win_data[i];
		win_data = &ctx->win_data[i];
		if (win_data->enabled)
		if (win_data->enabled)
			fimd_win_commit(mgr, i);
			fimd_win_commit(mgr, i);
		else
			fimd_win_disable(mgr, i);
	}
	}


	fimd_commit(mgr);
	fimd_commit(mgr);
Loading