From: Ville Syrjälä <[email protected]>

In order to eliminate runtime platform check overhead from
the mmio read/write functions, we'll need a good way to construct
optimal variants for each platform. Do that in the form of
__intel_de_{read,write}() that can be customized via (compile time
constnt) mmio_flags. The compiler will eliminate all the stuff
we don't want.

For now there is nothing to eliminate but next we'll start
moving more stuff in to make that possible.

Signed-off-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_de.c | 26 +++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_de.c 
b/drivers/gpu/drm/i915/display/intel_de.c
index 4f423a684ec2..cde2886fe2ca 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -163,16 +163,38 @@ u16 intel_de_read16(struct intel_display *display, 
intel_reg_t reg)
        return intel_uncore_read16(__to_uncore(display), reg);
 }
 
+static __always_inline u32
+__intel_de_read(struct intel_display *display, intel_reg_t reg,
+               const unsigned int mmio_flags)
+{
+       u32 val;
+
+       val = intel_uncore_read(__to_uncore(display), reg);
+
+       return val;
+}
+
+static __always_inline void
+__intel_de_write(struct intel_display *display, intel_reg_t reg, u32 val,
+                const unsigned int mmio_flags)
+{
+       intel_uncore_write(__to_uncore(display), reg, val);
+}
+
+#define I9XX_MMIO_FLAGS 0
+
 static u32 i9xx_mmio_read(struct intel_display *display, intel_reg_t reg)
 {
-       return intel_uncore_read(__to_uncore(display), reg);
+       return __intel_de_read(display, reg, I9XX_MMIO_FLAGS);
 }
 
 static void i9xx_mmio_write(struct intel_display *display, intel_reg_t reg, 
u32 val)
 {
-       intel_uncore_write(__to_uncore(display), reg, val);
+       __intel_de_write(display, reg, val, I9XX_MMIO_FLAGS);
 }
 
+#undef I9XX_MMIO_FLAGS
+
 static const struct intel_mmio_funcs i9xx_mmio_funcs = {
        .read = i9xx_mmio_read,
        .write = i9xx_mmio_write,
-- 
2.56.0

Reply via email to