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

Commit ef239801 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm/nv40: fall back to paged dma object for the moment
  drm/nouveau: fix leak of gart mm node
  drm/nouveau: fix vram page mapping when crossing page table boundaries
  drm/nv17-nv40: Fix modesetting failure when pitch == 4096px (fdo bug 35901).
  drm/nouveau: don't create accel engine objects when noaccel=1
  drm/nvc0: recognise 0xdX chipsets as NV_C0
  drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007
  drm/i915: Share the common force-audio property between connectors
  drm/i915: Remove unused enum "chip_family"
  drm/915: fix relaxed tiling on gen2: tile height
  drm/i915/crt: Explicitly return false if connected to a digital monitor
  drm/i915: Replace ironlake_compute_wm0 with g4x_compute_wm0
  drm/i915: Only print out the actual number of fences for i915_error_state
  drm/i915: s/addr & ~PAGE_MASK/offset_in_page(addr)/
  drm: i915: correct return status in intel_hdmi_mode_valid()
  drm/i915: fix regression after clock gating init split
  drm/i915: fix if statement in ivybridge irq handler
parents 12871a0b dcc32b83
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -776,7 +776,7 @@ static int i915_error_state(struct seq_file *m, void *unused)
	seq_printf(m, "  INSTPM: 0x%08x\n", error->instpm);
	seq_printf(m, "  INSTPM: 0x%08x\n", error->instpm);
	seq_printf(m, "  seqno: 0x%08x\n", error->seqno);
	seq_printf(m, "  seqno: 0x%08x\n", error->seqno);


	for (i = 0; i < 16; i++)
	for (i = 0; i < dev_priv->num_fence_regs; i++)
		seq_printf(m, "  fence[%d] = %08llx\n", i, error->fence[i]);
		seq_printf(m, "  fence[%d] = %08llx\n", i, error->fence[i]);


	if (error->active_bo)
	if (error->active_bo)
+1 −7
Original line number Original line Diff line number Diff line
@@ -716,6 +716,7 @@ typedef struct drm_i915_private {
	struct intel_fbdev *fbdev;
	struct intel_fbdev *fbdev;


	struct drm_property *broadcast_rgb_property;
	struct drm_property *broadcast_rgb_property;
	struct drm_property *force_audio_property;


	atomic_t forcewake_count;
	atomic_t forcewake_count;
} drm_i915_private_t;
} drm_i915_private_t;
@@ -909,13 +910,6 @@ struct drm_i915_file_private {
	} mm;
	} mm;
};
};


enum intel_chip_family {
	CHIP_I8XX = 0x01,
	CHIP_I9XX = 0x02,
	CHIP_I915 = 0x04,
	CHIP_I965 = 0x08,
};

#define INTEL_INFO(dev)	(((struct drm_i915_private *) (dev)->dev_private)->info)
#define INTEL_INFO(dev)	(((struct drm_i915_private *) (dev)->dev_private)->info)


#define IS_I830(dev)		((dev)->pci_device == 0x3577)
#define IS_I830(dev)		((dev)->pci_device == 0x3577)
+13 −13
Original line number Original line Diff line number Diff line
@@ -354,7 +354,7 @@ i915_gem_shmem_pread_fast(struct drm_device *dev,
		 * page_offset = offset within page
		 * page_offset = offset within page
		 * page_length = bytes to copy for this page
		 * page_length = bytes to copy for this page
		 */
		 */
		page_offset = offset & (PAGE_SIZE-1);
		page_offset = offset_in_page(offset);
		page_length = remain;
		page_length = remain;
		if ((page_offset + remain) > PAGE_SIZE)
		if ((page_offset + remain) > PAGE_SIZE)
			page_length = PAGE_SIZE - page_offset;
			page_length = PAGE_SIZE - page_offset;
@@ -453,9 +453,9 @@ i915_gem_shmem_pread_slow(struct drm_device *dev,
		 * data_page_offset = offset with data_page_index page.
		 * data_page_offset = offset with data_page_index page.
		 * page_length = bytes to copy for this page
		 * page_length = bytes to copy for this page
		 */
		 */
		shmem_page_offset = offset & ~PAGE_MASK;
		shmem_page_offset = offset_in_page(offset);
		data_page_index = data_ptr / PAGE_SIZE - first_data_page;
		data_page_index = data_ptr / PAGE_SIZE - first_data_page;
		data_page_offset = data_ptr & ~PAGE_MASK;
		data_page_offset = offset_in_page(data_ptr);


		page_length = remain;
		page_length = remain;
		if ((shmem_page_offset + page_length) > PAGE_SIZE)
		if ((shmem_page_offset + page_length) > PAGE_SIZE)
@@ -638,8 +638,8 @@ i915_gem_gtt_pwrite_fast(struct drm_device *dev,
		 * page_offset = offset within page
		 * page_offset = offset within page
		 * page_length = bytes to copy for this page
		 * page_length = bytes to copy for this page
		 */
		 */
		page_base = (offset & ~(PAGE_SIZE-1));
		page_base = offset & PAGE_MASK;
		page_offset = offset & (PAGE_SIZE-1);
		page_offset = offset_in_page(offset);
		page_length = remain;
		page_length = remain;
		if ((page_offset + remain) > PAGE_SIZE)
		if ((page_offset + remain) > PAGE_SIZE)
			page_length = PAGE_SIZE - page_offset;
			page_length = PAGE_SIZE - page_offset;
@@ -650,7 +650,6 @@ i915_gem_gtt_pwrite_fast(struct drm_device *dev,
		 */
		 */
		if (fast_user_write(dev_priv->mm.gtt_mapping, page_base,
		if (fast_user_write(dev_priv->mm.gtt_mapping, page_base,
				    page_offset, user_data, page_length))
				    page_offset, user_data, page_length))

			return -EFAULT;
			return -EFAULT;


		remain -= page_length;
		remain -= page_length;
@@ -730,9 +729,9 @@ i915_gem_gtt_pwrite_slow(struct drm_device *dev,
		 * page_length = bytes to copy for this page
		 * page_length = bytes to copy for this page
		 */
		 */
		gtt_page_base = offset & PAGE_MASK;
		gtt_page_base = offset & PAGE_MASK;
		gtt_page_offset = offset & ~PAGE_MASK;
		gtt_page_offset = offset_in_page(offset);
		data_page_index = data_ptr / PAGE_SIZE - first_data_page;
		data_page_index = data_ptr / PAGE_SIZE - first_data_page;
		data_page_offset = data_ptr & ~PAGE_MASK;
		data_page_offset = offset_in_page(data_ptr);


		page_length = remain;
		page_length = remain;
		if ((gtt_page_offset + page_length) > PAGE_SIZE)
		if ((gtt_page_offset + page_length) > PAGE_SIZE)
@@ -791,7 +790,7 @@ i915_gem_shmem_pwrite_fast(struct drm_device *dev,
		 * page_offset = offset within page
		 * page_offset = offset within page
		 * page_length = bytes to copy for this page
		 * page_length = bytes to copy for this page
		 */
		 */
		page_offset = offset & (PAGE_SIZE-1);
		page_offset = offset_in_page(offset);
		page_length = remain;
		page_length = remain;
		if ((page_offset + remain) > PAGE_SIZE)
		if ((page_offset + remain) > PAGE_SIZE)
			page_length = PAGE_SIZE - page_offset;
			page_length = PAGE_SIZE - page_offset;
@@ -896,9 +895,9 @@ i915_gem_shmem_pwrite_slow(struct drm_device *dev,
		 * data_page_offset = offset with data_page_index page.
		 * data_page_offset = offset with data_page_index page.
		 * page_length = bytes to copy for this page
		 * page_length = bytes to copy for this page
		 */
		 */
		shmem_page_offset = offset & ~PAGE_MASK;
		shmem_page_offset = offset_in_page(offset);
		data_page_index = data_ptr / PAGE_SIZE - first_data_page;
		data_page_index = data_ptr / PAGE_SIZE - first_data_page;
		data_page_offset = data_ptr & ~PAGE_MASK;
		data_page_offset = offset_in_page(data_ptr);


		page_length = remain;
		page_length = remain;
		if ((shmem_page_offset + page_length) > PAGE_SIZE)
		if ((shmem_page_offset + page_length) > PAGE_SIZE)
@@ -1450,8 +1449,9 @@ i915_gem_get_unfenced_gtt_alignment(struct drm_i915_gem_object *obj)
	 * edge of an even tile row (where tile rows are counted as if the bo is
	 * edge of an even tile row (where tile rows are counted as if the bo is
	 * placed in a fenced gtt region).
	 * placed in a fenced gtt region).
	 */
	 */
	if (IS_GEN2(dev) ||
	if (IS_GEN2(dev))
	    (obj->tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev)))
		tile_height = 16;
	else if (obj->tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev))
		tile_height = 32;
		tile_height = 32;
	else
	else
		tile_height = 8;
		tile_height = 8;
+1 −1
Original line number Original line Diff line number Diff line
@@ -517,7 +517,7 @@ irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
	if (de_iir & DE_PIPEA_VBLANK_IVB)
	if (de_iir & DE_PIPEA_VBLANK_IVB)
		drm_handle_vblank(dev, 0);
		drm_handle_vblank(dev, 0);


	if (de_iir & DE_PIPEB_VBLANK_IVB);
	if (de_iir & DE_PIPEB_VBLANK_IVB)
		drm_handle_vblank(dev, 1);
		drm_handle_vblank(dev, 1);


	/* check event from PCH */
	/* check event from PCH */
+4 −0
Original line number Original line Diff line number Diff line
@@ -288,6 +288,8 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
		 * This may be a DVI-I connector with a shared DDC
		 * This may be a DVI-I connector with a shared DDC
		 * link between analog and digital outputs, so we
		 * link between analog and digital outputs, so we
		 * have to check the EDID input spec of the attached device.
		 * have to check the EDID input spec of the attached device.
		 *
		 * On the other hand, what should we do if it is a broken EDID?
		 */
		 */
		if (edid != NULL) {
		if (edid != NULL) {
			is_digital = edid->input & DRM_EDID_INPUT_DIGITAL;
			is_digital = edid->input & DRM_EDID_INPUT_DIGITAL;
@@ -298,6 +300,8 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
		if (!is_digital) {
		if (!is_digital) {
			DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n");
			DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n");
			return true;
			return true;
		} else {
			DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
		}
		}
	}
	}


Loading