Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * include/video/gbe.h -- SGI GBE (Graphics Back End)
0004  *
0005  * Copyright (C) 1999 Silicon Graphics, Inc. (Jeffrey Newquist)
0006  */
0007 
0008 #ifndef __GBE_H__
0009 #define __GBE_H__
0010 
0011 struct sgi_gbe {
0012     volatile uint32_t ctrlstat; /* general control */
0013     volatile uint32_t dotclock; /* dot clock PLL control */
0014     volatile uint32_t i2c;      /* crt I2C control */
0015     volatile uint32_t sysclk;   /* system clock PLL control */
0016     volatile uint32_t i2cfp;    /* flat panel I2C control */
0017     volatile uint32_t id;       /* device id/chip revision */
0018     volatile uint32_t config;       /* power on configuration [1] */
0019     volatile uint32_t bist;         /* internal bist status [1] */
0020     uint32_t _pad0[0x010000/4 - 8];
0021     volatile uint32_t vt_xy;    /* current dot coords */
0022     volatile uint32_t vt_xymax; /* maximum dot coords */
0023     volatile uint32_t vt_vsync; /* vsync on/off */
0024     volatile uint32_t vt_hsync; /* hsync on/off */
0025     volatile uint32_t vt_vblank;    /* vblank on/off */
0026     volatile uint32_t vt_hblank;    /* hblank on/off */
0027     volatile uint32_t vt_flags; /* polarity of vt signals */
0028     volatile uint32_t vt_f2rf_lock; /* f2rf & framelck y coord */
0029     volatile uint32_t vt_intr01;    /* intr 0,1 y coords */
0030     volatile uint32_t vt_intr23;    /* intr 2,3 y coords */
0031     volatile uint32_t fp_hdrv;  /* flat panel hdrv on/off */
0032     volatile uint32_t fp_vdrv;  /* flat panel vdrv on/off */
0033     volatile uint32_t fp_de;    /* flat panel de on/off */
0034     volatile uint32_t vt_hpixen;    /* intrnl horiz pixel on/off */
0035     volatile uint32_t vt_vpixen;    /* intrnl vert pixel on/off */
0036     volatile uint32_t vt_hcmap; /* cmap write (horiz) */
0037     volatile uint32_t vt_vcmap; /* cmap write (vert) */
0038     volatile uint32_t did_start_xy; /* eol/f did/xy reset val */
0039     volatile uint32_t crs_start_xy; /* eol/f crs/xy reset val */
0040     volatile uint32_t vc_start_xy;  /* eol/f vc/xy reset val */
0041     uint32_t _pad1[0xffb0/4];
0042     volatile uint32_t ovr_width_tile;/*overlay plane ctrl 0 */
0043     volatile uint32_t ovr_inhwctrl; /* overlay plane ctrl 1 */
0044     volatile uint32_t ovr_control;  /* overlay plane ctrl 1 */
0045     uint32_t _pad2[0xfff4/4];
0046     volatile uint32_t frm_size_tile;/* normal plane ctrl 0 */
0047     volatile uint32_t frm_size_pixel;/*normal plane ctrl 1 */
0048     volatile uint32_t frm_inhwctrl; /* normal plane ctrl 2 */
0049     volatile uint32_t frm_control;  /* normal plane ctrl 3 */
0050     uint32_t _pad3[0xfff0/4];
0051     volatile uint32_t did_inhwctrl; /* DID control */
0052     volatile uint32_t did_control;  /* DID shadow */
0053     uint32_t _pad4[0x7ff8/4];
0054     volatile uint32_t mode_regs[32];/* WID table */
0055     uint32_t _pad5[0x7f80/4];
0056     volatile uint32_t cmap[6144];   /* color map */
0057     uint32_t _pad6[0x2000/4];
0058     volatile uint32_t cm_fifo;  /* color map fifo status */
0059     uint32_t _pad7[0x7ffc/4];
0060     volatile uint32_t gmap[256];    /* gamma map */
0061     uint32_t _pad8[0x7c00/4];
0062     volatile uint32_t gmap10[1024]; /* gamma map */
0063     uint32_t _pad9[0x7000/4];
0064     volatile uint32_t crs_pos;  /* cusror control 0 */
0065     volatile uint32_t crs_ctl;  /* cusror control 1 */
0066     volatile uint32_t crs_cmap[3];  /* crs cmap */
0067     uint32_t _pad10[0x7fec/4];
0068     volatile uint32_t crs_glyph[64];/* crs glyph */
0069     uint32_t _pad11[0x7f00/4];
0070     volatile uint32_t vc_0; /* video capture crtl 0 */
0071     volatile uint32_t vc_1; /* video capture crtl 1 */
0072     volatile uint32_t vc_2; /* video capture crtl 2 */
0073     volatile uint32_t vc_3; /* video capture crtl 3 */
0074     volatile uint32_t vc_4; /* video capture crtl 4 */
0075     volatile uint32_t vc_5; /* video capture crtl 5 */
0076     volatile uint32_t vc_6; /* video capture crtl 6 */
0077     volatile uint32_t vc_7; /* video capture crtl 7 */
0078     volatile uint32_t vc_8; /* video capture crtl 8 */
0079 };
0080 
0081 #define MASK(msb, lsb)      \
0082     ( (((u32)1<<((msb)-(lsb)+1))-1) << (lsb) )
0083 #define GET(v, msb, lsb)    \
0084     ( ((u32)(v) & MASK(msb,lsb)) >> (lsb) )
0085 #define SET(v, f, msb, lsb) \
0086     ( (v) = ((v)&~MASK(msb,lsb)) | (( (u32)(f)<<(lsb) ) & MASK(msb,lsb)) )
0087 
0088 #define GET_GBE_FIELD(reg, field, v)        \
0089     GET((v), GBE_##reg##_##field##_MSB, GBE_##reg##_##field##_LSB)
0090 #define SET_GBE_FIELD(reg, field, v, f)     \
0091     SET((v), (f), GBE_##reg##_##field##_MSB, GBE_##reg##_##field##_LSB)
0092 
0093 /*
0094  * Bit mask information
0095  */
0096 #define GBE_CTRLSTAT_CHIPID_MSB      3
0097 #define GBE_CTRLSTAT_CHIPID_LSB      0
0098 #define GBE_CTRLSTAT_SENSE_N_MSB     4
0099 #define GBE_CTRLSTAT_SENSE_N_LSB     4
0100 #define GBE_CTRLSTAT_PCLKSEL_MSB    29
0101 #define GBE_CTRLSTAT_PCLKSEL_LSB    28
0102 
0103 #define GBE_DOTCLK_M_MSB         7
0104 #define GBE_DOTCLK_M_LSB         0
0105 #define GBE_DOTCLK_N_MSB        13
0106 #define GBE_DOTCLK_N_LSB         8
0107 #define GBE_DOTCLK_P_MSB        15
0108 #define GBE_DOTCLK_P_LSB        14
0109 #define GBE_DOTCLK_RUN_MSB      20
0110 #define GBE_DOTCLK_RUN_LSB      20
0111 
0112 #define GBE_VT_XY_Y_MSB     23
0113 #define GBE_VT_XY_Y_LSB     12
0114 #define GBE_VT_XY_X_MSB     11
0115 #define GBE_VT_XY_X_LSB      0
0116 #define GBE_VT_XY_FREEZE_MSB        31
0117 #define GBE_VT_XY_FREEZE_LSB        31
0118 
0119 #define GBE_FP_VDRV_ON_MSB  23
0120 #define GBE_FP_VDRV_ON_LSB  12
0121 #define GBE_FP_VDRV_OFF_MSB 11
0122 #define GBE_FP_VDRV_OFF_LSB 0
0123 
0124 #define GBE_FP_HDRV_ON_MSB  23
0125 #define GBE_FP_HDRV_ON_LSB  12
0126 #define GBE_FP_HDRV_OFF_MSB 11
0127 #define GBE_FP_HDRV_OFF_LSB 0
0128 
0129 #define GBE_FP_DE_ON_MSB        23
0130 #define GBE_FP_DE_ON_LSB        12
0131 #define GBE_FP_DE_OFF_MSB       11
0132 #define GBE_FP_DE_OFF_LSB       0
0133 
0134 #define GBE_VT_VSYNC_VSYNC_ON_MSB   23
0135 #define GBE_VT_VSYNC_VSYNC_ON_LSB   12
0136 #define GBE_VT_VSYNC_VSYNC_OFF_MSB  11
0137 #define GBE_VT_VSYNC_VSYNC_OFF_LSB   0
0138 
0139 #define GBE_VT_HSYNC_HSYNC_ON_MSB   23
0140 #define GBE_VT_HSYNC_HSYNC_ON_LSB   12
0141 #define GBE_VT_HSYNC_HSYNC_OFF_MSB  11
0142 #define GBE_VT_HSYNC_HSYNC_OFF_LSB   0
0143 
0144 #define GBE_VT_VBLANK_VBLANK_ON_MSB 23
0145 #define GBE_VT_VBLANK_VBLANK_ON_LSB 12
0146 #define GBE_VT_VBLANK_VBLANK_OFF_MSB    11
0147 #define GBE_VT_VBLANK_VBLANK_OFF_LSB     0
0148 
0149 #define GBE_VT_HBLANK_HBLANK_ON_MSB 23
0150 #define GBE_VT_HBLANK_HBLANK_ON_LSB 12
0151 #define GBE_VT_HBLANK_HBLANK_OFF_MSB    11
0152 #define GBE_VT_HBLANK_HBLANK_OFF_LSB     0
0153 
0154 #define GBE_VT_FLAGS_F2RF_HIGH_MSB   6
0155 #define GBE_VT_FLAGS_F2RF_HIGH_LSB   6
0156 #define GBE_VT_FLAGS_SYNC_LOW_MSB    5
0157 #define GBE_VT_FLAGS_SYNC_LOW_LSB    5
0158 #define GBE_VT_FLAGS_SYNC_HIGH_MSB   4
0159 #define GBE_VT_FLAGS_SYNC_HIGH_LSB   4
0160 #define GBE_VT_FLAGS_HDRV_LOW_MSB    3
0161 #define GBE_VT_FLAGS_HDRV_LOW_LSB    3
0162 #define GBE_VT_FLAGS_HDRV_INVERT_MSB     2
0163 #define GBE_VT_FLAGS_HDRV_INVERT_LSB     2
0164 #define GBE_VT_FLAGS_VDRV_LOW_MSB    1
0165 #define GBE_VT_FLAGS_VDRV_LOW_LSB    1
0166 #define GBE_VT_FLAGS_VDRV_INVERT_MSB     0
0167 #define GBE_VT_FLAGS_VDRV_INVERT_LSB     0
0168 
0169 #define GBE_VT_VCMAP_VCMAP_ON_MSB   23
0170 #define GBE_VT_VCMAP_VCMAP_ON_LSB   12
0171 #define GBE_VT_VCMAP_VCMAP_OFF_MSB  11
0172 #define GBE_VT_VCMAP_VCMAP_OFF_LSB   0
0173 
0174 #define GBE_VT_HCMAP_HCMAP_ON_MSB   23
0175 #define GBE_VT_HCMAP_HCMAP_ON_LSB   12
0176 #define GBE_VT_HCMAP_HCMAP_OFF_MSB  11
0177 #define GBE_VT_HCMAP_HCMAP_OFF_LSB   0
0178 
0179 #define GBE_VT_XYMAX_MAXX_MSB   11
0180 #define GBE_VT_XYMAX_MAXX_LSB    0
0181 #define GBE_VT_XYMAX_MAXY_MSB   23
0182 #define GBE_VT_XYMAX_MAXY_LSB   12
0183 
0184 #define GBE_VT_HPIXEN_HPIXEN_ON_MSB 23
0185 #define GBE_VT_HPIXEN_HPIXEN_ON_LSB 12
0186 #define GBE_VT_HPIXEN_HPIXEN_OFF_MSB    11
0187 #define GBE_VT_HPIXEN_HPIXEN_OFF_LSB     0
0188 
0189 #define GBE_VT_VPIXEN_VPIXEN_ON_MSB 23
0190 #define GBE_VT_VPIXEN_VPIXEN_ON_LSB 12
0191 #define GBE_VT_VPIXEN_VPIXEN_OFF_MSB    11
0192 #define GBE_VT_VPIXEN_VPIXEN_OFF_LSB     0
0193 
0194 #define GBE_OVR_CONTROL_OVR_DMA_ENABLE_MSB   0
0195 #define GBE_OVR_CONTROL_OVR_DMA_ENABLE_LSB   0
0196 
0197 #define GBE_OVR_INHWCTRL_OVR_DMA_ENABLE_MSB  0
0198 #define GBE_OVR_INHWCTRL_OVR_DMA_ENABLE_LSB  0
0199 
0200 #define GBE_OVR_WIDTH_TILE_OVR_FIFO_RESET_MSB   13
0201 #define GBE_OVR_WIDTH_TILE_OVR_FIFO_RESET_LSB   13
0202 
0203 #define GBE_FRM_CONTROL_FRM_DMA_ENABLE_MSB   0
0204 #define GBE_FRM_CONTROL_FRM_DMA_ENABLE_LSB   0
0205 #define GBE_FRM_CONTROL_FRM_TILE_PTR_MSB    31
0206 #define GBE_FRM_CONTROL_FRM_TILE_PTR_LSB     9
0207 #define GBE_FRM_CONTROL_FRM_LINEAR_MSB       1
0208 #define GBE_FRM_CONTROL_FRM_LINEAR_LSB       1
0209 
0210 #define GBE_FRM_INHWCTRL_FRM_DMA_ENABLE_MSB  0
0211 #define GBE_FRM_INHWCTRL_FRM_DMA_ENABLE_LSB  0
0212 
0213 #define GBE_FRM_SIZE_TILE_FRM_WIDTH_TILE_MSB    12
0214 #define GBE_FRM_SIZE_TILE_FRM_WIDTH_TILE_LSB     5
0215 #define GBE_FRM_SIZE_TILE_FRM_RHS_MSB        4
0216 #define GBE_FRM_SIZE_TILE_FRM_RHS_LSB        0
0217 #define GBE_FRM_SIZE_TILE_FRM_DEPTH_MSB     14
0218 #define GBE_FRM_SIZE_TILE_FRM_DEPTH_LSB     13
0219 #define GBE_FRM_SIZE_TILE_FRM_FIFO_RESET_MSB    15
0220 #define GBE_FRM_SIZE_TILE_FRM_FIFO_RESET_LSB    15
0221 
0222 #define GBE_FRM_SIZE_PIXEL_FB_HEIGHT_PIX_MSB    31
0223 #define GBE_FRM_SIZE_PIXEL_FB_HEIGHT_PIX_LSB    16
0224 
0225 #define GBE_DID_CONTROL_DID_DMA_ENABLE_MSB   0
0226 #define GBE_DID_CONTROL_DID_DMA_ENABLE_LSB   0
0227 #define GBE_DID_INHWCTRL_DID_DMA_ENABLE_MSB  0
0228 #define GBE_DID_INHWCTRL_DID_DMA_ENABLE_LSB  0
0229 
0230 #define GBE_DID_START_XY_DID_STARTY_MSB     23
0231 #define GBE_DID_START_XY_DID_STARTY_LSB     12
0232 #define GBE_DID_START_XY_DID_STARTX_MSB     11
0233 #define GBE_DID_START_XY_DID_STARTX_LSB      0
0234 
0235 #define GBE_CRS_START_XY_CRS_STARTY_MSB     23
0236 #define GBE_CRS_START_XY_CRS_STARTY_LSB     12
0237 #define GBE_CRS_START_XY_CRS_STARTX_MSB     11
0238 #define GBE_CRS_START_XY_CRS_STARTX_LSB      0
0239 
0240 #define GBE_WID_AUX_MSB     12
0241 #define GBE_WID_AUX_LSB     11
0242 #define GBE_WID_GAMMA_MSB   10
0243 #define GBE_WID_GAMMA_LSB   10
0244 #define GBE_WID_CM_MSB       9
0245 #define GBE_WID_CM_LSB       5
0246 #define GBE_WID_TYP_MSB      4
0247 #define GBE_WID_TYP_LSB      2
0248 #define GBE_WID_BUF_MSB      1
0249 #define GBE_WID_BUF_LSB      0
0250 
0251 #define GBE_VC_START_XY_VC_STARTY_MSB   23
0252 #define GBE_VC_START_XY_VC_STARTY_LSB   12
0253 #define GBE_VC_START_XY_VC_STARTX_MSB   11
0254 #define GBE_VC_START_XY_VC_STARTX_LSB    0
0255 
0256 /* Constants */
0257 
0258 #define GBE_FRM_DEPTH_8     0
0259 #define GBE_FRM_DEPTH_16    1
0260 #define GBE_FRM_DEPTH_32    2
0261 
0262 #define GBE_CMODE_I8        0
0263 #define GBE_CMODE_I12       1
0264 #define GBE_CMODE_RG3B2     2
0265 #define GBE_CMODE_RGB4      3
0266 #define GBE_CMODE_ARGB5     4
0267 #define GBE_CMODE_RGB8      5
0268 #define GBE_CMODE_RGBA5     6
0269 #define GBE_CMODE_RGB10     7
0270 
0271 #define GBE_BMODE_BOTH      3
0272 
0273 #define GBE_CRS_MAGIC       54
0274 #define GBE_PIXEN_MAGIC_ON  19
0275 #define GBE_PIXEN_MAGIC_OFF  2
0276 
0277 #define GBE_TLB_SIZE        128
0278 
0279 /* [1] - only GBE revision 2 and later */
0280 
0281 /*
0282  * Video Timing Data Structure
0283  */
0284 
0285 struct gbe_timing_info {
0286     int flags;
0287     short width;        /* Monitor resolution */
0288     short height;
0289     int fields_sec;     /* fields/sec  (Hz -3 dec. places */
0290     int cfreq;      /* pixel clock frequency (MHz -3 dec. places) */
0291     short htotal;       /* Horizontal total pixels */
0292     short hblank_start; /* Horizontal blank start */
0293     short hblank_end;   /* Horizontal blank end */
0294     short hsync_start;  /* Horizontal sync start */
0295     short hsync_end;    /* Horizontal sync end */
0296     short vtotal;       /* Vertical total lines */
0297     short vblank_start; /* Vertical blank start */
0298     short vblank_end;   /* Vertical blank end */
0299     short vsync_start;  /* Vertical sync start */
0300     short vsync_end;    /* Vertical sync end */
0301     short pll_m;        /* PLL M parameter */
0302     short pll_n;        /* PLL P parameter */
0303     short pll_p;        /* PLL N parameter */
0304 };
0305 
0306 /* Defines for gbe_vof_info_t flags */
0307 
0308 #define GBE_VOF_UNKNOWNMON  1
0309 #define GBE_VOF_STEREO      2
0310 #define GBE_VOF_DO_GENSYNC  4   /* enable incoming sync */
0311 #define GBE_VOF_SYNC_ON_GREEN   8   /* sync on green */
0312 #define GBE_VOF_FLATPANEL   0x1000  /* FLATPANEL Timing */
0313 #define GBE_VOF_MAGICKEY    0x2000  /* Backdoor key */
0314 
0315 #endif      /* ! __GBE_H__ */