Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.2.
  1/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
  2/* Copyright (c) 2023 Imagination Technologies Ltd. */
  3
  4#ifndef PVR_ROGUE_CR_DEFS_CLIENT_H
  5#define PVR_ROGUE_CR_DEFS_CLIENT_H
  6
  7/* clang-format off */
  8
  9/*
 10 * This register controls the anti-aliasing mode of the Tiling Co-Processor, independent control is
 11 * provided in both X & Y axis.
 12 * This register needs to be set based on the ISP Samples Per Pixel a core supports.
 13 *
 14 * When ISP Samples Per Pixel = 1:
 15 * 2xmsaa is achieved by enabling Y - TE does AA on Y plane only
 16 * 4xmsaa is achieved by enabling Y and X - TE does AA on X and Y plane
 17 * 8xmsaa not supported by XE cores
 18 *
 19 * When ISP Samples Per Pixel = 2:
 20 * 2xmsaa is achieved by enabling X2 - does not affect TE
 21 * 4xmsaa is achieved by enabling Y and X2 - TE does AA on Y plane only
 22 * 8xmsaa is achieved by enabling Y, X and X2 - TE does AA on X and Y plane
 23 * 8xmsaa not supported by XE cores
 24 *
 25 * When ISP Samples Per Pixel = 4:
 26 * 2xmsaa is achieved by enabling X2 - does not affect TE
 27 * 4xmsaa is achieved by enabling Y2 and X2 - TE does AA on Y plane only
 28 * 8xmsaa not supported by XE cores
 29 */
 30/* Register ROGUE_CR_TE_AA */
 31#define ROGUE_CR_TE_AA 0x0C00U
 32#define ROGUE_CR_TE_AA_MASKFULL 0x000000000000000Full
 33/* Y2
 34 * Indicates 4xmsaa when X2 and Y2 are set to 1. This does not affect TE and is only used within
 35 * TPW.
 36 */
 37#define ROGUE_CR_TE_AA_Y2_SHIFT 3
 38#define ROGUE_CR_TE_AA_Y2_CLRMSK 0xFFFFFFF7
 39#define ROGUE_CR_TE_AA_Y2_EN 0x00000008
 40/* Y
 41 * Anti-Aliasing in Y Plane Enabled
 42 */
 43#define ROGUE_CR_TE_AA_Y_SHIFT 2
 44#define ROGUE_CR_TE_AA_Y_CLRMSK 0xFFFFFFFB
 45#define ROGUE_CR_TE_AA_Y_EN 0x00000004
 46/* X
 47 * Anti-Aliasing in X Plane Enabled
 48 */
 49#define ROGUE_CR_TE_AA_X_SHIFT 1
 50#define ROGUE_CR_TE_AA_X_CLRMSK 0xFFFFFFFD
 51#define ROGUE_CR_TE_AA_X_EN 0x00000002
 52/* X2
 53 * 2x Anti-Aliasing Enabled, affects PPP only
 54 */
 55#define ROGUE_CR_TE_AA_X2_SHIFT                             (0U)
 56#define ROGUE_CR_TE_AA_X2_CLRMSK                            (0xFFFFFFFEU)
 57#define ROGUE_CR_TE_AA_X2_EN                                (0x00000001U)
 58
 59/* MacroTile Boundaries X Plane */
 60/* Register ROGUE_CR_TE_MTILE1 */
 61#define ROGUE_CR_TE_MTILE1 0x0C08
 62#define ROGUE_CR_TE_MTILE1_MASKFULL 0x0000000007FFFFFFull
 63/* X1 default: 0x00000004
 64 * X1 MacroTile boundary, left tile X for second column of macrotiles (16MT mode) - 32 pixels across
 65 * tile
 66 */
 67#define ROGUE_CR_TE_MTILE1_X1_SHIFT 18
 68#define ROGUE_CR_TE_MTILE1_X1_CLRMSK 0xF803FFFF
 69/* X2 default: 0x00000008
 70 * X2 MacroTile boundary, left tile X for third(16MT) column of macrotiles - 32 pixels across tile
 71 */
 72#define ROGUE_CR_TE_MTILE1_X2_SHIFT 9U
 73#define ROGUE_CR_TE_MTILE1_X2_CLRMSK 0xFFFC01FF
 74/* X3 default: 0x0000000c
 75 * X3 MacroTile boundary, left tile X for fourth column of macrotiles (16MT) - 32 pixels across tile
 76 */
 77#define ROGUE_CR_TE_MTILE1_X3_SHIFT 0
 78#define ROGUE_CR_TE_MTILE1_X3_CLRMSK 0xFFFFFE00
 79
 80/* MacroTile Boundaries Y Plane. */
 81/* Register ROGUE_CR_TE_MTILE2 */
 82#define ROGUE_CR_TE_MTILE2 0x0C10
 83#define ROGUE_CR_TE_MTILE2_MASKFULL 0x0000000007FFFFFFull
 84/* Y1 default: 0x00000004
 85 * X1 MacroTile boundary, ltop tile Y for second column of macrotiles (16MT mode) - 32 pixels tile
 86 * height
 87 */
 88#define ROGUE_CR_TE_MTILE2_Y1_SHIFT 18
 89#define ROGUE_CR_TE_MTILE2_Y1_CLRMSK 0xF803FFFF
 90/* Y2 default: 0x00000008
 91 * X2 MacroTile boundary, top tile Y for third(16MT) column of macrotiles - 32 pixels tile height
 92 */
 93#define ROGUE_CR_TE_MTILE2_Y2_SHIFT 9
 94#define ROGUE_CR_TE_MTILE2_Y2_CLRMSK 0xFFFC01FF
 95/* Y3 default: 0x0000000c
 96 * X3 MacroTile boundary, top tile Y for fourth column of macrotiles (16MT) - 32 pixels tile height
 97 */
 98#define ROGUE_CR_TE_MTILE2_Y3_SHIFT 0
 99#define ROGUE_CR_TE_MTILE2_Y3_CLRMSK 0xFFFFFE00
100
101/*
102 * In order to perform the tiling operation and generate the display list the maximum screen size
103 * must be configured in terms of the number of tiles in X & Y axis.
104 */
105
106/* Register ROGUE_CR_TE_SCREEN */
107#define ROGUE_CR_TE_SCREEN 0x0C18U
108#define ROGUE_CR_TE_SCREEN_MASKFULL 0x00000000001FF1FFull
109/* YMAX default: 0x00000010
110 * Maximum Y tile address visible on screen, 32 pixel tile height, 16Kx16K max screen size
111 */
112#define ROGUE_CR_TE_SCREEN_YMAX_SHIFT 12
113#define ROGUE_CR_TE_SCREEN_YMAX_CLRMSK 0xFFE00FFF
114/* XMAX default: 0x00000010
115 * Maximum X tile address visible on screen, 32 pixel tile width, 16Kx16K max screen size
116 */
117#define ROGUE_CR_TE_SCREEN_XMAX_SHIFT 0
118#define ROGUE_CR_TE_SCREEN_XMAX_CLRMSK 0xFFFFFE00
119
120/*
121 * In order to perform the tiling operation and generate the display list the maximum screen size
122 * must be configured in terms of the number of pixels in X & Y axis since this may not be the same
123 * as the number of tiles defined in the RGX_CR_TE_SCREEN register.
124 */
125/* Register ROGUE_CR_PPP_SCREEN */
126#define ROGUE_CR_PPP_SCREEN 0x0C98
127#define ROGUE_CR_PPP_SCREEN_MASKFULL 0x000000007FFF7FFFull
128/* PIXYMAX
129 * Screen height in pixels. (16K x 16K max screen size)
130 */
131#define ROGUE_CR_PPP_SCREEN_PIXYMAX_SHIFT 16
132#define ROGUE_CR_PPP_SCREEN_PIXYMAX_CLRMSK 0x8000FFFF
133/* PIXXMAX
134 * Screen width in pixels.(16K x 16K max screen size)
135 */
136#define ROGUE_CR_PPP_SCREEN_PIXXMAX_SHIFT 0
137#define ROGUE_CR_PPP_SCREEN_PIXXMAX_CLRMSK 0xFFFF8000
138
139/* Register ROGUE_CR_ISP_MTILE_SIZE */
140#define ROGUE_CR_ISP_MTILE_SIZE 0x0F18
141#define ROGUE_CR_ISP_MTILE_SIZE_MASKFULL 0x0000000003FF03FFull
142/* X
143 * Macrotile width, in tiles. A value of zero corresponds to the maximum size
144 */
145#define ROGUE_CR_ISP_MTILE_SIZE_X_SHIFT 16
146#define ROGUE_CR_ISP_MTILE_SIZE_X_CLRMSK 0xFC00FFFF
147#define ROGUE_CR_ISP_MTILE_SIZE_X_ALIGNSHIFT 0
148#define ROGUE_CR_ISP_MTILE_SIZE_X_ALIGNSIZE 1
149/* Y
150 * Macrotile height, in tiles. A value of zero corresponds to the maximum size
151 */
152#define ROGUE_CR_ISP_MTILE_SIZE_Y_SHIFT 0
153#define ROGUE_CR_ISP_MTILE_SIZE_Y_CLRMSK 0xFFFFFC00
154#define ROGUE_CR_ISP_MTILE_SIZE_Y_ALIGNSHIFT 0
155#define ROGUE_CR_ISP_MTILE_SIZE_Y_ALIGNSIZE 1
156
157/* clang-format on */
158
159#endif /* PVR_ROGUE_CR_DEFS_CLIENT_H */