diff options
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_gmbus.c')
| -rw-r--r-- | drivers/gpu/drm/i915/display/intel_gmbus.c | 111 | 
1 files changed, 56 insertions, 55 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_gmbus.c b/drivers/gpu/drm/i915/display/intel_gmbus.c index 3d4d19ac1d14..1fd3a5a6296b 100644 --- a/drivers/gpu/drm/i915/display/intel_gmbus.c +++ b/drivers/gpu/drm/i915/display/intel_gmbus.c @@ -32,7 +32,6 @@  #include <linux/i2c.h>  #include <drm/drm_hdcp.h> -#include <drm/i915_drm.h>  #include "i915_drv.h"  #include "intel_display_types.h" @@ -143,8 +142,8 @@ to_intel_gmbus(struct i2c_adapter *i2c)  void  intel_gmbus_reset(struct drm_i915_private *dev_priv)  { -	I915_WRITE(GMBUS0, 0); -	I915_WRITE(GMBUS4, 0); +	intel_de_write(dev_priv, GMBUS0, 0); +	intel_de_write(dev_priv, GMBUS4, 0);  }  static void pnv_gmbus_clock_gating(struct drm_i915_private *dev_priv, @@ -153,12 +152,12 @@ static void pnv_gmbus_clock_gating(struct drm_i915_private *dev_priv,  	u32 val;  	/* When using bit bashing for I2C, this bit needs to be set to 1 */ -	val = I915_READ(DSPCLK_GATE_D); +	val = intel_de_read(dev_priv, DSPCLK_GATE_D);  	if (!enable)  		val |= PNV_GMBUSUNIT_CLOCK_GATE_DISABLE;  	else  		val &= ~PNV_GMBUSUNIT_CLOCK_GATE_DISABLE; -	I915_WRITE(DSPCLK_GATE_D, val); +	intel_de_write(dev_priv, DSPCLK_GATE_D, val);  }  static void pch_gmbus_clock_gating(struct drm_i915_private *dev_priv, @@ -166,12 +165,12 @@ static void pch_gmbus_clock_gating(struct drm_i915_private *dev_priv,  {  	u32 val; -	val = I915_READ(SOUTH_DSPCLK_GATE_D); +	val = intel_de_read(dev_priv, SOUTH_DSPCLK_GATE_D);  	if (!enable)  		val |= PCH_GMBUSUNIT_CLOCK_GATE_DISABLE;  	else  		val &= ~PCH_GMBUSUNIT_CLOCK_GATE_DISABLE; -	I915_WRITE(SOUTH_DSPCLK_GATE_D, val); +	intel_de_write(dev_priv, SOUTH_DSPCLK_GATE_D, val);  }  static void bxt_gmbus_clock_gating(struct drm_i915_private *dev_priv, @@ -179,12 +178,12 @@ static void bxt_gmbus_clock_gating(struct drm_i915_private *dev_priv,  {  	u32 val; -	val = I915_READ(GEN9_CLKGATE_DIS_4); +	val = intel_de_read(dev_priv, GEN9_CLKGATE_DIS_4);  	if (!enable)  		val |= BXT_GMBUS_GATING_DIS;  	else  		val &= ~BXT_GMBUS_GATING_DIS; -	I915_WRITE(GEN9_CLKGATE_DIS_4, val); +	intel_de_write(dev_priv, GEN9_CLKGATE_DIS_4, val);  }  static u32 get_reserved(struct intel_gmbus *bus) @@ -337,14 +336,16 @@ static int gmbus_wait(struct drm_i915_private *dev_priv, u32 status, u32 irq_en)  		irq_en = 0;  	add_wait_queue(&dev_priv->gmbus_wait_queue, &wait); -	I915_WRITE_FW(GMBUS4, irq_en); +	intel_de_write_fw(dev_priv, GMBUS4, irq_en);  	status |= GMBUS_SATOER; -	ret = wait_for_us((gmbus2 = I915_READ_FW(GMBUS2)) & status, 2); +	ret = wait_for_us((gmbus2 = intel_de_read_fw(dev_priv, GMBUS2)) & status, +			  2);  	if (ret) -		ret = wait_for((gmbus2 = I915_READ_FW(GMBUS2)) & status, 50); +		ret = wait_for((gmbus2 = intel_de_read_fw(dev_priv, GMBUS2)) & status, +			       50); -	I915_WRITE_FW(GMBUS4, 0); +	intel_de_write_fw(dev_priv, GMBUS4, 0);  	remove_wait_queue(&dev_priv->gmbus_wait_queue, &wait);  	if (gmbus2 & GMBUS_SATOER) @@ -366,13 +367,13 @@ gmbus_wait_idle(struct drm_i915_private *dev_priv)  		irq_enable = GMBUS_IDLE_EN;  	add_wait_queue(&dev_priv->gmbus_wait_queue, &wait); -	I915_WRITE_FW(GMBUS4, irq_enable); +	intel_de_write_fw(dev_priv, GMBUS4, irq_enable);  	ret = intel_wait_for_register_fw(&dev_priv->uncore,  					 GMBUS2, GMBUS_ACTIVE, 0,  					 10); -	I915_WRITE_FW(GMBUS4, 0); +	intel_de_write_fw(dev_priv, GMBUS4, 0);  	remove_wait_queue(&dev_priv->gmbus_wait_queue, &wait);  	return ret; @@ -404,15 +405,12 @@ gmbus_xfer_read_chunk(struct drm_i915_private *dev_priv,  			len++;  		}  		size = len % 256 + 256; -		I915_WRITE_FW(GMBUS0, gmbus0_reg | GMBUS_BYTE_CNT_OVERRIDE); +		intel_de_write_fw(dev_priv, GMBUS0, +				  gmbus0_reg | GMBUS_BYTE_CNT_OVERRIDE);  	} -	I915_WRITE_FW(GMBUS1, -		      gmbus1_index | -		      GMBUS_CYCLE_WAIT | -		      (size << GMBUS_BYTE_COUNT_SHIFT) | -		      (addr << GMBUS_SLAVE_ADDR_SHIFT) | -		      GMBUS_SLAVE_READ | GMBUS_SW_RDY); +	intel_de_write_fw(dev_priv, GMBUS1, +			  gmbus1_index | GMBUS_CYCLE_WAIT | (size << GMBUS_BYTE_COUNT_SHIFT) | (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_READ | GMBUS_SW_RDY);  	while (len) {  		int ret;  		u32 val, loop = 0; @@ -421,7 +419,7 @@ gmbus_xfer_read_chunk(struct drm_i915_private *dev_priv,  		if (ret)  			return ret; -		val = I915_READ_FW(GMBUS3); +		val = intel_de_read_fw(dev_priv, GMBUS3);  		do {  			if (extra_byte_added && len == 1)  				break; @@ -432,7 +430,7 @@ gmbus_xfer_read_chunk(struct drm_i915_private *dev_priv,  		if (burst_read && len == size - 4)  			/* Reset the override bit */ -			I915_WRITE_FW(GMBUS0, gmbus0_reg); +			intel_de_write_fw(dev_priv, GMBUS0, gmbus0_reg);  	}  	return 0; @@ -489,12 +487,9 @@ gmbus_xfer_write_chunk(struct drm_i915_private *dev_priv,  		len -= 1;  	} -	I915_WRITE_FW(GMBUS3, val); -	I915_WRITE_FW(GMBUS1, -		      gmbus1_index | GMBUS_CYCLE_WAIT | -		      (chunk_size << GMBUS_BYTE_COUNT_SHIFT) | -		      (addr << GMBUS_SLAVE_ADDR_SHIFT) | -		      GMBUS_SLAVE_WRITE | GMBUS_SW_RDY); +	intel_de_write_fw(dev_priv, GMBUS3, val); +	intel_de_write_fw(dev_priv, GMBUS1, +			  gmbus1_index | GMBUS_CYCLE_WAIT | (chunk_size << GMBUS_BYTE_COUNT_SHIFT) | (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_WRITE | GMBUS_SW_RDY);  	while (len) {  		int ret; @@ -503,7 +498,7 @@ gmbus_xfer_write_chunk(struct drm_i915_private *dev_priv,  			val |= *buf++ << (8 * loop);  		} while (--len && ++loop < 4); -		I915_WRITE_FW(GMBUS3, val); +		intel_de_write_fw(dev_priv, GMBUS3, val);  		ret = gmbus_wait(dev_priv, GMBUS_HW_RDY, GMBUS_HW_RDY_EN);  		if (ret) @@ -568,7 +563,7 @@ gmbus_index_xfer(struct drm_i915_private *dev_priv, struct i2c_msg *msgs,  	/* GMBUS5 holds 16-bit index */  	if (gmbus5) -		I915_WRITE_FW(GMBUS5, gmbus5); +		intel_de_write_fw(dev_priv, GMBUS5, gmbus5);  	if (msgs[1].flags & I2C_M_RD)  		ret = gmbus_xfer_read(dev_priv, &msgs[1], gmbus0_reg, @@ -578,7 +573,7 @@ gmbus_index_xfer(struct drm_i915_private *dev_priv, struct i2c_msg *msgs,  	/* Clear GMBUS5 after each index transfer */  	if (gmbus5) -		I915_WRITE_FW(GMBUS5, 0); +		intel_de_write_fw(dev_priv, GMBUS5, 0);  	return ret;  } @@ -601,7 +596,7 @@ do_gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num,  		pch_gmbus_clock_gating(dev_priv, false);  retry: -	I915_WRITE_FW(GMBUS0, gmbus0_source | bus->reg0); +	intel_de_write_fw(dev_priv, GMBUS0, gmbus0_source | bus->reg0);  	for (; i < num; i += inc) {  		inc = 1; @@ -629,18 +624,19 @@ retry:  	 * a STOP on the very first cycle. To simplify the code we  	 * unconditionally generate the STOP condition with an additional gmbus  	 * cycle. */ -	I915_WRITE_FW(GMBUS1, GMBUS_CYCLE_STOP | GMBUS_SW_RDY); +	intel_de_write_fw(dev_priv, GMBUS1, GMBUS_CYCLE_STOP | GMBUS_SW_RDY);  	/* Mark the GMBUS interface as disabled after waiting for idle.  	 * We will re-enable it at the start of the next xfer,  	 * till then let it sleep.  	 */  	if (gmbus_wait_idle(dev_priv)) { -		DRM_DEBUG_KMS("GMBUS [%s] timed out waiting for idle\n", -			 adapter->name); +		drm_dbg_kms(&dev_priv->drm, +			    "GMBUS [%s] timed out waiting for idle\n", +			    adapter->name);  		ret = -ETIMEDOUT;  	} -	I915_WRITE_FW(GMBUS0, 0); +	intel_de_write_fw(dev_priv, GMBUS0, 0);  	ret = ret ?: i;  	goto out; @@ -660,8 +656,9 @@ clear_err:  	 */  	ret = -ENXIO;  	if (gmbus_wait_idle(dev_priv)) { -		DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", -			      adapter->name); +		drm_dbg_kms(&dev_priv->drm, +			    "GMBUS [%s] timed out after NAK\n", +			    adapter->name);  		ret = -ETIMEDOUT;  	} @@ -669,13 +666,13 @@ clear_err:  	 * of resetting the GMBUS controller and so clearing the  	 * BUS_ERROR raised by the slave's NAK.  	 */ -	I915_WRITE_FW(GMBUS1, GMBUS_SW_CLR_INT); -	I915_WRITE_FW(GMBUS1, 0); -	I915_WRITE_FW(GMBUS0, 0); +	intel_de_write_fw(dev_priv, GMBUS1, GMBUS_SW_CLR_INT); +	intel_de_write_fw(dev_priv, GMBUS1, 0); +	intel_de_write_fw(dev_priv, GMBUS0, 0); -	DRM_DEBUG_KMS("GMBUS [%s] NAK for addr: %04x %c(%d)\n", -			 adapter->name, msgs[i].addr, -			 (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len); +	drm_dbg_kms(&dev_priv->drm, "GMBUS [%s] NAK for addr: %04x %c(%d)\n", +		    adapter->name, msgs[i].addr, +		    (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len);  	/*  	 * Passive adapters sometimes NAK the first probe. Retry the first @@ -684,17 +681,19 @@ clear_err:  	 * drm_do_probe_ddc_edid, which bails out on the first -ENXIO.  	 */  	if (ret == -ENXIO && i == 0 && try++ == 0) { -		DRM_DEBUG_KMS("GMBUS [%s] NAK on first message, retry\n", -			      adapter->name); +		drm_dbg_kms(&dev_priv->drm, +			    "GMBUS [%s] NAK on first message, retry\n", +			    adapter->name);  		goto retry;  	}  	goto out;  timeout: -	DRM_DEBUG_KMS("GMBUS [%s] timed out, falling back to bit banging on pin %d\n", -		      bus->adapter.name, bus->reg0 & 0xff); -	I915_WRITE_FW(GMBUS0, 0); +	drm_dbg_kms(&dev_priv->drm, +		    "GMBUS [%s] timed out, falling back to bit banging on pin %d\n", +		    bus->adapter.name, bus->reg0 & 0xff); +	intel_de_write_fw(dev_priv, GMBUS0, 0);  	/*  	 * Hardware may not support GMBUS over these pins? Try GPIO bitbanging @@ -908,7 +907,8 @@ err:  struct i2c_adapter *intel_gmbus_get_adapter(struct drm_i915_private *dev_priv,  					    unsigned int pin)  { -	if (WARN_ON(!intel_gmbus_is_valid_pin(dev_priv, pin))) +	if (drm_WARN_ON(&dev_priv->drm, +			!intel_gmbus_is_valid_pin(dev_priv, pin)))  		return NULL;  	return &dev_priv->gmbus[pin].adapter; @@ -929,9 +929,10 @@ void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit)  	mutex_lock(&dev_priv->gmbus_mutex);  	bus->force_bit += force_bit ? 1 : -1; -	DRM_DEBUG_KMS("%sabling bit-banging on %s. force bit now %d\n", -		      force_bit ? "en" : "dis", adapter->name, -		      bus->force_bit); +	drm_dbg_kms(&dev_priv->drm, +		    "%sabling bit-banging on %s. force bit now %d\n", +		    force_bit ? "en" : "dis", adapter->name, +		    bus->force_bit);  	mutex_unlock(&dev_priv->gmbus_mutex);  }  | 
