summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/i915_reg_defs.h
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2022-11-09 18:35:20 +0300
committerJani Nikula <jani.nikula@intel.com>2022-11-11 13:33:35 +0300
commit81e78b13bdf7829bed0ad1a1dfe51293a8f676f3 (patch)
tree813521b843233163e89051c3fb7f137a50e1189f /drivers/gpu/drm/i915/i915_reg_defs.h
parentda2549576b7be2b465908709dad50810a084cce4 (diff)
downloadlinux-81e78b13bdf7829bed0ad1a1dfe51293a8f676f3.tar.xz
drm/i915/reg: move pick even and pick to reg defs
This is a more logical place for generic helpers. Cc: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/623327aee73a515300d99c8d65552ca92f3f0721.1668008071.git.jani.nikula@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg_defs.h')
-rw-r--r--drivers/gpu/drm/i915/i915_reg_defs.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg_defs.h b/drivers/gpu/drm/i915/i915_reg_defs.h
index 7536f1b72778..344e5006650e 100644
--- a/drivers/gpu/drm/i915/i915_reg_defs.h
+++ b/drivers/gpu/drm/i915/i915_reg_defs.h
@@ -111,6 +111,21 @@
#define _MASKED_BIT_ENABLE(a) ({ typeof(a) _a = (a); _MASKED_FIELD(_a, _a); })
#define _MASKED_BIT_DISABLE(a) (_MASKED_FIELD((a), 0))
+/*
+ * Given the first two numbers __a and __b of arbitrarily many evenly spaced
+ * numbers, pick the 0-based __index'th value.
+ *
+ * Always prefer this over _PICK() if the numbers are evenly spaced.
+ */
+#define _PICK_EVEN(__index, __a, __b) ((__a) + (__index) * ((__b) - (__a)))
+
+/*
+ * Given the arbitrary numbers in varargs, pick the 0-based __index'th number.
+ *
+ * Always prefer _PICK_EVEN() over this if the numbers are evenly spaced.
+ */
+#define _PICK(__index, ...) (((const u32 []){ __VA_ARGS__ })[__index])
+
typedef struct {
u32 reg;
} i915_reg_t;