From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: <intel-gfx@lists.freedesktop.org>,
<intel-xe@lists.freedesktop.org>,
"Luca Coelho" <luciano.coelho@intel.com>
Subject: Re: [PATCH v4 8/9] drm/i915/de: allow intel_display and drm_i915_private for de functions
Date: Wed, 17 Apr 2024 10:00:41 -0400 [thread overview]
Message-ID: <Zh_WCW-eNjLu96Jn@intel.com> (raw)
In-Reply-To: <1b0e8e7c732535e18c8498a2e18fe1e4c123e2f5.1713358679.git.jani.nikula@intel.com>
On Wed, Apr 17, 2024 at 04:02:46PM +0300, Jani Nikula wrote:
> It would be too much noise to convert the intel_de_* functions from
> using struct drm_i915_private to struct intel_display all at once. Add
> generic wrappers using __to_intel_display() to accept both.
>
> v2: Take the intel_dmc_wl_* changes into account
>
> Cc: Luca Coelho <luciano.coelho@intel.com>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> # v1
thanks for sharing the scripts,
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> This was done using a cocci + shell script combo:
>
> #!/bin/bash
>
> set -e
>
> FILE=drivers/gpu/drm/i915/display/intel_de.h
>
> cocci=$(mktemp)
> cat >$cocci <<EOF
> @@
> identifier ptr;
> identifier fn =~ "^_*intel_de_.*";
> fresh identifier __fn = "__" ## fn;
> @@
>
> - fn(struct drm_i915_private *ptr,
> + __fn(struct intel_display *display,
> ...) {
> <...
> (
> - &ptr->uncore
> + __to_uncore(display)
> |
> - &ptr->display
> + display
> |
> - ptr
> + display
> )
> ...>
> }
> + #define fn(p, VARARGS_PLACEHOLDER) __fn(__to_intel_display(p), __VA_ARGS__)
>
> EOF
>
> spatch --sp-file $cocci --in-place --linux-spacing $FILE >/dev/null
>
> # Fixup varargs
> sed -i "s/VARARGS_PLACEHOLDER/.../g" $FILE
>
> # Add the __to_uncore() helper
> snip=$(mktemp)
> cat >$snip <<EOF
>
> static inline struct intel_uncore *__to_uncore(struct intel_display *display)
> {
> return &to_i915(display->drm)->uncore;
> }
> EOF
>
> sed -ie "/\#include \"intel_uncore\.h\"/r $snip" $FILE
>
> rm -f $cocci $snip
> ---
> drivers/gpu/drm/i915/display/intel_de.h | 157 ++++++++++++++----------
> 1 file changed, 93 insertions(+), 64 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> index 15440058ad2a..e881bfeafb47 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.h
> +++ b/drivers/gpu/drm/i915/display/intel_de.h
> @@ -10,161 +10,185 @@
> #include "i915_trace.h"
> #include "intel_uncore.h"
>
> +static inline struct intel_uncore *__to_uncore(struct intel_display *display)
> +{
> + return &to_i915(display->drm)->uncore;
> +}
> +
> static inline u32
> -intel_de_read(struct drm_i915_private *i915, i915_reg_t reg)
> +__intel_de_read(struct intel_display *display, i915_reg_t reg)
> {
> u32 val;
>
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - val = intel_uncore_read(&i915->uncore, reg);
> + val = intel_uncore_read(__to_uncore(display), reg);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
>
> return val;
> }
> +#define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
>
> static inline u8
> -intel_de_read8(struct drm_i915_private *i915, i915_reg_t reg)
> +__intel_de_read8(struct intel_display *display, i915_reg_t reg)
> {
> u8 val;
>
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - val = intel_uncore_read8(&i915->uncore, reg);
> + val = intel_uncore_read8(__to_uncore(display), reg);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
>
> return val;
> }
> +#define intel_de_read8(p,...) __intel_de_read8(__to_intel_display(p), __VA_ARGS__)
>
> static inline u64
> -intel_de_read64_2x32(struct drm_i915_private *i915,
> - i915_reg_t lower_reg, i915_reg_t upper_reg)
> +__intel_de_read64_2x32(struct intel_display *display,
> + i915_reg_t lower_reg, i915_reg_t upper_reg)
> {
> u64 val;
>
> - intel_dmc_wl_get(&i915->display, lower_reg);
> - intel_dmc_wl_get(&i915->display, upper_reg);
> + intel_dmc_wl_get(display, lower_reg);
> + intel_dmc_wl_get(display, upper_reg);
>
> - val = intel_uncore_read64_2x32(&i915->uncore, lower_reg, upper_reg);
> + val = intel_uncore_read64_2x32(__to_uncore(display), lower_reg,
> + upper_reg);
>
> - intel_dmc_wl_put(&i915->display, upper_reg);
> - intel_dmc_wl_put(&i915->display, lower_reg);
> + intel_dmc_wl_put(display, upper_reg);
> + intel_dmc_wl_put(display, lower_reg);
>
> return val;
> }
> +#define intel_de_read64_2x32(p,...) __intel_de_read64_2x32(__to_intel_display(p), __VA_ARGS__)
>
> static inline void
> -intel_de_posting_read(struct drm_i915_private *i915, i915_reg_t reg)
> +__intel_de_posting_read(struct intel_display *display, i915_reg_t reg)
> {
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - intel_uncore_posting_read(&i915->uncore, reg);
> + intel_uncore_posting_read(__to_uncore(display), reg);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
> }
> +#define intel_de_posting_read(p,...) __intel_de_posting_read(__to_intel_display(p), __VA_ARGS__)
>
> static inline void
> -intel_de_write(struct drm_i915_private *i915, i915_reg_t reg, u32 val)
> +__intel_de_write(struct intel_display *display, i915_reg_t reg, u32 val)
> {
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - intel_uncore_write(&i915->uncore, reg, val);
> + intel_uncore_write(__to_uncore(display), reg, val);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
> }
> +#define intel_de_write(p,...) __intel_de_write(__to_intel_display(p), __VA_ARGS__)
>
> static inline u32
> -__intel_de_rmw_nowl(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 clear, u32 set)
> +____intel_de_rmw_nowl(struct intel_display *display, i915_reg_t reg,
> + u32 clear, u32 set)
> {
> - return intel_uncore_rmw(&i915->uncore, reg, clear, set);
> + return intel_uncore_rmw(__to_uncore(display), reg, clear, set);
> }
> +#define __intel_de_rmw_nowl(p,...) ____intel_de_rmw_nowl(__to_intel_display(p), __VA_ARGS__)
>
> static inline u32
> -intel_de_rmw(struct drm_i915_private *i915, i915_reg_t reg, u32 clear, u32 set)
> +__intel_de_rmw(struct intel_display *display, i915_reg_t reg, u32 clear,
> + u32 set)
> {
> u32 val;
>
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - val = __intel_de_rmw_nowl(i915, reg, clear, set);
> + val = __intel_de_rmw_nowl(display, reg, clear, set);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
>
> return val;
> }
> +#define intel_de_rmw(p,...) __intel_de_rmw(__to_intel_display(p), __VA_ARGS__)
>
> static inline int
> -__intel_de_wait_for_register_nowl(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 mask, u32 value, unsigned int timeout)
> +____intel_de_wait_for_register_nowl(struct intel_display *display,
> + i915_reg_t reg,
> + u32 mask, u32 value, unsigned int timeout)
> {
> - return intel_wait_for_register(&i915->uncore, reg, mask,
> + return intel_wait_for_register(__to_uncore(display), reg, mask,
> value, timeout);
> }
> +#define __intel_de_wait_for_register_nowl(p,...) ____intel_de_wait_for_register_nowl(__to_intel_display(p), __VA_ARGS__)
>
> static inline int
> -intel_de_wait(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 mask, u32 value, unsigned int timeout)
> +__intel_de_wait(struct intel_display *display, i915_reg_t reg,
> + u32 mask, u32 value, unsigned int timeout)
> {
> int ret;
>
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - ret = __intel_de_wait_for_register_nowl(i915, reg, mask, value, timeout);
> + ret = __intel_de_wait_for_register_nowl(display, reg, mask, value,
> + timeout);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
>
> return ret;
> }
> +#define intel_de_wait(p,...) __intel_de_wait(__to_intel_display(p), __VA_ARGS__)
>
> static inline int
> -intel_de_wait_fw(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 mask, u32 value, unsigned int timeout)
> +__intel_de_wait_fw(struct intel_display *display, i915_reg_t reg,
> + u32 mask, u32 value, unsigned int timeout)
> {
> int ret;
>
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - ret = intel_wait_for_register_fw(&i915->uncore, reg, mask, value, timeout);
> + ret = intel_wait_for_register_fw(__to_uncore(display), reg, mask,
> + value, timeout);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
>
> return ret;
> }
> +#define intel_de_wait_fw(p,...) __intel_de_wait_fw(__to_intel_display(p), __VA_ARGS__)
>
> static inline int
> -intel_de_wait_custom(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 mask, u32 value,
> - unsigned int fast_timeout_us,
> - unsigned int slow_timeout_ms, u32 *out_value)
> +__intel_de_wait_custom(struct intel_display *display, i915_reg_t reg,
> + u32 mask, u32 value,
> + unsigned int fast_timeout_us,
> + unsigned int slow_timeout_ms, u32 *out_value)
> {
> int ret;
>
> - intel_dmc_wl_get(&i915->display, reg);
> + intel_dmc_wl_get(display, reg);
>
> - ret = __intel_wait_for_register(&i915->uncore, reg, mask, value,
> + ret = __intel_wait_for_register(__to_uncore(display), reg, mask,
> + value,
> fast_timeout_us, slow_timeout_ms, out_value);
>
> - intel_dmc_wl_put(&i915->display, reg);
> + intel_dmc_wl_put(display, reg);
>
> return ret;
> }
> +#define intel_de_wait_custom(p,...) __intel_de_wait_custom(__to_intel_display(p), __VA_ARGS__)
>
> static inline int
> -intel_de_wait_for_set(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 mask, unsigned int timeout)
> +__intel_de_wait_for_set(struct intel_display *display, i915_reg_t reg,
> + u32 mask, unsigned int timeout)
> {
> - return intel_de_wait(i915, reg, mask, mask, timeout);
> + return intel_de_wait(display, reg, mask, mask, timeout);
> }
> +#define intel_de_wait_for_set(p,...) __intel_de_wait_for_set(__to_intel_display(p), __VA_ARGS__)
>
> static inline int
> -intel_de_wait_for_clear(struct drm_i915_private *i915, i915_reg_t reg,
> - u32 mask, unsigned int timeout)
> +__intel_de_wait_for_clear(struct intel_display *display, i915_reg_t reg,
> + u32 mask, unsigned int timeout)
> {
> - return intel_de_wait(i915, reg, mask, 0, timeout);
> + return intel_de_wait(display, reg, mask, 0, timeout);
> }
> +#define intel_de_wait_for_clear(p,...) __intel_de_wait_for_clear(__to_intel_display(p), __VA_ARGS__)
>
> /*
> * Unlocked mmio-accessors, think carefully before using these.
> @@ -175,33 +199,38 @@ intel_de_wait_for_clear(struct drm_i915_private *i915, i915_reg_t reg,
> * a more localised lock guarding all access to that bank of registers.
> */
> static inline u32
> -intel_de_read_fw(struct drm_i915_private *i915, i915_reg_t reg)
> +__intel_de_read_fw(struct intel_display *display, i915_reg_t reg)
> {
> u32 val;
>
> - val = intel_uncore_read_fw(&i915->uncore, reg);
> + val = intel_uncore_read_fw(__to_uncore(display), reg);
> trace_i915_reg_rw(false, reg, val, sizeof(val), true);
>
> return val;
> }
> +#define intel_de_read_fw(p,...) __intel_de_read_fw(__to_intel_display(p), __VA_ARGS__)
>
> static inline void
> -intel_de_write_fw(struct drm_i915_private *i915, i915_reg_t reg, u32 val)
> +__intel_de_write_fw(struct intel_display *display, i915_reg_t reg, u32 val)
> {
> trace_i915_reg_rw(true, reg, val, sizeof(val), true);
> - intel_uncore_write_fw(&i915->uncore, reg, val);
> + intel_uncore_write_fw(__to_uncore(display), reg, val);
> }
> +#define intel_de_write_fw(p,...) __intel_de_write_fw(__to_intel_display(p), __VA_ARGS__)
>
> static inline u32
> -intel_de_read_notrace(struct drm_i915_private *i915, i915_reg_t reg)
> +__intel_de_read_notrace(struct intel_display *display, i915_reg_t reg)
> {
> - return intel_uncore_read_notrace(&i915->uncore, reg);
> + return intel_uncore_read_notrace(__to_uncore(display), reg);
> }
> +#define intel_de_read_notrace(p,...) __intel_de_read_notrace(__to_intel_display(p), __VA_ARGS__)
>
> static inline void
> -intel_de_write_notrace(struct drm_i915_private *i915, i915_reg_t reg, u32 val)
> +__intel_de_write_notrace(struct intel_display *display, i915_reg_t reg,
> + u32 val)
> {
> - intel_uncore_write_notrace(&i915->uncore, reg, val);
> + intel_uncore_write_notrace(__to_uncore(display), reg, val);
> }
> +#define intel_de_write_notrace(p,...) __intel_de_write_notrace(__to_intel_display(p), __VA_ARGS__)
>
> #endif /* __INTEL_DE_H__ */
> --
> 2.39.2
>
next prev parent reply other threads:[~2024-04-17 14:01 UTC|newest]
Thread overview: 28+ 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 ` [PATCH v4 2/9] drm/i915/display: add generic to_intel_display() macro Jani Nikula
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 [this message]
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 13:26 ` ✓ CI.Patch_applied: success for drm/i915: better high level abstraction for display (rev3) Patchwork
2024-04-17 13:26 ` ✗ CI.checkpatch: warning " Patchwork
2024-04-17 13:27 ` ✓ CI.KUnit: success " Patchwork
2024-04-17 13:39 ` ✓ CI.Build: " Patchwork
2024-04-17 13:42 ` ✓ CI.Hooks: " Patchwork
2024-04-17 14:00 ` ✗ CI.checksparse: warning " Patchwork
2024-04-17 14:25 ` ✓ CI.BAT: success " Patchwork
2024-04-17 14:25 ` ✗ Fi.CI.CHECKPATCH: warning " 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
2024-04-18 23:43 ` ✗ CI.FULL: " 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=Zh_WCW-eNjLu96Jn@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=luciano.coelho@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.