| 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 |  | 
|---|