Imre Deak
8aa2945f04
drm/i915/tc: Add separate intel_tc_phy_port_to_tc() for TC DDI/PHY ports
...
intel_port_to_tc() returns the PORT_TC1..6 -> TC_PORT_1..6 mapping only
for DDI ports that are connected to a TypeC PHY. In some cases this
mapping is also required for TypeC DDI ports which are not connected to
a TypeC PHY. Such DDI ports are the PORT_TC1..4 ports on RKL/ADLS/BMG.
Add a separate intel_tc_phy_to_tc() helper to return the mapping for
ports connected to a TypeC PHY, and make all the current users - which
expect this semantic - call this helper. A follow-up change will need to
get the same mapping for TypeC DDI ports not connected to a TypeC PHY,
leave intel_port_to_tc() exported for that.
Cc: Suraj Kandpal <suraj.kandpal@intel.com >
Cc: Mika Kahola <mika.kahola@intel.com >
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patch.msgid.link/20251120172358.1282765-2-imre.deak@intel.com
2025-11-21 20:50:34 +02:00
Ville Syrjälä
95357b68b6
drm/i915: Pass drm_format_info into plane->max_stride()
...
Pass the format info into plane->max_stride() from the
caller instead of doing yet another drm_format_info()
lookup on the spot.
drm_format_info() is both rather expensive, and technically
incorrect since it doesn't return the correct format info
for compressed formats (though that doesn't actually matter
for the current .max_stride() implementations since they
are just interested in the cpp value).
Most callers already have the format info available. The
only exception is intel_dumb_fb_max_stride() where we shall
use the actually correct drm_get_format_info() variant.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patch.msgid.link/20251107181126.5743-3-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-11-12 22:57:56 +02:00
Ville Syrjälä
854efdc7ef
drm/i915: Introduce intel_dumb_fb_max_stride()
...
Wrap intel_plane_fb_max_stride() in intel_dumb_fb_max_stride()
for the purposes of dumb fb creation. I want to change
intel_plane_fb_max_stride() to take a 'struct drm_format_info'
instead of the 'u32 pixel_format' so we need an excplicit format
info lookup in the dumb fb path and I don't really want to have
that in i915_gem_dumb_create() directly.
This makes intel_plane_fb_max_stride() internal to the display
code again, and thus we can pass in struct intel_display instead
of struct drm_device.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patch.msgid.link/20251107181126.5743-2-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-11-12 22:57:29 +02:00
Ville Syrjälä
e76f0dd378
drm/i915: Introduce intel_calc_enabled_pipes()
...
Add intel_calc_enabled_pipes() as the counterpart to
intel_calc_active_pipes(). We have some uses where the set
of logically enabled pipes makes more sense than the set of
active pipes.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250923171943.7319-18-ville.syrjala@linux.intel.com
Reviewed-by: Mika Kahola <mika.kahola@intel.com >
2025-10-11 03:48:06 +03:00
Jani Nikula
5615e78e81
drm/i915: split out vlv_clock.[ch]
...
Move the VLV clock related functions to their own file.
v2: Rebase
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com > # v1
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/0bc4a930f3e364c4fc37479f56bf07ccee854fcc.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:53 +03:00
Jani Nikula
e3aae3e401
drm/i915: remove intel_update_czclk() as unnecessary
...
With vlv_clock_get_czclk() caching the result on first use, we no longer
need a separate initializer. Remove intel_update_czclk() as
unnecessary. Log the CZCLK in vlv_clock_get_czclk() instead.
v2: Rebase
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com > # v1
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/3f90b5e67258f485db09b6f48381682cbd96153f.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:27 +03:00
Jani Nikula
f6b784c44a
drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco()
...
Follow the new vlv_clock_*() naming pattern for all the related VLV
clock functions.
v2: Rebase
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/75ac6b1cda2cb0afe3171250c4d5ba1ff81df877.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:13 +03:00
Jani Nikula
a6767dbba6
drm/i915: make vlv_get_cck_clock() static
...
vlv_get_cck_clock() is no longer used outside of intel_display.c, make
it static.
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/bac1fe98d9d458ef30e973f680342b69a6cde4d6.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:11 +03:00
Jani Nikula
d451c5bff5
drm/i915: add vlv_clock_get_cdclk()
...
Add vlv_clock_get_cdclk() helper to hide the details from the callers.
For now, this means running vlv_get_hpll_vco() twice in vlv_get_cdclk(),
but this will be improved later.
v2: Rebase
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/fc93ccf998300048432d18ce7e8690bd54e1e18d.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:09 +03:00
Jani Nikula
ffbc0de5d3
drm/i915: make vlv_get_cck_clock_hpll() static
...
vlv_get_cck_clock_hpll() is no longer used outside of intel_display.c,
make it static.
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/0a778d82e2be112b0cd37cd3329103a764967a1d.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:08 +03:00
Jani Nikula
9c2f799255
drm/i915: add vlv_clock_get_hrawclk()
...
Add vlv_clock_get_hrawclk() helper to hide the details from the callers.
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/ad3c3d0baf16eb0ef3a0ac3edfbab327c564e743.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:06 +03:00
Jani Nikula
8c2833ff1d
drm/i915: add vlv_clock_get_czclk()
...
Add vlv_clock_get_czclk() helper to avoid looking at i915->czclk_freq
directly.
Reviewed-by: Mika Kahola <mika.kahola@intel.com >
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/4885f6e486a31c773a3bfebd6936670234e57bd0.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:05 +03:00
Jani Nikula
01c46fcef5
drm/i915: add vlv_clock_get_gpll()
...
Add a vlv_clock_get_gpll() helper to hide the details from the callers.
Reviewed-by: Mika Kahola <mika.kahola@intel.com >
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com >
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/2589396fa14388d7709d2b01f1d32f9f38dab11a.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-09-17 11:29:02 +03:00
Jani Nikula
1882dc90df
drm/i915/display: drop unused declarations from intel_display.h
...
We've accumulated lots of forward declarations in intel_display.h that
are no longer necessary. Clean them up.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/5ad046b74040e84fab51786c346ff9a445e351bc.1747128495.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-05-14 14:10:07 +03:00
Jani Nikula
bd4d1856f5
drm/i915: convert VLV IOSF SB interface to struct drm_device
...
With users both in i915 core and display, struct drm_device is the
common denominator for the VLV IOSF SB users. Also use drm_device for
the helpers on the display side to keep the static inlines as simple as
possible.
We can drop a number of dependencies on i915_drv.h with this.
v2,v3: Rebase
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://lore.kernel.org/r/c1d013ed88ce2e3e5bdc15ce3bf01a3960b1e817.1747061743.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-05-13 10:26:45 +03:00
Imre Deak
a43a02d8f5
drm/i915/display: Factor out intel_display_{min, max}_pipe_bpp()
...
Factor out helpers that can be used in a follow-up change to query the
minimum and maximum pipe bpp supported by the HW.
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://lore.kernel.org/r/20250509180340.554867-10-imre.deak@intel.com
2025-05-12 15:22:50 +03:00
Jani Nikula
055e8af4c9
drm/i915/display: remove dupe intel_update_watermarks() declaration
...
intel_wm.h already has intel_update_watermarks() declaration. Remove the
dupe.
Reviewed-by: Nemesa Garg <nemesa.garg@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/67eeebff3ec9459f7854fbc56cfd7f2aa8c1fdc6.1741084010.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-03-05 20:04:41 +02:00
Jani Nikula
7e43a00be1
drm/i915/display: convert intel_has_pending_fb_unpin() to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. The intel_display.[ch] files are too big to convert in one
go. Convert intel_has_pending_fb_unpin() to struct intel_display.
Reviewed-by: Nemesa Garg <nemesa.garg@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/d70ad8f9cbba5ee32d985b76047b56996ad4b31e.1741084010.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-03-05 20:04:41 +02:00
Jani Nikula
7c4a393f97
drm/i915/display: convert some intel_display.[ch] functions to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. The intel_display.[ch] files are too big to convert in one
go. Convert the interface towards intel_display_driver.c to struct
intel_display.
Reviewed-by: Nemesa Garg <nemesa.garg@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/ee8b108420763cbf47ee77fa35b782a7293f9cfe.1741084010.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-03-05 20:04:41 +02:00
Jani Nikula
1bdad3f216
drm/i915/display: convert various port/phy helpers to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. The intel_display.[ch] files are too big to convert in one
go. Convert the various port/phy helpers to struct intel_display.
Reviewed-by: Nemesa Garg <nemesa.garg@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/e28e53bad5014ba3ef17431557b517f1b8530963.1741084010.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-03-05 20:04:41 +02:00
Jani Nikula
30d70e1e26
drm/i915/pfit: move ilk and i9xx pfit code to intel_pfit.[ch]
...
Group panel fitter code in one place. Rename *_get_pfit_config() to
*_pfit_get_config() while at it.
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/d1f18b2c0d0ae07a3f38fc859b10a9de2b9c5c24.1740564009.git.jani.nikula@intel.com
2025-02-27 20:49:01 +02:00
Jani Nikula
c9c672db1f
drm/i915/display: convert the M/N functions to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert the functions to set/get M/N values and check for M2/N2
support to struct intel_display.
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/8ac3472fe8e6647c0da57013c8bef575d8324a88.1740502116.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-02-27 12:26:34 +02:00
Jani Nikula
fe43444d0e
drm/i915/snps: convert intel_snps_phy.[ch] to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert the intel_snps_phy.[ch] to struct intel_display. Also
convert the very much related intel_phy_is_snps() helper.
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/2dcc9313f5cf7777af3b6f20124526f6b9462b91.1740502116.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2025-02-27 12:20:07 +02:00
Ville Syrjälä
9ba19223a5
drm/i915: Relocate some other plane fb related stuff into intel_fb.c
...
Move intel_fb_xy_to_linear() and intel_add_fb_offsets()
These are technially sitting somewhere between plane vs. fb code,
but we do have a bunch of code like that in intel_fb.c anyway.
Might need to think about splitting intel_fb.c into pure fb vs.
plane->fb related stuff somehow, but dunno if that's even feasible.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-12-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-15 21:04:06 +02:00
Ville Syrjälä
2d017fea5b
drm/i915: Relocate intel_{rotation,remapped}_info_size()
...
Move intel_{rotation,remapped}_info_size() into intel_fb.c as
that seems a slightly better place than intel_display.c. I suppose
these should live somewhere outside the display code as they are
also used by the gem code.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-11-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-15 21:04:06 +02:00
Ville Syrjälä
f04fb4090f
drm/i915: Relocate intel_plane_uses_fence()
...
Relocate intel_plane_uses_fence() into intel_fb.c. Not sure
that's the best place, but since this is mostly about the
fb and vma I can't think of anything truly better right now.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-10-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-15 21:04:06 +02:00
Ville Syrjälä
2be189c9e8
drm/i915: Relocate vlv_wait_port_ready()
...
While vlv_wait_port_ready() doens't directly talk to the VLV/CHV
DPIO PHY, the signals it's looking for do come from the PHY. So
it seems appropriate to relocate it into intel_dpio_phy.c.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-8-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-15 21:04:06 +02:00
Ville Syrjälä
7105bf946f
drm/i915: Move intel_plane_destroy() into intel_atomic_plane.c
...
intel_atomic_plane.c (should rename it really) has become our
standard place for generic plane code. Move intel_plane_destroy()
there so it doesn't clutter intel_display.c.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-7-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-15 21:04:06 +02:00
Ville Syrjälä
13a8aca9b1
drm/i915: Move intel_hpd_poll_fini() into intel_hotplug.c
...
The name of intel_hpd_poll_fini() suggests that it should live
in intel_hotplug.c. Make it so.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-6-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-15 21:04:06 +02:00
Ville Syrjälä
ab2b059467
drm/i915: Relocate intel_atomic_check_planes()
...
Move all the intel_atomic_check_planes() machinery into
intel_atomic_plane.c in order to declutter intel_display.c.
v2: Rebase due to intel_display changes
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250212164330.16891-11-ville.syrjala@linux.intel.com
2025-02-15 09:29:22 +02:00
Jani Nikula
9e1673db98
drm/i915/combo-phy: convert intel_combo_phy.[ch] to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert as much as possible of intel_combo_phy.[ch] to struct
intel_display, along with intel_phy_is_combo() in intel_display.c.
Drive-by convert some drm_dbg() to drm_dbg_kms() while at it.
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/c2e0a6294a8eaa4c16632881edc4f2d23c576101.1739378096.git.jani.nikula@intel.com
2025-02-13 10:21:44 +02:00
Jani Nikula
010d150a91
drm/i915/display: convert intel_mode_valid_max_plane_size() to intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert the intel_mode_valid_max_plane_size() helper to struct
intel_display, allowing further conversions elsewhere.
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/6e7810c793ecc8ff6a31569830bf162156245668.1739378095.git.jani.nikula@intel.com
2025-02-13 10:21:38 +02:00
Jani Nikula
a580ed17f3
drm/i915/display: convert intel_cpu_transcoder_mode_valid() to intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert the intel_cpu_transcoder_mode_valid()() helper to
struct intel_display, allowing further conversions elsewhere.
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/f9246a00a2e7aabaffb86f863915a4307e1fd3f8.1739378095.git.jani.nikula@intel.com
2025-02-13 10:21:34 +02:00
Jani Nikula
a40249ee7e
drm/i915/display: convert assert_port_valid() to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert the assert_port_valid() helper to struct intel_display,
allowing further conversions elsewhere.
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/e06ef0e2cc34d42918f3208362587a17ea34e28f.1739378095.git.jani.nikula@intel.com
2025-02-13 10:21:21 +02:00
Jani Nikula
6a5c7ea5f4
drm/i915/display: convert assert_transcoder*() to struct intel_display
...
Going forward, struct intel_display is the main display device data
pointer. Convert the assert_transcoder*() helpers to struct
intel_display, allowing further conversions elsewhere.
Do a few small opportunistic conversions right away.
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/430c2f3c899bc98beeb6ba8608f841c9271d0971.1739378095.git.jani.nikula@intel.com
2025-02-13 10:21:17 +02:00
Ville Syrjälä
2bb9476795
drm/i915: Decouple i915_gem_dumb_create() from the display a bit
...
Pass the device argument as drm_device to intel_plane_fb_max_stride()
to decouple i915_gem_dumb_create() vs. the display code a bit.
xe currently doesn't even call this, but it probably should...
v2: s/dev/drm/ (Jani)
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250206185533.32306-3-ville.syrjala@linux.intel.com
2025-02-10 22:59:27 +02:00
Ville Syrjälä
3eb1b39820
drm/i915: Pass intel_display to intel_scanout_needs_vtd_wa()
...
Now that intel_scanout_needs_vtd_wa() is no longer used from
the gem code we can convert it to take struct intel_display.
which will help with converting the low level plane code over
as well.
Cc: Jani Nikula <jani.nikula@intel.com >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20250206185533.32306-2-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2025-02-10 22:58:39 +02:00
Jani Nikula
5f7fb33b7b
drm/i915/display: remove unused for_each_crtc()
...
This is essentially a duplicate of drm_for_each_crtc() anyway. Remove.
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20241202125437.1154945-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-12-03 12:07:36 +02:00
Jani Nikula
6400c0b979
drm/i915/display: convert vlv_wait_port_ready() to struct intel_display
...
struct intel_display will replace struct drm_i915_private as the main
device pointer for display code. Switch vlv_wait_port_ready() over to
it. The main motivation to do just one function is to stop passing i915
to intel_de_wait(), so its generic wrapper can be removed.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/9505ea49dfc8c7a52cacd2749875a680b01e5bbd.1730146000.git.jani.nikula@intel.com
2024-10-30 13:52:09 +02:00
Jani Nikula
0f4869b163
drm/i915/display: convert I915_STATE_WARN() to struct intel_display
...
Convert I915_STATE_WARN() to struct intel_display *, and rename to
INTEL_DISPLAY_STATE_WARN(). Do some minor opportunistic struct
drm_i915_private to struct intel_display conversions while at it.
v2: crtc_state may be NULL in intel_connector_verify_state()
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20241024162510.2410128-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-10-29 12:31:28 +02:00
Stanislav Lisovskiy
dc393d478d
drm/i915/display/vdsc: Add ultrajoiner support with DSC
...
Add changes to DSC which are required for Ultrajoiner.
v2:
-Use correct helper for setting bits for bigjoiner secondary. (Ankit)
-Use primary/secondary instead of master/slave. (Suraj)
v3: Add the ultrajoiner helpers and use it for setting ultrajoiner
bits (Ankit)
v4: Use num_vdsc_instances *= num_joined_pipes (Ville)
v5: Align the helper to get ultrajoiner enabled pipes with other helpers
(Ville)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240930163549.416410-7-ankit.k.nautiyal@intel.com
2024-10-01 14:34:55 +05:30
Jani Nikula
e294868295
drm/i915/fb: convert intel_framebuffer_create() to struct drm_gem_object
...
Prefer the driver agnostic struct drm_gem_object over i915 specific
struct drm_i915_gem_object.
Move the declaration to the right place while at it.
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/5120aa0f5e49e95526b3ac20c1325bac1d95aa21.1726589119.git.jani.nikula@intel.com
2024-09-19 16:37:06 +03:00
Ankit Nautiyal
ae5d0397b7
drm/i915/display: Enhance iterators for modeset en/disable
...
Joiners have specific enabling and disabling order dependent on primary
and secondary pipes. This becomes more complex with ultrajoiner where we
have ultrajoiner primary/secondary pipes in addition to bigjoiner
primary/secondary pipes. To unify the approach that works for present
and future joiner cases, use primary and secondary pipe masks to
iterate over pipes.
If joiner is used, derive bigoiner primary and secondary pipe masks
and use following sequences:
Disabling : disable primary pipes followed by secondary pipes,
Enabling: enable secondary pipes followed by primary pipes.
This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner
primary/secondary pairs (AC, BD).
For non joiner case, enable/disable based on usual pipe order A-D, D-A
respectively.
v2:
-Simplify the iterator macro. (Ville)
-Use struct intel_display. (Ville)
-Add prefix _intel to the helper name. (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com >
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240918063016.2667721-3-ankit.k.nautiyal@intel.com
2024-09-19 15:29:56 +05:30
Stanislav Lisovskiy
0644d2be99
drm/i915: Add some essential functionality for joiners
...
In most of the cases we now try to avoid mentioning things like
"bigjoiner" or "ultrajoiner" trying to unify the API and refer
mostly to all this functionality as "joiner".
In majority cases that should be way to go.
However in some cases we still need to distinguish between
bigjoiner primaries and secondaries(such as DSC register programming).
Create correspondent helper functions and start using them,
in order be prepared for adding ultrajoiner functionality.
v2: Fixed checkpatch warnings (Ankit)
v3: Introduce ultrajoiner helpers in next patch.
v4: Streamline the helpers and add few more. (Ville)
v5: Add comment to clarify that helpers apply to both bigjoiner and
uncompressed joiner configurations. (Ville)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240918063016.2667721-2-ankit.k.nautiyal@intel.com
2024-09-19 15:29:55 +05:30
Ankit Nautiyal
f87bdbd66d
drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size
...
In preparation of ultrajoiner, use number of pipes in the
intel_mode_valid_max_plane_size helper, instead of joiner flag.
v2: Use num_joined_pipes 1 where there are no joined pipes (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com >
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240916102836.2149012-4-ankit.k.nautiyal@intel.com
2024-09-18 12:12:50 +05:30
Ankit Nautiyal
d095681373
drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc
...
In preparation of ultrajoiner, use number of joined pipes in the
intel_dp_joiner_needs_dsc helper, instead of joiner flag.
v2: Use intel_crtc_num_joined_pipes. (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240916102836.2149012-3-ankit.k.nautiyal@intel.com
2024-09-18 12:12:49 +05:30
Jani Nikula
cb1c998401
drm/i915/display: move enum i9xx_plane_id to intel_display_limits.h
...
Move enum i9xx_plane_id from intel_display.h to intel_display_limits.h
to be able to reduce dependencies on intel_display.h.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/1e8f9768f2d638dfa1fc72f80f0d7391c4a48bbb.1726235647.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-09-17 11:13:48 +03:00
Jani Nikula
367941734f
drm/i915: move intel_get_pipe_from_crtc_id_ioctl to intel_crtc.c
...
Reduce the size of and dependencies on intel_display.[ch], and move
intel_get_pipe_from_crtc_id_ioctl() to intel_crtc.[ch]. Rename to
intel_crtc_get_pipe_from_crtc_id_ioctl() while at it.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/edcf4477e6f38cc1f36a8afc0d09fd98544803ab.1726235647.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-09-17 11:13:48 +03:00
Ville Syrjälä
e9a114778d
drm/i915/power: Convert "i830 power well" code to intel_display
...
struct intel_display will replace struct drm_i915_private as
the main thing for display code. Convert the "i830 power well"
code to use it (as much as possible at this stage).
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240906143306.15937-6-ville.syrjala@linux.intel.com
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2024-09-11 15:27:02 +03:00
Ville Syrjälä
a69dcaf931
drm/i915/dsb: Account for VRR properly in DSB scanline stuff
...
When determining various scanlines for DSB use we should take into
account whether VRR is active at the time when the DSB uses said
scanline information. For now all DSB scanline usage occurs prior
to the actual commit, so we only need to care about the state of
VRR at that time.
I've decided to move intel_crtc_scanline_to_hw() in its entirety
to the DSB code as it will also need to know the actual state
of VRR in order to do its job 100% correctly.
TODO: figure out how much of this could be moved to some
more generic place and perhaps be shared with the CPU
vblank evasion code/etc...
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240624191032.27333-8-ville.syrjala@linux.intel.com
Reviewed-by: Animesh Manna <animesh.manna@intel.com >
2024-08-29 14:54:03 +03:00