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

Commit 3bf7706b 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:
 "Mostly intel and radeon fixes, one tda998x, one kconfig dep fix and
  two more MAINTAINERS updates,

  All pretty run of the mill for this stage"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/radeon/atom: select the proper number of lanes in transmitter setup
  MAINTAINERS: add maintainer entry for TDA998x driver
  drm: fix bochs kconfig dependencies
  drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters
  drm/radeon/cik: fix typo in documentation
  drm/radeon: silence GCC warning on 32 bit
  drm/radeon: resume old pm late
  drm/radeon: TTM must be init with cpu-visible VRAM, v2
  DRM: armada: fix use of kfifo_put()
  drm/i915: Reject >165MHz modes w/ DVI monitors
  drm/i915: fix assert_cursor on BDW
  drm/i915: vlv: reserve GT power context early
  drm/i915: fix pch pci device enumeration
  drm/i915: Resolving the memory region conflict for Stolen area
  drm/i915: use backlight legacy combination mode also for i915gm/i945gm
  MAINTAINERS: update AGP tree to point at drm tree
parents 2a75184d 45db98e5
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -474,7 +474,7 @@ F: net/rxrpc/af_rxrpc.c

AGPGART DRIVER
M:	David Airlie <airlied@linux.ie>
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
T:	git git://people.freedesktop.org/~airlied/linux (part of drm maint)
S:	Maintained
F:	drivers/char/agp/
F:	include/linux/agp*
@@ -6175,6 +6175,12 @@ S: Supported
F:	drivers/block/nvme*
F:	include/linux/nvme.h

NXP TDA998X DRM DRIVER
M:	Russell King <rmk+kernel@arm.linux.org.uk>
S:	Supported
F:	drivers/gpu/drm/i2c/tda998x_drv.c
F:	include/drm/i2c/tda998x.h

OMAP SUPPORT
M:	Tony Lindgren <tony@atomide.com>
L:	linux-omap@vger.kernel.org
+1 −9
Original line number Diff line number Diff line
@@ -68,15 +68,7 @@ void __armada_drm_queue_unref_work(struct drm_device *dev,
{
	struct armada_private *priv = dev->dev_private;

	/*
	 * Yes, we really must jump through these hoops just to store a
	 * _pointer_ to something into the kfifo.  This is utterly insane
	 * and idiotic, because it kfifo requires the _data_ pointed to by
	 * the pointer const, not the pointer itself.  Not only that, but
	 * you have to pass a pointer _to_ the pointer you want stored.
	 */
	const struct drm_framebuffer *silly_api_alert = fb;
	WARN_ON(!kfifo_put(&priv->fb_unref, &silly_api_alert));
	WARN_ON(!kfifo_put(&priv->fb_unref, fb));
	schedule_work(&priv->fb_unref_work);
}

+1 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ config DRM_BOCHS
	tristate "DRM Support for bochs dispi vga interface (qemu stdvga)"
	depends on DRM && PCI
	select DRM_KMS_HELPER
	select DRM_KMS_FB_HELPER
	select FB_SYS_FILLRECT
	select FB_SYS_COPYAREA
	select FB_SYS_IMAGEBLIT
+9 −14
Original line number Diff line number Diff line
@@ -403,7 +403,7 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
void intel_detect_pch(struct drm_device *dev)
{
	struct drm_i915_private *dev_priv = dev->dev_private;
	struct pci_dev *pch;
	struct pci_dev *pch = NULL;

	/* In all current cases, num_pipes is equivalent to the PCH_NOP setting
	 * (which really amounts to a PCH but no South Display).
@@ -424,12 +424,9 @@ void intel_detect_pch(struct drm_device *dev)
	 * all the ISA bridge devices and check for the first match, instead
	 * of only checking the first one.
	 */
	pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL);
	while (pch) {
		struct pci_dev *curr = pch;
	while ((pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, pch))) {
		if (pch->vendor == PCI_VENDOR_ID_INTEL) {
			unsigned short id;
			id = pch->device & INTEL_PCH_DEVICE_ID_MASK;
			unsigned short id = pch->device & INTEL_PCH_DEVICE_ID_MASK;
			dev_priv->pch_id = id;

			if (id == INTEL_PCH_IBX_DEVICE_ID_TYPE) {
@@ -461,18 +458,16 @@ void intel_detect_pch(struct drm_device *dev)
				DRM_DEBUG_KMS("Found LynxPoint LP PCH\n");
				WARN_ON(!IS_HASWELL(dev));
				WARN_ON(!IS_ULT(dev));
			} else {
				goto check_next;
			}
			pci_dev_put(pch);
			} else
				continue;

			break;
		}
check_next:
		pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, curr);
		pci_dev_put(curr);
	}
	if (!pch)
		DRM_DEBUG_KMS("No PCH found?\n");
		DRM_DEBUG_KMS("No PCH found.\n");

	pci_dev_put(pch);
}

bool i915_semaphore_is_enabled(struct drm_device *dev)
+16 −3
Original line number Diff line number Diff line
@@ -81,11 +81,24 @@ static unsigned long i915_stolen_to_physical(struct drm_device *dev)
	 */
	r = devm_request_mem_region(dev->dev, base, dev_priv->gtt.stolen_size,
				    "Graphics Stolen Memory");
	if (r == NULL) {
		/*
		 * One more attempt but this time requesting region from
		 * base + 1, as we have seen that this resolves the region
		 * conflict with the PCI Bus.
		 * This is a BIOS w/a: Some BIOS wrap stolen in the root
		 * PCI bus, but have an off-by-one error. Hence retry the
		 * reservation starting from 1 instead of 0.
		 */
		r = devm_request_mem_region(dev->dev, base + 1,
					    dev_priv->gtt.stolen_size - 1,
					    "Graphics Stolen Memory");
		if (r == NULL) {
			DRM_ERROR("conflict detected with stolen region: [0x%08x - 0x%08x]\n",
				  base, base + (uint32_t)dev_priv->gtt.stolen_size);
			base = 0;
		}
	}

	return base;
}
Loading