0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __GBE_H__
0009 #define __GBE_H__
0010
0011 struct sgi_gbe {
0012 volatile uint32_t ctrlstat;
0013 volatile uint32_t dotclock;
0014 volatile uint32_t i2c;
0015 volatile uint32_t sysclk;
0016 volatile uint32_t i2cfp;
0017 volatile uint32_t id;
0018 volatile uint32_t config;
0019 volatile uint32_t bist;
0020 uint32_t _pad0[0x010000/4 - 8];
0021 volatile uint32_t vt_xy;
0022 volatile uint32_t vt_xymax;
0023 volatile uint32_t vt_vsync;
0024 volatile uint32_t vt_hsync;
0025 volatile uint32_t vt_vblank;
0026 volatile uint32_t vt_hblank;
0027 volatile uint32_t vt_flags;
0028 volatile uint32_t vt_f2rf_lock;
0029 volatile uint32_t vt_intr01;
0030 volatile uint32_t vt_intr23;
0031 volatile uint32_t fp_hdrv;
0032 volatile uint32_t fp_vdrv;
0033 volatile uint32_t fp_de;
0034 volatile uint32_t vt_hpixen;
0035 volatile uint32_t vt_vpixen;
0036 volatile uint32_t vt_hcmap;
0037 volatile uint32_t vt_vcmap;
0038 volatile uint32_t did_start_xy;
0039 volatile uint32_t crs_start_xy;
0040 volatile uint32_t vc_start_xy;
0041 uint32_t _pad1[0xffb0/4];
0042 volatile uint32_t ovr_width_tile;
0043 volatile uint32_t ovr_inhwctrl;
0044 volatile uint32_t ovr_control;
0045 uint32_t _pad2[0xfff4/4];
0046 volatile uint32_t frm_size_tile;
0047 volatile uint32_t frm_size_pixel;
0048 volatile uint32_t frm_inhwctrl;
0049 volatile uint32_t frm_control;
0050 uint32_t _pad3[0xfff0/4];
0051 volatile uint32_t did_inhwctrl;
0052 volatile uint32_t did_control;
0053 uint32_t _pad4[0x7ff8/4];
0054 volatile uint32_t mode_regs[32];
0055 uint32_t _pad5[0x7f80/4];
0056 volatile uint32_t cmap[6144];
0057 uint32_t _pad6[0x2000/4];
0058 volatile uint32_t cm_fifo;
0059 uint32_t _pad7[0x7ffc/4];
0060 volatile uint32_t gmap[256];
0061 uint32_t _pad8[0x7c00/4];
0062 volatile uint32_t gmap10[1024];
0063 uint32_t _pad9[0x7000/4];
0064 volatile uint32_t crs_pos;
0065 volatile uint32_t crs_ctl;
0066 volatile uint32_t crs_cmap[3];
0067 uint32_t _pad10[0x7fec/4];
0068 volatile uint32_t crs_glyph[64];
0069 uint32_t _pad11[0x7f00/4];
0070 volatile uint32_t vc_0;
0071 volatile uint32_t vc_1;
0072 volatile uint32_t vc_2;
0073 volatile uint32_t vc_3;
0074 volatile uint32_t vc_4;
0075 volatile uint32_t vc_5;
0076 volatile uint32_t vc_6;
0077 volatile uint32_t vc_7;
0078 volatile uint32_t vc_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
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
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
0280
0281
0282
0283
0284
0285 struct gbe_timing_info {
0286 int flags;
0287 short width;
0288 short height;
0289 int fields_sec;
0290 int cfreq;
0291 short htotal;
0292 short hblank_start;
0293 short hblank_end;
0294 short hsync_start;
0295 short hsync_end;
0296 short vtotal;
0297 short vblank_start;
0298 short vblank_end;
0299 short vsync_start;
0300 short vsync_end;
0301 short pll_m;
0302 short pll_n;
0303 short pll_p;
0304 };
0305
0306
0307
0308 #define GBE_VOF_UNKNOWNMON 1
0309 #define GBE_VOF_STEREO 2
0310 #define GBE_VOF_DO_GENSYNC 4
0311 #define GBE_VOF_SYNC_ON_GREEN 8
0312 #define GBE_VOF_FLATPANEL 0x1000
0313 #define GBE_VOF_MAGICKEY 0x2000
0314
0315 #endif