#define CGSIX_ROM_OFFSET 0x000000
#define CGSIX_BT_OFFSET 0x200000
#define CGSIX_DHC_OFFSET 0x240000
#define CGSIX_ALT_OFFSET 0x280000
#define CGSIX_FHC_OFFSET 0x300000
#define CGSIX_THC_OFFSET 0x301000
#define CGSIX_FBC_OFFSET 0x700000
#define CGSIX_TEC_OFFSET 0x701000
#define CGSIX_RAM_OFFSET 0x800000
#define FHC_FBID_MASK 0xff000000
#define FHC_FBID_SHIFT 24
#define FHC_REV_MASK 0x00f00000
#define FHC_REV_SHIFT 20
#define FHC_FROP_DISABLE 0x00080000
#define FHC_ROW_DISABLE 0x00040000
#define FHC_SRC_DISABLE 0x00020000
#define FHC_DST_DISABLE 0x00010000
#define FHC_RESET 0x00008000
#define FHC_XXX0 0x00004000
#define FHC_LEBO 0x00002000
#define FHC_RES_MASK 0x00001800
#define FHC_RES_1024 0x00000000
#define FHC_RES_1152 0x00000800
#define FHC_RES_1280 0x00001000
#define FHC_RES_1600 0x00001800
#define FHC_CPU_MASK 0x00000600
#define FHC_CPU_SPARC 0x00000000
#define FHC_CPU_68020 0x00000200
#define FHC_CPU_386 0x00000400
#define FHC_CPU_XXX 0x00000600
#define FHC_TEST 0x00000100
#define FHC_TESTX_MASK 0x000000f0
#define FHC_TESTX_SHIFT 4
#define FHC_TESTY_MASK 0x0000000f
#define FHC_TESTY_SHIFT 0
struct cg6_thc {
u_int32_t thc_xxx0[512];
u_int32_t thc_hsync1;
u_int32_t thc_hsync2;
u_int32_t thc_hsync3;
u_int32_t thc_vsync1;
u_int32_t thc_vsync2;
u_int32_t thc_refresh;
u_int32_t thc_misc;
u_int32_t thc_xxx1[56];
u_int32_t thc_cursxy;
u_int32_t thc_cursmask[32];
u_int32_t thc_cursbits[32];
};
#define THC_MISC_XXX0 0xfff00000
#define THC_MISC_REVMASK 0x000f0000
#define THC_MISC_REVSHIFT 16
#define THC_MISC_XXX1 0x0000e000
#define THC_MISC_RESET 0x00001000
#define THC_MISC_XXX2 0x00000800
#define THC_MISC_VIDEN 0x00000400
#define THC_MISC_SYNC 0x00000200
#define THC_MISC_VSYNC 0x00000100
#define THC_MISC_SYNCEN 0x00000080
#define THC_MISC_CURSRES 0x00000040
#define THC_MISC_INTEN 0x00000020
#define THC_MISC_INTR 0x00000010
#define THC_MISC_XXX 0x0000000f
#define THC_CURSOFF (65536-32)
struct cg6_tec_xxx {
u_int32_t tec_mv;
u_int32_t tec_clip;
u_int32_t tec_vdc;
};
struct cg6_fbc {
u_int32_t fbc_config;
volatile u_int32_t fbc_mode;
u_int32_t fbc_clip;
u_int32_t fbc_pad2[1];
u_int32_t fbc_s;
u_int32_t fbc_draw;
u_int32_t fbc_blit;
u_int32_t fbc_font;
u_int32_t fbc_pad3[24];
u_int32_t fbc_x0;
u_int32_t fbc_y0;
u_int32_t fbc_pad4[2];
u_int32_t fbc_x1;
u_int32_t fbc_y1;
u_int32_t fbc_pad5[2];
u_int32_t fbc_x2;
u_int32_t fbc_y2;
u_int32_t fbc_pad6[2];
u_int32_t fbc_x3;
u_int32_t fbc_y3;
u_int32_t fbc_pad7[2];
u_int32_t fbc_offx;
u_int32_t fbc_offy;
u_int32_t fbc_pad8[2];
u_int32_t fbc_incx;
u_int32_t fbc_incy;
u_int32_t fbc_pad81[2];
u_int32_t fbc_clipminx;
u_int32_t fbc_clipminy;
u_int32_t fbc_pad9[2];
u_int32_t fbc_clipmaxx;
u_int32_t fbc_clipmaxy;
u_int32_t fbc_pad10[2];
u_int32_t fbc_fg;
u_int32_t fbc_bg;
u_int32_t fbc_alu;
u_int32_t fbc_pad12[509];
u_int32_t fbc_arectx;
u_int32_t fbc_arecty;
};
#define CG6_FBC_BLIT_IGNORE 0x00000000
#define CG6_FBC_BLIT_NOSRC 0x00100000
#define CG6_FBC_BLIT_SRC 0x00200000
#define CG6_FBC_BLIT_ILLEGAL 0x00300000
#define CG6_FBC_BLIT_MASK 0x00300000
#define CG6_FBC_VBLANK 0x00080000
#define CG6_FBC_MODE_IGNORE 0x00000000
#define CG6_FBC_MODE_COLOR8 0x00020000
#define CG6_FBC_MODE_COLOR1 0x00040000
#define CG6_FBC_MODE_HRMONO 0x00060000
#define CG6_FBC_MODE_MASK 0x00060000
#define CG6_FBC_DRAW_IGNORE 0x00000000
#define CG6_FBC_DRAW_RENDER 0x00008000
#define CG6_FBC_DRAW_PICK 0x00010000
#define CG6_FBC_DRAW_ILLEGAL 0x00018000
#define CG6_FBC_DRAW_MASK 0x00018000
#define CG6_FBC_BWRITE0_IGNORE 0x00000000
#define CG6_FBC_BWRITE0_ENABLE 0x00002000
#define CG6_FBC_BWRITE0_DISABLE 0x00004000
#define CG6_FBC_BWRITE0_ILLEGAL 0x00006000
#define CG6_FBC_BWRITE0_MASK 0x00006000
#define CG6_FBC_BWRITE1_IGNORE 0x00000000
#define CG6_FBC_BWRITE1_ENABLE 0x00000800
#define CG6_FBC_BWRITE1_DISABLE 0x00001000
#define CG6_FBC_BWRITE1_ILLEGAL 0x00001800
#define CG6_FBC_BWRITE1_MASK 0x00001800
#define CG6_FBC_BREAD_IGNORE 0x00000000
#define CG6_FBC_BREAD_0 0x00000200
#define CG6_FBC_BREAD_1 0x00000400
#define CG6_FBC_BREAD_ILLEGAL 0x00000600
#define CG6_FBC_BREAD_MASK 0x00000600
#define CG6_FBC_BDISP_IGNORE 0x00000000
#define CG6_FBC_BDISP_0 0x00000080
#define CG6_FBC_BDISP_1 0x00000100
#define CG6_FBC_BDISP_ILLEGAL 0x00000180
#define CG6_FBC_BDISP_MASK 0x00000180
#define CG6_FBC_INDEX_MOD 0x00000040
#define CG6_FBC_INDEX_MASK 0x00000030
#define GX_ROP_CLEAR 0x0
#define GX_ROP_INVERT 0x1
#define GX_ROP_NOOP 0x2
#define GX_ROP_SET 0x3
#define GX_ROP_00_0(rop) ((rop) << 0)
#define GX_ROP_00_1(rop) ((rop) << 2)
#define GX_ROP_01_0(rop) ((rop) << 4)
#define GX_ROP_01_1(rop) ((rop) << 6)
#define GX_ROP_10_0(rop) ((rop) << 8)
#define GX_ROP_10_1(rop) ((rop) << 10)
#define GX_ROP_11_0(rop) ((rop) << 12)
#define GX_ROP_11_1(rop) ((rop) << 14)
#define GX_PLOT_PLOT 0x00000000
#define GX_PLOT_UNPLOT 0x00020000
#define GX_RAST_BOOL 0x00000000
#define GX_RAST_LINEAR 0x00040000
#define GX_ATTR_UNSUPP 0x00400000
#define GX_ATTR_SUPP 0x00800000
#define GX_POLYG_OVERLAP 0x01000000
#define GX_POLYG_NONOVERLAP 0x02000000
#define GX_PATTERN_ZEROS 0x04000000
#define GX_PATTERN_ONES 0x08000000
#define GX_PATTERN_MASK 0x0c000000
#define GX_PIXEL_ZEROS 0x10000000
#define GX_PIXEL_ONES 0x20000000
#define GX_PIXEL_MASK 0x30000000
#define GX_PLANE_ZEROS 0x40000000
#define GX_PLANE_ONES 0x80000000
#define GX_PLANE_MASK 0xc0000000
#define POLY_O GX_POLYG_OVERLAP
#define POLY_N GX_POLYG_NONOVERLAP
#define ROP_STANDARD (GX_PLANE_MASK |\
GX_PIXEL_ONES |\
GX_ATTR_SUPP |\
GX_RAST_BOOL |\
GX_PLOT_PLOT)
#define ROP_BLIT(O,I) (ROP_STANDARD | \
GX_PATTERN_ONES |\
GX_ROP_11_1(I) |\
GX_ROP_11_0(O) |\
GX_ROP_10_1(I) |\
GX_ROP_10_0(O) |\
GX_ROP_01_1(I) |\
GX_ROP_01_0(O) |\
GX_ROP_00_1(I) |\
GX_ROP_00_0(O))
#define ROP_FILL(O,I) (ROP_STANDARD | \
GX_PATTERN_ONES |\
GX_ROP_11_1(I) |\
GX_ROP_11_0(I) |\
GX_ROP_10_1(I) |\
GX_ROP_10_0(I) | \
GX_ROP_01_1(O) |\
GX_ROP_01_0(O) |\
GX_ROP_00_1(O) |\
GX_ROP_00_0(O))
#define ROP_STIP(O,I) (ROP_STANDARD |\
GX_ROP_11_1(I) |\
GX_ROP_11_0(GX_ROP_NOOP) |\
GX_ROP_10_1(I) |\
GX_ROP_10_0(GX_ROP_NOOP) | \
GX_ROP_01_1(O) |\
GX_ROP_01_0(GX_ROP_NOOP) |\
GX_ROP_00_1(O) |\
GX_ROP_00_0(GX_ROP_NOOP))
#define ROP_OSTP(O,I) (ROP_STANDARD |\
GX_ROP_11_1(I) |\
GX_ROP_11_0(I) |\
GX_ROP_10_1(I) |\
GX_ROP_10_0(O) |\
GX_ROP_01_1(O) |\
GX_ROP_01_0(I) |\
GX_ROP_00_1(O) |\
GX_ROP_00_0(O))
#define GX_ROP_USE_PIXELMASK 0x30000000
#define GX_BLT_INPROGRESS 0x20000000
#define GX_EXCEPTION 0x80000000
#define GX_TEC_EXCEPTION 0x40000000
#define GX_FULL 0x20000000
#define GX_INPROGRESS 0x10000000
#define GX_UNSUPPORTED_ATTR 0x02000000
#define GX_HRMONO 0x01000000
#define GX_OVERFLOW 0x00200000
#define GX_PICK 0x00100000
#define GX_TEC_HIDDEN 0x00040000
#define GX_TEC_INTERSECT 0x00020000
#define GX_TEC_VISIBLE 0x00010000
#define GX_BLIT_HARDWARE 0x00008000
#define GX_BLIT_SOFTWARE 0x00004000
#define GX_BLIT_SRC_HIDDEN 0x00002000
#define GX_BLIT_SRC_INTERSECT 0x00001000
#define GX_BLIT_SRC_VISIBLE 0x00000800
#define GX_BLIT_DST_HIDDEN 0x00000400
#define GX_BLIT_DST_INTERSECT 0x00000200
#define GX_BLIT_DST_VISIBLE 0x00000100
#define GX_DRAW_HARDWARE 0x00000010
#define GX_DRAW_SOFTAWRE 0x00000008
#define GX_DRAW_HIDDEN 0x00000004
#define GX_DRAW_INTERSECT 0x00000002
#define GX_DRAW_VISIBLE 0x00000001
#define GX_INDEX(n) ((n) << 4)
#define GX_INDEX_ALL 0x00000030
#define GX_INDEX_MOD 0x00000040
#define GX_BDISP_0 0x00000080
#define GX_BDISP_1 0x00000100
#define GX_BDISP_ALL 0x00000180
#define GX_BREAD_0 0x00000200
#define GX_BREAD_1 0x00000400
#define GX_BREAD_ALL 0x00000600
#define GX_BWRITE1_ENABLE 0x00000800
#define GX_BWRITE1_DISABLE 0x00001000
#define GX_BWRITE1_ALL 0x00001800
#define GX_BWRITE0_ENABLE 0x00002000
#define GX_BWRITE0_DISABLE 0x00004000
#define GX_BWRITE0_ALL 0x00006000
#define GX_DRAW_RENDER 0x00008000
#define GX_DRAW_PICK 0x00010000
#define GX_DRAW_ALL 0x00018000
#define GX_MODE_COLOR8 0x00020000
#define GX_MODE_COLOR1 0x00040000
#define GX_MODE_HRMONO 0x00060000
#define GX_MODE_ALL 0x00060000
#define GX_VBLANK 0x00080000
#define GX_BLIT_NOSRC 0x00100000
#define GX_BLIT_SRC 0x00200000
#define GX_BLIT_ALL 0x00300000
#if _CG6_LAYOUT_NOT_USED_ANYMORE
struct cg6_layout {
union {
int un_id;
char un_rom[65536];
char un_pad[0x200000];
} cg6_rom_un;
union {
struct bt_regs un_btregs;
char un_pad[0x040000];
} cg6_bt_un;
union {
char un_pad[0x40000];
} cg6_dhc_un;
union {
char un_pad[0x80000];
} cg6_alt_un;
union {
int un_fhc;
char un_pad[0x1000];
} cg6_fhc_un;
union {
struct cg6_thc un_thc;
char un_pad[0x400000 - 0x1000];
} cg6_thc_un;
union {
char un_pad[0x1000];
} cg6_fbc_un;
union {
char un_pad[0x100000 - 0x1000];
struct cg6_tec_xxx un_tec;
} cg6_tec_un;
char cg6_ram[1024 * 1024];
};
#endif