Commit d0af6988 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:
 "This is made up 4 groups of fixes detailed below.

  vgem:
      Due to some misgivings about possible bad use cases this allow,
      backout a chunk of the interface to stop those use cases for now.

  radeon:
      Fix for an oops regression in the audio code, and a partial revert
      for a fix that was cauing problems.

  nouveau:
      regression fix for Fermi, and display-less Maxwell boot fixes.

  drm core:
      a fix for i915 cursor vblank waiting in the atomic helpers"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/nouveau/gr/gm204: remove a stray printk
  drm/nouveau/devinit/gm100-: force devinit table execution on boards without PDISP
  drm/nouveau/devinit/gf100: make the force-post condition more obvious
  drm/nouveau/gr/gf100-: fix wrong constant definition
  drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling"
  drm/radeon/audio: make sure connector is valid in hotplug case
  Revert "drm/radeon: only mark audio as connected if the monitor supports it (v3)"
  drm/radeon: don't share plls if monitors differ in audio support
  drm/vgem: drop DRIVER_PRIME (v2)
  drm/plane-helper: Adapt cursor hack to transitional helpers
parents 70946b5d 1fe71420
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -465,6 +465,9 @@ int drm_plane_helper_commit(struct drm_plane *plane,
		if (!crtc[i])
			continue;

		if (crtc[i]->cursor == plane)
			continue;

		/* There's no other way to figure out whether the crtc is running. */
		ret = drm_crtc_vblank_get(crtc[i]);
		if (ret == 0) {
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@

#define FERMI_TWOD_A                                                 0x0000902d

#define FERMI_MEMORY_TO_MEMORY_FORMAT_A                              0x0000903d
#define FERMI_MEMORY_TO_MEMORY_FORMAT_A                              0x00009039

#define KEPLER_INLINE_TO_MEMORY_A                                    0x0000a040
#define KEPLER_INLINE_TO_MEMORY_B                                    0x0000a140
+0 −1
Original line number Diff line number Diff line
@@ -329,7 +329,6 @@ gm204_gr_init(struct nvkm_object *object)
	nv_mask(priv, 0x419cc0, 0x00000008, 0x00000008);

	for (gpc = 0; gpc < priv->gpc_nr; gpc++) {
	printk(KERN_ERR "ppc %d %d\n", gpc, priv->ppc_nr[gpc]);
		for (ppc = 0; ppc < priv->ppc_nr[gpc]; ppc++)
			nv_wr32(priv, PPC_UNIT(gpc, ppc, 0x038), 0xc0000000);
		nv_wr32(priv, GPC_UNIT(gpc, 0x0420), 0xc0000000);
+5 −2
Original line number Diff line number Diff line
@@ -90,12 +90,14 @@ gf100_devinit_disable(struct nvkm_devinit *devinit)
	return disable;
}

static int
int
gf100_devinit_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
		   struct nvkm_oclass *oclass, void *data, u32 size,
		   struct nvkm_object **pobject)
{
	struct nvkm_devinit_impl *impl = (void *)oclass;
	struct nv50_devinit_priv *priv;
	u64 disable;
	int ret;

	ret = nvkm_devinit_create(parent, engine, oclass, &priv);
@@ -103,7 +105,8 @@ gf100_devinit_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	if (ret)
		return ret;

	if (nv_rd32(priv, 0x022500) & 0x00000001)
	disable = impl->disable(&priv->base);
	if (disable & (1ULL << NVDEV_ENGINE_DISP))
		priv->base.post = true;

	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ struct nvkm_oclass *
gm107_devinit_oclass = &(struct nvkm_devinit_impl) {
	.base.handle = NV_SUBDEV(DEVINIT, 0x07),
	.base.ofuncs = &(struct nvkm_ofuncs) {
		.ctor = nv50_devinit_ctor,
		.ctor = gf100_devinit_ctor,
		.dtor = _nvkm_devinit_dtor,
		.init = nv50_devinit_init,
		.fini = _nvkm_devinit_fini,
Loading