From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: rodrigo.vivi@intel.com, Luca Coelho <luciano.coelho@intel.com>,
jani.nikula@intel.com
Subject: [PATCH v4 2/9] drm/i915/display: add generic to_intel_display() macro
Date: Wed, 17 Apr 2024 16:02:40 +0300 [thread overview]
Message-ID: <02cf407961200db4379370856c779ea62b3eaa90.1713358679.git.jani.nikula@intel.com> (raw)
In-Reply-To: <cover.1713358679.git.jani.nikula@intel.com>
Convert various pointers to struct intel_display * using _Generic().
Add some macro magic to make adding new conversions easier, and somewhat
abstract the need to cast each generic association. The cast is required
because all associations needs to compile, regardless of the type and
the generic selection.
The use of *p in the generic selection assignment expression removes the
need to add separate associations for const pointers.
Note: This intentionally does *not* cover struct drm_i915_private or
struct xe_device. They are not to be used in the long run, so avoid
using this macro for them.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
.../drm/i915/display/intel_display_types.h | 37 +++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 0f4bd5710796..1be98c4219b0 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -2197,4 +2197,41 @@ static inline int to_bpp_x16(int bpp)
return bpp << 4;
}
+/*
+ * Conversion functions/macros from various pointer types to struct
+ * intel_display pointer.
+ */
+#define __drm_device_to_intel_display(p) \
+ (&to_i915(p)->display)
+#define __intel_connector_to_intel_display(p) \
+ __drm_device_to_intel_display((p)->base.dev)
+#define __intel_crtc_to_intel_display(p) \
+ __drm_device_to_intel_display((p)->base.dev)
+#define __intel_crtc_state_to_intel_display(p) \
+ __drm_device_to_intel_display((p)->uapi.crtc->dev)
+#define __intel_digital_port_to_intel_display(p) \
+ __drm_device_to_intel_display((p)->base.base.dev)
+#define __intel_dp_to_intel_display(p) \
+ __drm_device_to_intel_display(dp_to_dig_port(p)->base.base.dev)
+#define __intel_encoder_to_intel_display(p) \
+ __drm_device_to_intel_display((p)->base.dev)
+#define __intel_hdmi_to_intel_display(p) \
+ __drm_device_to_intel_display(hdmi_to_dig_port(p)->base.base.dev)
+
+/* Helper for generic association. Map types to conversion functions/macros. */
+#define __assoc(type, p) \
+ struct type: __##type##_to_intel_display((struct type *)(p))
+
+/* Convert various pointer types to struct intel_display pointer. */
+#define to_intel_display(p) \
+ _Generic(*p, \
+ __assoc(drm_device, p), \
+ __assoc(intel_connector, p), \
+ __assoc(intel_crtc, p), \
+ __assoc(intel_crtc_state, p), \
+ __assoc(intel_digital_port, p), \
+ __assoc(intel_dp, p), \
+ __assoc(intel_encoder, p), \
+ __assoc(intel_hdmi, p))
+
#endif /* __INTEL_DISPLAY_TYPES_H__ */
--
2.39.2
next prev parent reply other threads:[~2024-04-17 13:03 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-17 13:02 [PATCH v4 0/9] drm/i915: better high level abstraction for display Jani Nikula
2024-04-17 13:02 ` [PATCH v4 1/9] drm/i915/display: add intel_display -> drm_device backpointer Jani Nikula
2024-04-17 13:02 ` Jani Nikula [this message]
2024-04-17 13:02 ` [PATCH v4 3/9] drm/i915: add generic __to_intel_display() Jani Nikula
2024-04-17 13:02 ` [PATCH v4 4/9] drm/i915/display: accept either i915 or display for feature tests Jani Nikula
2024-04-17 13:58 ` Rodrigo Vivi
2024-04-17 13:02 ` [PATCH v4 5/9] drm/i915/quirks: convert struct drm_i915_private to struct intel_display Jani Nikula
2024-04-17 13:02 ` [PATCH v4 6/9] drm/i915/display: rename __intel_wait_for_register_nowl() to indicate intel_de_ Jani Nikula
2024-04-17 13:59 ` Rodrigo Vivi
2024-04-17 13:02 ` [PATCH v4 7/9] drm/i915/dmc: convert dmc wakelock interface to struct intel_display Jani Nikula
2024-04-17 14:31 ` Rodrigo Vivi
2024-04-17 13:02 ` [PATCH v4 8/9] drm/i915/de: allow intel_display and drm_i915_private for de functions Jani Nikula
2024-04-17 14:00 ` Rodrigo Vivi
2024-04-17 13:02 ` [PATCH v4 9/9] drm/i915/dmc: use struct intel_display more Jani Nikula
2024-04-17 14:31 ` Rodrigo Vivi
2024-04-18 18:21 ` Jani Nikula
2024-04-17 14:25 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: better high level abstraction for display (rev3) Patchwork
2024-04-17 14:25 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-04-17 14:38 ` ✓ Fi.CI.BAT: success " Patchwork
2024-04-18 11:25 ` ✗ Fi.CI.IGT: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=02cf407961200db4379370856c779ea62b3eaa90.1713358679.git.jani.nikula@intel.com \
--to=jani.nikula@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=luciano.coelho@intel.com \
--cc=rodrigo.vivi@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox