|
@@ -3453,6 +3453,32 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
|
|
#define POSTING_READ(reg) (void)I915_READ_NOTRACE(reg)
|
|
|
#define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg)
|
|
|
|
|
|
+#define __raw_read(x, s) \
|
|
|
+static inline uint##x##_t __raw_i915_read##x(struct drm_i915_private *dev_priv, \
|
|
|
+ uint32_t reg) \
|
|
|
+{ \
|
|
|
+ return read##s(dev_priv->regs + reg); \
|
|
|
+}
|
|
|
+
|
|
|
+#define __raw_write(x, s) \
|
|
|
+static inline void __raw_i915_write##x(struct drm_i915_private *dev_priv, \
|
|
|
+ uint32_t reg, uint##x##_t val) \
|
|
|
+{ \
|
|
|
+ write##s(val, dev_priv->regs + reg); \
|
|
|
+}
|
|
|
+__raw_read(8, b)
|
|
|
+__raw_read(16, w)
|
|
|
+__raw_read(32, l)
|
|
|
+__raw_read(64, q)
|
|
|
+
|
|
|
+__raw_write(8, b)
|
|
|
+__raw_write(16, w)
|
|
|
+__raw_write(32, l)
|
|
|
+__raw_write(64, q)
|
|
|
+
|
|
|
+#undef __raw_read
|
|
|
+#undef __raw_write
|
|
|
+
|
|
|
/* These are untraced mmio-accessors that are only valid to be used inside
|
|
|
* criticial sections inside IRQ handlers where forcewake is explicitly
|
|
|
* controlled.
|
|
@@ -3460,8 +3486,8 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
|
|
* Note: Should only be used between intel_uncore_forcewake_irqlock() and
|
|
|
* intel_uncore_forcewake_irqunlock().
|
|
|
*/
|
|
|
-#define I915_READ_FW(reg__) readl(dev_priv->regs + (reg__))
|
|
|
-#define I915_WRITE_FW(reg__, val__) writel(val__, dev_priv->regs + (reg__))
|
|
|
+#define I915_READ_FW(reg__) __raw_i915_read32(dev_priv, (reg__))
|
|
|
+#define I915_WRITE_FW(reg__, val__) __raw_i915_write32(dev_priv, (reg__), (val__))
|
|
|
#define POSTING_READ_FW(reg__) (void)I915_READ_FW(reg__)
|
|
|
|
|
|
/* "Broadcast RGB" property */
|