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__ */ |
80 | |