Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/pfit: split out intel_pfit_regs.h

Split out the panel fitter registers to a separate file.

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/db8952baa3e3e5eaaa8a3a5bc723c4e47aeaa6a7.1740564009.git.jani.nikula@intel.com

+83 -70
+1
drivers/gpu/drm/i915/display/intel_lvds.c
··· 53 53 #include "intel_lvds_regs.h" 54 54 #include "intel_panel.h" 55 55 #include "intel_pfit.h" 56 + #include "intel_pfit_regs.h" 56 57 #include "intel_pps_regs.h" 57 58 58 59 /* Private structure for the integrated LVDS support */
+1
drivers/gpu/drm/i915/display/intel_overlay.c
··· 42 42 #include "intel_frontbuffer.h" 43 43 #include "intel_overlay.h" 44 44 #include "intel_pci_config.h" 45 + #include "intel_pfit_regs.h" 45 46 46 47 /* Limits for overlay size. According to intel doc, the real limits are: 47 48 * Y width: 4095, UV width (planar): 2047, Y height: 2047,
+1
drivers/gpu/drm/i915/display/intel_pfit.c
··· 11 11 #include "intel_display_types.h" 12 12 #include "intel_lvds_regs.h" 13 13 #include "intel_pfit.h" 14 + #include "intel_pfit_regs.h" 14 15 15 16 static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_state) 16 17 {
+79
drivers/gpu/drm/i915/display/intel_pfit_regs.h
··· 1 + /* SPDX-License-Identifier: MIT */ 2 + /* Copyright © 2025 Intel Corporation */ 3 + 4 + #ifndef __INTEL_PFIT_REGS_H__ 5 + #define __INTEL_PFIT_REGS_H__ 6 + 7 + #include "intel_display_reg_defs.h" 8 + 9 + /* Panel fitting */ 10 + #define PFIT_CONTROL(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61230) 11 + #define PFIT_ENABLE REG_BIT(31) 12 + #define PFIT_PIPE_MASK REG_GENMASK(30, 29) /* 965+ */ 13 + #define PFIT_PIPE(pipe) REG_FIELD_PREP(PFIT_PIPE_MASK, (pipe)) 14 + #define PFIT_SCALING_MASK REG_GENMASK(28, 26) /* 965+ */ 15 + #define PFIT_SCALING_AUTO REG_FIELD_PREP(PFIT_SCALING_MASK, 0) 16 + #define PFIT_SCALING_PROGRAMMED REG_FIELD_PREP(PFIT_SCALING_MASK, 1) 17 + #define PFIT_SCALING_PILLAR REG_FIELD_PREP(PFIT_SCALING_MASK, 2) 18 + #define PFIT_SCALING_LETTER REG_FIELD_PREP(PFIT_SCALING_MASK, 3) 19 + #define PFIT_FILTER_MASK REG_GENMASK(25, 24) /* 965+ */ 20 + #define PFIT_FILTER_FUZZY REG_FIELD_PREP(PFIT_FILTER_MASK, 0) 21 + #define PFIT_FILTER_CRISP REG_FIELD_PREP(PFIT_FILTER_MASK, 1) 22 + #define PFIT_FILTER_MEDIAN REG_FIELD_PREP(PFIT_FILTER_MASK, 2) 23 + #define PFIT_VERT_INTERP_MASK REG_GENMASK(11, 10) /* pre-965 */ 24 + #define PFIT_VERT_INTERP_BILINEAR REG_FIELD_PREP(PFIT_VERT_INTERP_MASK, 1) 25 + #define PFIT_VERT_AUTO_SCALE REG_BIT(9) /* pre-965 */ 26 + #define PFIT_HORIZ_INTERP_MASK REG_GENMASK(7, 6) /* pre-965 */ 27 + #define PFIT_HORIZ_INTERP_BILINEAR REG_FIELD_PREP(PFIT_HORIZ_INTERP_MASK, 1) 28 + #define PFIT_HORIZ_AUTO_SCALE REG_BIT(5) /* pre-965 */ 29 + #define PFIT_PANEL_8TO6_DITHER_ENABLE REG_BIT(3) /* pre-965 */ 30 + 31 + #define PFIT_PGM_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61234) 32 + #define PFIT_VERT_SCALE_MASK REG_GENMASK(31, 20) /* pre-965 */ 33 + #define PFIT_VERT_SCALE(x) REG_FIELD_PREP(PFIT_VERT_SCALE_MASK, (x)) 34 + #define PFIT_HORIZ_SCALE_MASK REG_GENMASK(15, 4) /* pre-965 */ 35 + #define PFIT_HORIZ_SCALE(x) REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK, (x)) 36 + #define PFIT_VERT_SCALE_MASK_965 REG_GENMASK(28, 16) /* 965+ */ 37 + #define PFIT_HORIZ_SCALE_MASK_965 REG_GENMASK(12, 0) /* 965+ */ 38 + 39 + #define PFIT_AUTO_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238) 40 + 41 + /* CPU panel fitter */ 42 + /* IVB+ has 3 fitters, 0 is 7x5 capable, the other two only 3x3 */ 43 + #define _PFA_CTL_1 0x68080 44 + #define _PFB_CTL_1 0x68880 45 + #define PF_CTL(pipe) _MMIO_PIPE(pipe, _PFA_CTL_1, _PFB_CTL_1) 46 + #define PF_ENABLE REG_BIT(31) 47 + #define PF_PIPE_SEL_MASK_IVB REG_GENMASK(30, 29) /* ivb/hsw */ 48 + #define PF_PIPE_SEL_IVB(pipe) REG_FIELD_PREP(PF_PIPE_SEL_MASK_IVB, (pipe)) 49 + #define PF_FILTER_MASK REG_GENMASK(24, 23) 50 + #define PF_FILTER_PROGRAMMED REG_FIELD_PREP(PF_FILTER_MASK, 0) 51 + #define PF_FILTER_MED_3x3 REG_FIELD_PREP(PF_FILTER_MASK, 1) 52 + #define PF_FILTER_EDGE_ENHANCE REG_FIELD_PREP(PF_FILTER_EDGE_MASK, 2) 53 + #define PF_FILTER_EDGE_SOFTEN REG_FIELD_PREP(PF_FILTER_EDGE_MASK, 3) 54 + 55 + #define _PFA_WIN_SZ 0x68074 56 + #define _PFB_WIN_SZ 0x68874 57 + #define PF_WIN_SZ(pipe) _MMIO_PIPE(pipe, _PFA_WIN_SZ, _PFB_WIN_SZ) 58 + #define PF_WIN_XSIZE_MASK REG_GENMASK(31, 16) 59 + #define PF_WIN_XSIZE(w) REG_FIELD_PREP(PF_WIN_XSIZE_MASK, (w)) 60 + #define PF_WIN_YSIZE_MASK REG_GENMASK(15, 0) 61 + #define PF_WIN_YSIZE(h) REG_FIELD_PREP(PF_WIN_YSIZE_MASK, (h)) 62 + 63 + #define _PFA_WIN_POS 0x68070 64 + #define _PFB_WIN_POS 0x68870 65 + #define PF_WIN_POS(pipe) _MMIO_PIPE(pipe, _PFA_WIN_POS, _PFB_WIN_POS) 66 + #define PF_WIN_XPOS_MASK REG_GENMASK(31, 16) 67 + #define PF_WIN_XPOS(x) REG_FIELD_PREP(PF_WIN_XPOS_MASK, (x)) 68 + #define PF_WIN_YPOS_MASK REG_GENMASK(15, 0) 69 + #define PF_WIN_YPOS(y) REG_FIELD_PREP(PF_WIN_YPOS_MASK, (y)) 70 + 71 + #define _PFA_VSCALE 0x68084 72 + #define _PFB_VSCALE 0x68884 73 + #define PF_VSCALE(pipe) _MMIO_PIPE(pipe, _PFA_VSCALE, _PFB_VSCALE) 74 + 75 + #define _PFA_HSCALE 0x68090 76 + #define _PFB_HSCALE 0x68890 77 + #define PF_HSCALE(pipe) _MMIO_PIPE(pipe, _PFA_HSCALE, _PFB_HSCALE) 78 + 79 + #endif /* __INTEL_PFIT_REGS_H__ */
-70
drivers/gpu/drm/i915/i915_reg.h
··· 1385 1385 /* ADL and later: */ 1386 1386 #define VIDEO_DIP_ENABLE_AS_ADL REG_BIT(23) 1387 1387 1388 - /* Panel fitting */ 1389 - #define PFIT_CONTROL(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61230) 1390 - #define PFIT_ENABLE REG_BIT(31) 1391 - #define PFIT_PIPE_MASK REG_GENMASK(30, 29) /* 965+ */ 1392 - #define PFIT_PIPE(pipe) REG_FIELD_PREP(PFIT_PIPE_MASK, (pipe)) 1393 - #define PFIT_SCALING_MASK REG_GENMASK(28, 26) /* 965+ */ 1394 - #define PFIT_SCALING_AUTO REG_FIELD_PREP(PFIT_SCALING_MASK, 0) 1395 - #define PFIT_SCALING_PROGRAMMED REG_FIELD_PREP(PFIT_SCALING_MASK, 1) 1396 - #define PFIT_SCALING_PILLAR REG_FIELD_PREP(PFIT_SCALING_MASK, 2) 1397 - #define PFIT_SCALING_LETTER REG_FIELD_PREP(PFIT_SCALING_MASK, 3) 1398 - #define PFIT_FILTER_MASK REG_GENMASK(25, 24) /* 965+ */ 1399 - #define PFIT_FILTER_FUZZY REG_FIELD_PREP(PFIT_FILTER_MASK, 0) 1400 - #define PFIT_FILTER_CRISP REG_FIELD_PREP(PFIT_FILTER_MASK, 1) 1401 - #define PFIT_FILTER_MEDIAN REG_FIELD_PREP(PFIT_FILTER_MASK, 2) 1402 - #define PFIT_VERT_INTERP_MASK REG_GENMASK(11, 10) /* pre-965 */ 1403 - #define PFIT_VERT_INTERP_BILINEAR REG_FIELD_PREP(PFIT_VERT_INTERP_MASK, 1) 1404 - #define PFIT_VERT_AUTO_SCALE REG_BIT(9) /* pre-965 */ 1405 - #define PFIT_HORIZ_INTERP_MASK REG_GENMASK(7, 6) /* pre-965 */ 1406 - #define PFIT_HORIZ_INTERP_BILINEAR REG_FIELD_PREP(PFIT_HORIZ_INTERP_MASK, 1) 1407 - #define PFIT_HORIZ_AUTO_SCALE REG_BIT(5) /* pre-965 */ 1408 - #define PFIT_PANEL_8TO6_DITHER_ENABLE REG_BIT(3) /* pre-965 */ 1409 - 1410 - #define PFIT_PGM_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61234) 1411 - #define PFIT_VERT_SCALE_MASK REG_GENMASK(31, 20) /* pre-965 */ 1412 - #define PFIT_VERT_SCALE(x) REG_FIELD_PREP(PFIT_VERT_SCALE_MASK, (x)) 1413 - #define PFIT_HORIZ_SCALE_MASK REG_GENMASK(15, 4) /* pre-965 */ 1414 - #define PFIT_HORIZ_SCALE(x) REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK, (x)) 1415 - #define PFIT_VERT_SCALE_MASK_965 REG_GENMASK(28, 16) /* 965+ */ 1416 - #define PFIT_HORIZ_SCALE_MASK_965 REG_GENMASK(12, 0) /* 965+ */ 1417 - 1418 - #define PFIT_AUTO_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238) 1419 - 1420 1388 #define PCH_GTC_CTL _MMIO(0xe7000) 1421 1389 #define PCH_GTC_ENABLE (1 << 31) 1422 1390 ··· 1878 1910 #define _PIPEA_LINK_N2 0x6004c 1879 1911 #define _PIPEB_LINK_N2 0x6104c 1880 1912 #define PIPE_LINK_N2(dev_priv, tran) _MMIO_TRANS2(dev_priv, tran, _PIPEA_LINK_N2) 1881 - 1882 - /* CPU panel fitter */ 1883 - /* IVB+ has 3 fitters, 0 is 7x5 capable, the other two only 3x3 */ 1884 - #define _PFA_CTL_1 0x68080 1885 - #define _PFB_CTL_1 0x68880 1886 - #define PF_CTL(pipe) _MMIO_PIPE(pipe, _PFA_CTL_1, _PFB_CTL_1) 1887 - #define PF_ENABLE REG_BIT(31) 1888 - #define PF_PIPE_SEL_MASK_IVB REG_GENMASK(30, 29) /* ivb/hsw */ 1889 - #define PF_PIPE_SEL_IVB(pipe) REG_FIELD_PREP(PF_PIPE_SEL_MASK_IVB, (pipe)) 1890 - #define PF_FILTER_MASK REG_GENMASK(24, 23) 1891 - #define PF_FILTER_PROGRAMMED REG_FIELD_PREP(PF_FILTER_MASK, 0) 1892 - #define PF_FILTER_MED_3x3 REG_FIELD_PREP(PF_FILTER_MASK, 1) 1893 - #define PF_FILTER_EDGE_ENHANCE REG_FIELD_PREP(PF_FILTER_EDGE_MASK, 2) 1894 - #define PF_FILTER_EDGE_SOFTEN REG_FIELD_PREP(PF_FILTER_EDGE_MASK, 3) 1895 - 1896 - #define _PFA_WIN_SZ 0x68074 1897 - #define _PFB_WIN_SZ 0x68874 1898 - #define PF_WIN_SZ(pipe) _MMIO_PIPE(pipe, _PFA_WIN_SZ, _PFB_WIN_SZ) 1899 - #define PF_WIN_XSIZE_MASK REG_GENMASK(31, 16) 1900 - #define PF_WIN_XSIZE(w) REG_FIELD_PREP(PF_WIN_XSIZE_MASK, (w)) 1901 - #define PF_WIN_YSIZE_MASK REG_GENMASK(15, 0) 1902 - #define PF_WIN_YSIZE(h) REG_FIELD_PREP(PF_WIN_YSIZE_MASK, (h)) 1903 - 1904 - #define _PFA_WIN_POS 0x68070 1905 - #define _PFB_WIN_POS 0x68870 1906 - #define PF_WIN_POS(pipe) _MMIO_PIPE(pipe, _PFA_WIN_POS, _PFB_WIN_POS) 1907 - #define PF_WIN_XPOS_MASK REG_GENMASK(31, 16) 1908 - #define PF_WIN_XPOS(x) REG_FIELD_PREP(PF_WIN_XPOS_MASK, (x)) 1909 - #define PF_WIN_YPOS_MASK REG_GENMASK(15, 0) 1910 - #define PF_WIN_YPOS(y) REG_FIELD_PREP(PF_WIN_YPOS_MASK, (y)) 1911 - 1912 - #define _PFA_VSCALE 0x68084 1913 - #define _PFB_VSCALE 0x68884 1914 - #define PF_VSCALE(pipe) _MMIO_PIPE(pipe, _PFA_VSCALE, _PFB_VSCALE) 1915 - 1916 - #define _PFA_HSCALE 0x68090 1917 - #define _PFB_HSCALE 0x68890 1918 - #define PF_HSCALE(pipe) _MMIO_PIPE(pipe, _PFA_HSCALE, _PFB_HSCALE) 1919 1913 1920 1914 /* 1921 1915 * Skylake scalers
+1
drivers/gpu/drm/i915/intel_gvt_mmio_table.c
··· 18 18 #include "display/intel_fbc_regs.h" 19 19 #include "display/intel_fdi_regs.h" 20 20 #include "display/intel_lvds_regs.h" 21 + #include "display/intel_pfit_regs.h" 21 22 #include "display/intel_psr_regs.h" 22 23 #include "display/intel_sprite_regs.h" 23 24 #include "display/skl_universal_plane_regs.h"