linux/drivers/gpu/drm
Matt Roper 01eb15c916 drm/i915: Add DISPLAY_VER() and related macros
Although we've long referred to platforms by a single "GEN" number, the
hardware teams have recommended that we stop doing this since the
various component IP blocks are going to start using independent number
schemes with varying cadence.  To support this, hardware platforms a bit
down the road are going to start providing MMIO registers that the
driver can read to obtain the "graphics version," "media version," and
"display version" without needing to do a PCI ID -> platform -> version
translation.

Although our current platforms don't yet expose these registers (and the
next couple we release probably won't have them yet either), the
hardware teams would still like to see us move to this independent
numbering scheme now in preparation.  For i915 that means we should try
to eliminate all usage of INTEL_GEN() throughout our code and instead
replace it with separate GRAPHICS_VER(), MEDIA_VER(), and DISPLAY_VER()
constructs in the code.  For old platforms, these will all usually give
the same value for each IP block (aside from a few special cases like
GLK which we can no more accurately represent as graphics=9 +
display=10), but future platforms will have more flexibility to bump IP
version numbers independently.

The upcoming ADL-P platform will have a display version of 13 and a
graphics version of 12, so let's just the first step of breaking out
DISPLAY_VER(), but leaving the rest of INTEL_GEN() untouched for now.
For now we'll automatically derive the display version from the
platform's INTEL_GEN() value except in cases where an alternative
display version is explicitly provided in the device info structure.

We also add some helper macros IS_DISPLAY_VER(i915, ver) and
IS_DISPLAY_RANGE(i915, from, until) that match the behavior of the
existing gen-based macros.  However unlike IS_GEN(), we will implement
those macros with direct comparisons rather than trying to maintain a
mask to help compiler optimization.  In practice the optimization winds
up not being used in very many places (since the vast majority of our
platform checks are of the form "gen >= x") so there is pretty minimal
size reduction in the final driver binary[1].  We're also likely going
to need to extend these version numbers to non-integer major.minor
values at some point in the future, so the mask approach won't work at
all once we get to platforms like that.

 [1] The results before/after the next patch in this series, which
     switches our code over to the new display macros:

        $ size i915.ko.{orig,new}
           text    data     bss     dec     hex filename
        2940291  102944    5384 3048619  2e84ab i915.ko.orig
        2940723  102956    5384 3049063  2e8667 i915.ko.new

v2:
 - Move version into device info's display sub-struct. (Jani)
 - Add extra parentheses to macros.  (Jani)
 - Note the lack of genmask optimization in the display-based macros and
   give size data.  (Lucas)

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210320044245.3920043-3-matthew.d.roper@intel.com
2021-03-23 16:40:56 -07:00
..
amd Merge tag 'amd-drm-fixes-5.12-2021-03-03' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes 2021-03-05 11:13:22 +10:00
arc drm: Constify drm_driver in drivers that don't modify it 2021-01-05 07:20:36 +02:00
arm drm-misc-next for v5.12: 2021-01-07 10:46:32 +01:00
armada drm: automatic legacy gamma support 2020-12-15 15:46:03 +02:00
aspeed
ast drm/ast: Remove references to struct drm_device.pdev 2021-01-06 15:38:30 +01:00
atmel-hlcdc drm: automatic legacy gamma support 2020-12-15 15:46:03 +02:00
bochs drm/bochs: Remove references to struct drm_device.pdev 2021-01-06 15:42:55 +01:00
bridge drm pull for 5.12-rc1 2021-02-21 14:44:44 -08:00
etnaviv Revert "drm/scheduler: Job timeout handler returns status (v3)" 2021-02-10 15:26:00 +01:00
exynos drm/exynos: Use FOLL_LONGTERM for g2d cmdlists 2021-01-12 14:14:38 +01:00
fsl-dcu
gma500 platform-drivers-x86 for v5.12-1 2021-02-22 08:50:01 -08:00
hisilicon drm/hisilicon/hibmc: Remove hibmc_ttm.c 2021-01-15 10:06:00 +01:00
i2c
i810
i915 drm/i915: Add DISPLAY_VER() and related macros 2021-03-23 16:40:56 -07:00
imx drm/imx: dw_hdmi-imx: depend on OF to fix randconfig compile tests on x86_64 2021-01-07 11:54:21 +01:00
ingenic drm: automatic legacy gamma support 2020-12-15 15:46:03 +02:00
kmb - Add default modes for connectors in unknown state 2021-01-07 13:02:57 +01:00
lib
lima Revert "drm/scheduler: Job timeout handler returns status (v3)" 2021-02-10 15:26:00 +01:00
mcde drm-misc-next for 5.11: 2020-12-15 10:21:48 +01:00
mediatek Mediatek DRM Next for Linux 5.12 2021-02-05 09:25:26 +10:00
meson
mga drm/mga/mga_ioc32: Fix some formatting issues in 'mga_compat_ioctl's header 2021-01-18 15:41:12 +01:00
mgag200 drm/mgag200: Remove references to struct drm_device.pdev 2021-01-06 15:43:13 +01:00
msm drm fixes for 5.12-rc1 + msm-next 2021-02-25 12:10:22 -08:00
mxsfb Short summary of fixes pull (less than what git shortlog provides): 2020-12-15 17:25:55 +01:00
nouveau Merge branch '00.00-inst' of git://github.com/skeggsb/linux into drm-fixes 2021-03-05 11:10:29 +10:00
omapdrm drm/omap: Delete useless kfree code 2020-12-15 17:19:54 +02:00
panel drm/panel: kd35t133: allow using non-continuous dsi clock 2021-02-25 10:18:45 +01:00
panfrost Revert "drm/scheduler: Job timeout handler returns status (v3)" 2021-02-10 15:26:00 +01:00
pl111 ARM updates for 5.12-rc1: 2021-02-22 14:27:07 -08:00
qxl pci-v5.12-changes 2021-02-25 09:56:08 -08:00
r128 drm/r128/r128_ioc32: Fix formatting issues in 'r128_compat_ioctl()'s header 2021-01-18 15:41:04 +01:00
radeon drm pull for 5.12-rc1 2021-02-21 14:44:44 -08:00
rcar-du - Add default modes for connectors in unknown state 2021-01-07 13:02:57 +01:00
rockchip drm/rockchip: Require the YTR modifier for AFBC 2021-02-25 10:18:45 +01:00
savage
scheduler Revert "drm/scheduler: Job timeout handler returns status (v3)" 2021-02-10 15:26:00 +01:00
selftests
shmobile
sis
sti drm: sti: Remove unnecessary drm_plane_cleanup() wrapper 2021-01-05 07:20:21 +02:00
stm drm: automatic legacy gamma support 2020-12-15 15:46:03 +02:00
sun4i drm pull for 5.12-rc1 2021-02-21 14:44:44 -08:00
tdfx drm: Constify drm_driver in drivers that don't modify it 2021-01-05 07:20:36 +02:00
tegra drm/tegra: Fix reference leak when pm_runtime_get_sync() fails 2021-01-15 17:24:51 +01:00
tidss
tilcdc doc: use KCFLAGS instead of EXTRA_CFLAGS to pass flags from command line 2021-02-22 13:59:10 -07:00
tiny drm/cirrus: Remove references to struct drm_device.pdev 2021-01-06 15:43:10 +01:00
ttm drm fixes for 5.12-rc1 + msm-next 2021-02-25 12:10:22 -08:00
tve200 drm/tve200: remove unused including <linux/version.h> 2020-12-30 11:25:05 +01:00
udl
v3d Revert "drm/scheduler: Job timeout handler returns status (v3)" 2021-02-10 15:26:00 +01:00
vboxvideo drm/vboxvideo: Remove references to struct drm_device.pdev 2021-01-06 15:44:04 +01:00
vc4 drm pull for 5.12-rc1 2021-02-21 14:44:44 -08:00
vgem drm/prime: split array import functions v4 2020-11-30 15:00:45 +01:00
via via/via_irq: use __func__ to replace string function name 2020-11-27 16:14:02 +01:00
virtio drm/virtio: fix an error code in virtio_gpu_init() 2021-02-09 17:16:57 +01:00
vkms drm/vkms: Fix missing kmalloc allocation failure check 2021-01-15 17:45:07 -03:00
vmwgfx drm/vmwgfx: Fix some memory leaks on errors 2021-02-09 17:16:57 +01:00
xen drm/prime: split array import functions v4 2020-11-30 15:00:45 +01:00
xlnx drm/xlnx: fix kmemleak by sending vblank_event in atomic_disable 2021-02-03 11:42:34 +01:00
zte drm: zte: Remove unnecessary drm_plane_cleanup() wrapper 2021-01-05 07:20:24 +02:00
drm_agpsupport.c drm: Upcast struct drm_device.dev to struct pci_device; replace pdev 2021-01-19 09:06:38 +01:00
drm_atomic.c Merge branch 'akpm' (patches from Andrew) 2020-12-15 12:53:37 -08:00
drm_atomic_helper.c Linux 5.11-rc5 2021-01-25 14:35:44 +10:00
drm_atomic_state_helper.c
drm_atomic_uapi.c
drm_auth.c
drm_blend.c drm/doc: introduce new section for standard plane properties 2020-12-17 16:56:40 +01:00
drm_bridge.c
drm_bridge_connector.c
drm_bufs.c drm: Upcast struct drm_device.dev to struct pci_device; replace pdev 2021-01-19 09:06:38 +01:00
drm_cache.c drm: Include <linux/mem_encrypt.h> in drm_cache.c 2021-01-14 09:42:31 +01:00
drm_client.c
drm_client_modeset.c drm: replace drm_modeset_lock_all() in drm_client_modeset_dpms_legacy() 2021-02-09 17:16:57 +01:00
drm_color_mgmt.c drm: add legacy support for using degamma for gamma 2020-12-15 15:46:03 +02:00
drm_connector.c
drm_context.c
drm_crtc.c drm/imx: fixes and drm managed resources 2021-01-07 11:24:50 +01:00
drm_crtc_helper.c
drm_crtc_helper_internal.h drm: remove drm_fb_helper_modinit 2021-02-08 12:20:38 +01:00
drm_crtc_internal.h
drm_damage_helper.c
drm_debugfs.c
drm_debugfs_crc.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c - HDCP 2.2 and HDCP 1.4 Gen12 DP MST support (Anshuman) 2021-01-29 17:05:15 +10:00
drm_dp_mst_topology.c drm pull for 5.12-rc1 2021-02-21 14:44:44 -08:00
drm_dp_mst_topology_internal.h
drm_drv.c drm: Unamp the entire device address space on device unplug 2021-01-19 10:22:14 +01:00
drm_dsc.c drm/dsc: add helper for calculating rc buffer size from DPCD 2020-12-10 10:49:47 +02:00
drm_dumb_buffers.c drm: Don't export the drm_gem_dumb_destroy() function 2021-01-05 07:20:25 +02:00
drm_edid.c drm: Upcast struct drm_device.dev to struct pci_device; replace pdev 2021-01-19 09:06:38 +01:00
drm_edid_load.c
drm_encoder.c drm: add drmm_encoder_alloc() 2021-01-04 12:59:33 +01:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c Modules updates for v5.12 2021-02-23 10:15:33 -08:00
drm_file.c drm/drm_vblank: set the dma-fence timestamp during send_vblank_event 2021-02-24 21:05:54 +05:30
drm_flip_work.c
drm_format_helper.c
drm_fourcc.c
drm_framebuffer.c
drm_gem.c drm: Set vm_ops to GEM object's values during mmap 2021-01-18 10:37:26 +01:00
drm_gem_cma_helper.c drm/cma-helper: Implement mmap as GEM CMA object functions 2020-11-30 13:38:27 +01:00
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/vram-helper: Reuse existing page mappings in vmap 2021-01-19 15:37:14 +01:00
drm_hashtab.c
drm_hdcp.c
drm_internal.h drm: Don't export the drm_gem_dumb_destroy() function 2021-01-05 07:20:25 +02:00
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm: Upcast struct drm_device.dev to struct pci_device; replace pdev 2021-01-19 09:06:38 +01:00
drm_kms_helper_common.c drm: remove drm_fb_helper_modinit 2021-02-08 12:20:38 +01:00
drm_lease.c
drm_legacy.h drm: Merge CONFIG_DRM_VM into CONFIG_DRM_LEGACY 2021-01-13 14:22:37 +01:00
drm_legacy_misc.c
drm_lock.c
drm_managed.c
drm_memory.c drm: Implement drm_need_swiotlb() in drm_cache.c 2021-01-13 14:22:29 +01:00
drm_mipi_dbi.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c drm-misc-next for v5.12: 2021-01-07 13:40:20 +01:00
drm_mode_object.c
drm_modes.c drm/modes: Switch to 64bit maths to avoid integer overflow 2021-01-14 19:37:53 +02:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_panel_orientation_quirks.c
drm_pci.c drm: Upcast struct drm_device.dev to struct pci_device; replace pdev 2021-01-19 09:06:38 +01:00
drm_plane.c Linux 5.11-rc5 2021-01-25 14:35:44 +10:00
drm_plane_helper.c
drm_prime.c drm: Set vm_ops to GEM object's values during mmap 2021-01-18 10:37:26 +01:00
drm_print.c
drm_probe_helper.c drm: Add default modes for connectors in unknown state 2021-01-05 07:19:50 +02:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c drm/simple_kms_helper: add drmm_simple_encoder_alloc() 2021-01-04 12:59:33 +01:00
drm_syncobj.c drm/syncobj: Fix use-after-free 2021-01-20 10:28:39 +01:00
drm_sysfs.c
drm_trace.h
drm_trace_points.c
drm_vblank.c drm/drm_vblank: set the dma-fence timestamp during send_vblank_event 2021-02-24 21:05:54 +05:30
drm_vblank_work.c
drm_vm.c drm: Upcast struct drm_device.dev to struct pci_device; replace pdev 2021-01-19 09:06:38 +01:00
drm_vma_manager.c
drm_writeback.c
Kconfig kconfig for kcmp syscall 2021-02-22 17:15:30 -08:00
Makefile drm: Merge CONFIG_DRM_VM into CONFIG_DRM_LEGACY 2021-01-13 14:22:37 +01:00