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

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

Merge tag 'drm-intel-next-2012-03-01' of...

Merge tag 'drm-intel-next-2012-03-01' of git://people.freedesktop.org/~danvet/drm-intel into drm-next

* tag 'drm-intel-next-2012-03-01' of git://people.freedesktop.org/~danvet/drm-intel:
  drm/i915: Only clear the GPU domains upon a successful finish
  drm/i915: reenable gmbus on gen3+ again
  drm/i915: i2c: unconditionally set up gpio fallback
  drm/i915: merge gmbus and gpio i2c adpater into one
  drm/i915: merge struct intel_gpio into struct intel_gmbus
  i2c: export bit-banging algo functions
  drm/nouveau: do a better job at hiding the NIH i2c bit-banging algo
  drm/i915: add dev_priv to intel_gmbus
  drm/i915: Fix single msg gmbus_xfers writes
  drm/i915: error_buffer->ring should be signed
  drm/i915: Silence the error message from i915_wait_request()
  drm/i915: use the new hdmi_force_audio enum more
  drm/i915: No need to search again after retiring requests
  drm/i915: Only bump refcnt on objects scheduled for eviction
  drm/i915/bios: Downgrade the "signature missing" DRM_ERROR to debug
  drm/i915: Ignore LVDS on hp t5745 and hp st5747 thin client
  drm/i915: Fixes distorted external screen image on HP 2730p
parents 654c59cf c501ae7f
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include "intel_ringbuffer.h"
#include <linux/io-mapping.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <drm/intel-gtt.h>
#include <linux/backlight.h>

@@ -199,7 +200,7 @@ struct drm_i915_error_state {
		u32 tiling:2;
		u32 dirty:1;
		u32 purgeable:1;
		u32 ring:4;
		s32 ring:4;
		u32 cache_level:2;
	} *active_bo, *pinned_bo;
	u32 active_bo_count, pinned_bo_count;
@@ -298,6 +299,16 @@ enum intel_pch {
struct intel_fbdev;
struct intel_fbc_work;

struct intel_gmbus {
	struct i2c_adapter adapter;
	bool force_bit;
	bool has_gpio;
	u32 reg0;
	u32 gpio_reg;
	struct i2c_algo_bit_data bit_algo;
	struct drm_i915_private *dev_priv;
};

typedef struct drm_i915_private {
	struct drm_device *dev;

@@ -315,11 +326,7 @@ typedef struct drm_i915_private {
	/** gt_lock is also taken in irq contexts. */
	struct spinlock gt_lock;

	struct intel_gmbus {
		struct i2c_adapter adapter;
		struct i2c_adapter *force_bit;
		u32 reg0;
	} *gmbus;
	struct intel_gmbus *gmbus;

	/** gmbus_mutex protects against concurrent usage of the single hw gmbus
	 * controller on different i2c buses. */
+5 −7
Original line number Diff line number Diff line
@@ -1985,11 +1985,6 @@ i915_wait_request(struct intel_ring_buffer *ring,
	if (atomic_read(&dev_priv->mm.wedged))
		ret = -EAGAIN;

	if (ret && ret != -ERESTARTSYS)
		DRM_ERROR("%s returns %d (awaiting %d at %d, next %d)\n",
			  __func__, ret, seqno, ring->get_seqno(ring),
			  dev_priv->next_seqno);

	/* Directly dispatch request retiring.  While we have the work queue
	 * to handle this, the waiter on a request often wants an associated
	 * buffer to have made it to the inactive list, and we would need
@@ -3069,10 +3064,13 @@ i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj)
			return ret;
	}

	ret = i915_gem_object_wait_rendering(obj);
	if (ret)
		return ret;

	/* Ensure that we invalidate the GPU's caches and TLBs. */
	obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS;

	return i915_gem_object_wait_rendering(obj);
	return 0;
}

/**
+1 −18
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ static bool
mark_free(struct drm_i915_gem_object *obj, struct list_head *unwind)
{
	list_add(&obj->exec_list, unwind);
	drm_gem_object_reference(&obj->base);
	return drm_mm_scan_add_block(obj->gtt_space);
}

@@ -49,21 +48,6 @@ i915_gem_evict_something(struct drm_device *dev, int min_size,
	struct drm_i915_gem_object *obj;
	int ret = 0;

	i915_gem_retire_requests(dev);

	/* Re-check for free space after retiring requests */
	if (mappable) {
		if (drm_mm_search_free_in_range(&dev_priv->mm.gtt_space,
						min_size, alignment, 0,
						dev_priv->mm.gtt_mappable_end,
						0))
			return 0;
	} else {
		if (drm_mm_search_free(&dev_priv->mm.gtt_space,
				       min_size, alignment, 0))
			return 0;
	}

	trace_i915_gem_evict(dev, min_size, alignment, mappable);

	/*
@@ -139,7 +123,6 @@ i915_gem_evict_something(struct drm_device *dev, int min_size,
		BUG_ON(ret);

		list_del_init(&obj->exec_list);
		drm_gem_object_unreference(&obj->base);
	}

	/* We expect the caller to unpin, evict all and try again, or give up.
@@ -158,10 +141,10 @@ found:
				       exec_list);
		if (drm_mm_scan_remove_block(obj->gtt_space)) {
			list_move(&obj->exec_list, &eviction_list);
			drm_gem_object_reference(&obj->base);
			continue;
		}
		list_del_init(&obj->exec_list);
		drm_gem_object_unreference(&obj->base);
	}

	/* Unbinding will emit any required flushes */
+1 −1
Original line number Diff line number Diff line
@@ -669,7 +669,7 @@ intel_parse_bios(struct drm_device *dev)
		}

		if (!vbt) {
			DRM_ERROR("VBT signature missing\n");
			DRM_DEBUG_DRIVER("VBT signature missing\n");
			pci_unmap_rom(pdev, bios);
			return -1;
		}
+0 −2
Original line number Diff line number Diff line
@@ -9049,8 +9049,6 @@ struct intel_quirk {
};

struct intel_quirk intel_quirks[] = {
	/* HP Compaq 2730p needs pipe A force quirk (LP: #291555) */
	{ 0x2a42, 0x103c, 0x30eb, quirk_pipea_force },
	/* HP Mini needs pipe A force quirk (LP: #322104) */
	{ 0x27ae, 0x103c, 0x361a, quirk_pipea_force },

Loading