/* -*- mode: c; c-basic-offset: 3 -*- */
/*
 * Copyright 2000 Gareth Hughes
 * All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * GARETH HUGHES BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

/*
 * Authors:
 *	Gareth Hughes <gareth@valinux.com>
 *	Leif Delgass <ldelgass@retinalburn.net>
 *	José Fonseca <j_r_fonseca@yahoo.co.uk>
 */

#ifndef __MACH64_REG_H__
#define __MACH64_REG_H__

/*
 * Not sure how this compares with the G200, but the Rage Pro has two
 * banks of registers, with bank 0 at (aperture base + memmap offset - 1KB)
 * and bank 1 at (aperture base + memmap offset - 2KB).  But, to send them
 * via DMA, we need to encode them as memory map select rather than physical
 * offsets.
 */
#define DWMREG0		0x0400
#define DWMREG0_END	0x07ff
#define DWMREG1		0x0000
#define DWMREG1_END	0x03ff

#define ISREG0(r)	( ( (r) >= DWMREG0 ) && ( (r) <= DWMREG0_END ) )
#define ADRINDEX0(r)	( ((r) - DWMREG0) >> 2 )
#define ADRINDEX1(r)	( ( ((r) - DWMREG1) >> 2 ) | 0x0100 )
#define ADRINDEX(r)	( ISREG0(r) ? ADRINDEX0(r) : ADRINDEX1(r) )

#define MMREG0		0x0000
#define MMREG0_END	0x00ff

#define ISMMREG0(r)	( ( (r) >= MMREG0 ) && ( (r) <= MMREG0_END ) )
#define MMSELECT0(r)	( ((r)<<2) + DWMREG0 )
#define MMSELECT1(r)	( ( (((r) & 0xff)<<2) + DWMREG1 ) )
#define MMSELECT(r)	( ISMMREG0(r) ? MMSELECT0(r) : MMSELECT1(r) )

/* FIXME: If register reads are necessary, we should account for endianess here */
#define MACH64_BASE(reg)	((CARD32)(mmesa->mach64Screen->mmio.map))
#define MACH64_ADDR(reg)	(MACH64_BASE(reg) + reg)

#define MACH64_DEREF(reg)	*(__volatile__ CARD32 *)MACH64_ADDR(reg)
#define MACH64_READ(reg)	MACH64_DEREF(reg)


/* ================================================================
 * Registers
 */

#define MACH64_ALPHA_TST_CNTL			0x0550
#	define MACH64_ALPHA_TEST_EN			(1 << 0)
#	define MACH64_ALPHA_TEST_MASK			(7 << 4)
#	define MACH64_ALPHA_TEST_NEVER			(0 << 4)
#	define MACH64_ALPHA_TEST_LESS			(1 << 4)
#	define MACH64_ALPHA_TEST_LEQUAL			(2 << 4)
#	define MACH64_ALPHA_TEST_EQUAL			(3 << 4)
#	define MACH64_ALPHA_TEST_GEQUAL			(4 << 4)
#	define MACH64_ALPHA_TEST_GREATER		(5 << 4)
#	define MACH64_ALPHA_TEST_NOTEQUAL		(6 << 4)
#	define MACH64_ALPHA_TEST_ALWAYS			(7 << 4)
#	define MACH64_ALPHA_MOD_MSB			(1 << 7)
#	define MACH64_ALPHA_DST_MASK			(7 << 8)
#	define MACH64_ALPHA_DST_ZERO			(0 << 8)
#	define MACH64_ALPHA_DST_ONE			(1 << 8)
#	define MACH64_ALPHA_DST_SRCALPHA		(4 << 8)
#	define MACH64_ALPHA_DST_INVSRCALPHA		(5 << 8)
#	define MACH64_ALPHA_DST_DSTALPHA		(6 << 8)
#	define MACH64_ALPHA_DST_INVDSTALPHA		(7 << 8)
#	define MACH64_ALPHA_TST_SRC_TEXEL		(0 << 12)
#	define MACH64_ALPHA_TST_SRC_SRCALPHA		(1 << 12)
#	define MACH64_REF_ALPHA_MASK			(0xff << 16)
#	define MACH64_REF_ALPHA_SHIFT			16
#	define MACH64_COMPOSITE_SHADOW			(1 << 30)
#	define MACH64_SPECULAR_LIGHT_EN			(1 << 31)

#define MACH64_BUS_CNTL				0x04a0
#	define MACH64_BUS_MSTR_RESET			(1 << 1)
#	define MACH64_BUS_FLUSH_BUF			(1 << 2)
#	define MACH64_BUS_MASTER_DIS			(1 << 6)
#	define MACH64_BUS_EXT_REG_EN			(1 << 27)

#define MACH64_COMPOSITE_SHADOW_ID		0x0798

#define MACH64_CLR_CMP_CLR			0x0700
#define MACH64_CLR_CMP_CNTL			0x0708
#define MACH64_CLR_CMP_MASK			0x0704

#define MACH64_DP_BKGD_CLR			0x06c0
#define MACH64_DP_FOG_CLR			0x06c4
#define MACH64_DP_FGRD_BKGD_CLR			0x06e0
#define MACH64_DP_FRGD_CLR			0x06c4
#define MACH64_DP_FGRD_CLR_MIX			0x06dc

#define MACH64_DP_MIX				0x06d4
#	define BKGD_MIX_NOT_D				(0 << 0)
#	define BKGD_MIX_ZERO				(1 << 0)
#	define BKGD_MIX_ONE				(2 << 0)
#	define MACH64_BKGD_MIX_D			(3 << 0)
#	define BKGD_MIX_NOT_S				(4 << 0)
#	define BKGD_MIX_D_XOR_S				(5 << 0)
#	define BKGD_MIX_NOT_D_XOR_S			(6 << 0)
#	define MACH64_BKGD_MIX_S			(7 << 0)
#	define BKGD_MIX_NOT_D_OR_NOT_S			(8 << 0)
#	define BKGD_MIX_D_OR_NOT_S			(9 << 0)
#	define BKGD_MIX_NOT_D_OR_S			(10 << 0)
#	define BKGD_MIX_D_OR_S				(11 << 0)
#	define BKGD_MIX_D_AND_S				(12 << 0)
#	define BKGD_MIX_NOT_D_AND_S			(13 << 0)
#	define BKGD_MIX_D_AND_NOT_S			(14 << 0)
#	define BKGD_MIX_NOT_D_AND_NOT_S			(15 << 0)
#	define BKGD_MIX_D_PLUS_S_DIV2			(23 << 0)
#	define FRGD_MIX_NOT_D				(0 << 16)
#	define FRGD_MIX_ZERO				(1 << 16)
#	define FRGD_MIX_ONE				(2 << 16)
#	define FRGD_MIX_D				(3 << 16)
#	define FRGD_MIX_NOT_S				(4 << 16)
#	define FRGD_MIX_D_XOR_S				(5 << 16)
#	define FRGD_MIX_NOT_D_XOR_S			(6 << 16)
#	define MACH64_FRGD_MIX_S			(7 << 16)
#	define FRGD_MIX_NOT_D_OR_NOT_S			(8 << 16)
#	define FRGD_MIX_D_OR_NOT_S			(9 << 16)
#	define FRGD_MIX_NOT_D_OR_S			(10 << 16)
#	define FRGD_MIX_D_OR_S				(11 << 16)
#	define FRGD_MIX_D_AND_S				(12 << 16)
#	define FRGD_MIX_NOT_D_AND_S			(13 << 16)
#	define FRGD_MIX_D_AND_NOT_S			(14 << 16)
#	define FRGD_MIX_NOT_D_AND_NOT_S			(15 << 16)
#	define FRGD_MIX_D_PLUS_S_DIV2			(23 << 16)

#define MACH64_DP_PIX_WIDTH			0x06d0
#	define MACH64_COMPOSITE_PIX_WIDTH_MASK		(0xf << 4)
#	define MACH64_HOST_TRIPLE_ENABLE		(1 << 13)
#	define MACH64_BYTE_ORDER_MSB_TO_LSB		(0 << 24)
#	define MACH64_BYTE_ORDER_LSB_TO_MSB		(1 << 24)
#	define MACH64_SCALE_PIX_WIDTH_MASK		(0xf << 28)

#define MACH64_DP_SRC				0x06d8
#	define MACH64_BKGD_SRC_BKGD_CLR			(0 << 0)
#	define MACH64_BKGD_SRC_FRGD_CLR			(1 << 0)
#	define MACH64_BKGD_SRC_HOST			(2 << 0)
#	define MACH64_BKGD_SRC_BLIT			(3 << 0)
#	define MACH64_BKGD_SRC_PATTERN			(4 << 0)
#	define MACH64_BKGD_SRC_3D			(5 << 0)
#	define MACH64_FRGD_SRC_BKGD_CLR			(0 << 8)
#	define MACH64_FRGD_SRC_FRGD_CLR			(1 << 8)
#	define MACH64_FRGD_SRC_HOST			(2 << 8)
#	define MACH64_FRGD_SRC_BLIT			(3 << 8)
#	define MACH64_FRGD_SRC_PATTERN			(4 << 8)
#	define MACH64_FRGD_SRC_3D			(5 << 8)
#	define MACH64_MONO_SRC_ONE			(0 << 16)
#	define MACH64_MONO_SRC_PATTERN			(1 << 16)
#	define MACH64_MONO_SRC_HOST			(2 << 16)
#	define MACH64_MONO_SRC_BLIT			(3 << 16)

#define MACH64_DP_WRITE_MASK			0x06c8

#define MACH64_DST_CNTL				0x0530
#	define MACH64_DST_X_RIGHT_TO_LEFT		(0 << 0)
#	define MACH64_DST_X_LEFT_TO_RIGHT		(1 << 0)
#	define MACH64_DST_Y_BOTTOM_TO_TOP		(0 << 1)
#	define MACH64_DST_Y_TOP_TO_BOTTOM		(1 << 1)
#	define MACH64_DST_X_MAJOR			(0 << 2)
#	define MACH64_DST_Y_MAJOR			(1 << 2)
#	define MACH64_DST_X_TILE			(1 << 3)
#	define MACH64_DST_Y_TILE			(1 << 4)
#	define MACH64_DST_LAST_PEL			(1 << 5)
#	define MACH64_DST_POLYGON_ENABLE		(1 << 6)
#	define MACH64_DST_24_ROTATION_ENABLE		(1 << 7)

#define MACH64_DST_HEIGHT_WIDTH			0x0518
#define MACH64_DST_OFF_PITCH			0x0500
#define MACH64_DST_WIDTH_HEIGHT			0x06ec
#define MACH64_DST_X_Y				0x06e8
#define MACH64_DST_Y_X				0x050c

#define MACH64_FIFO_STAT			0x0710
#	define MACH64_FIFO_SLOT_MASK			0x0000ffff
#	define MACH64_FIFO_ERR				(1 << 31)

#define MACH64_GEN_TEST_CNTL			0x04d0
#define MACH64_GUI_CMDFIFO_DEBUG		0x0170
#define MACH64_GUI_CMDFIFO_DATA			0x0174
#define MACH64_GUI_CNTL				0x0178
#define MACH64_GUI_STAT				0x0738
#	define MACH64_GUI_ACTIVE			(1 << 0)
#define MACH64_GUI_TRAJ_CNTL			0x0730

#define MACH64_HOST_CNTL			0x0640
#define MACH64_HOST_DATA0			0x0600
#define MACH64_HW_DEBUG				0x047c

#define MACH64_ONE_OVER_AREA			0x029c
#define MACH64_ONE_OVER_AREA_UC			0x0300

#define MACH64_PAT_REG0				0x0680
#define MACH64_PAT_REG1				0x0684

#define MACH64_SC_LEFT_RIGHT			0x06a8
#define MACH64_SC_TOP_BOTTOM			0x06b4
#define MACH64_SCALE_3D_CNTL			0x05fc
#	define MACH64_SCALE_PIX_EXPAND_ZERO_EXTEND	(0 << 0)
#	define MACH64_SCALE_PIX_EXPAND_DYNAMIC_RANGE	(1 << 0)
#	define MACH64_SCALE_DITHER_ERROR_DIFFUSE	(0 << 1)
#	define MACH64_SCALE_DITHER_2D_TABLE		(1 << 1)
#	define MACH64_DITHER_EN				(1 << 2)
#	define MACH64_DITHER_INIT_CURRENT		(O << 3)
#	define MACH64_DITHER_INIT_RESET			(1 << 3)
#	define MACH64_ROUND_EN				(1 << 4)
#	define MACH64_TEX_CACHE_DIS			(1 << 5)
#	define MACH64_SCALE_3D_FCN_MASK			(3 << 6)
#	define MACH64_SCALE_3D_FCN_NOP			(0 << 6)
#	define MACH64_SCALE_3D_FCN_SCALE		(1 << 6)
#	define MACH64_SCALE_3D_FCN_TEXTURE		(2 << 6)
#	define MACH64_SCALE_3D_FCN_SHADE		(3 << 6)
#	define MACH64_TEXTURE_DISABLE			(1 << 6)
#	define MACH64_EDGE_ANTI_ALIAS			(1 << 8)
#	define MACH64_TEX_CACHE_SPLIT			(1 << 9)
#	define MACH64_APPLE_YUV_MODE			(1 << 10)
#	define MACH64_ALPHA_FOG_EN_MASK			(3 << 11)
#	define MACH64_ALPHA_FOG_DIS			(0 << 11)
#	define MACH64_ALPHA_FOG_EN_ALPHA		(1 << 11)
#	define MACH64_ALPHA_FOG_EN_FOG			(2 << 11)
#	define MACH64_ALPHA_BLEND_SAT			(1 << 13)
#	define MACH64_RED_DITHER_MAX			(1 << 14)
#	define MACH64_SIGNED_DST_CLAMP			(1 << 15)
#	define MACH64_ALPHA_BLEND_SRC_MASK		(7 << 16)
#	define MACH64_ALPHA_BLEND_SRC_ZERO		(0 << 16)
#	define MACH64_ALPHA_BLEND_SRC_ONE		(1 << 16)
#	define MACH64_ALPHA_BLEND_SRC_DSTCOLOR		(2 << 16)
#	define MACH64_ALPHA_BLEND_SRC_INVDSTCOLOR	(3 << 16)
#	define MACH64_ALPHA_BLEND_SRC_SRCALPHA		(4 << 16)
#	define MACH64_ALPHA_BLEND_SRC_INVSRCALPHA	(5 << 16)
#	define MACH64_ALPHA_BLEND_SRC_DSTALPHA		(6 << 16)
#	define MACH64_ALPHA_BLEND_SRC_INVDSTALPHA	(7 << 16)
#	define MACH64_ALPHA_BLEND_DST_MASK		(7 << 19)
#	define MACH64_ALPHA_BLEND_DST_ZERO		(0 << 19)
#	define MACH64_ALPHA_BLEND_DST_ONE		(1 << 19)
#	define MACH64_ALPHA_BLEND_DST_SRCCOLOR		(2 << 19)
#	define MACH64_ALPHA_BLEND_DST_INVSRCCOLOR	(3 << 19)
#	define MACH64_ALPHA_BLEND_DST_SRCALPHA		(4 << 19)
#	define MACH64_ALPHA_BLEND_DST_INVSRCALPHA	(5 << 19)
#	define MACH64_ALPHA_BLEND_DST_DSTALPHA		(6 << 19)
#	define MACH64_ALPHA_BLEND_DST_INVDSTALPHA	(7 << 19)
#	define MACH64_TEX_LIGHT_FCN_MASK		(3 << 22)
#	define MACH64_TEX_LIGHT_FCN_REPLACE		(0 << 22)
#	define MACH64_TEX_LIGHT_FCN_MODULATE		(1 << 22)
#	define MACH64_TEX_LIGHT_FCN_ALPHA_DECAL		(2 << 22)
#	define MACH64_MIP_MAP_DISABLE			(1 << 24)
#	define MACH64_BILINEAR_TEX_EN			(1 << 25)
#	define MACH64_TEX_BLEND_FCN_MASK		(3 << 26)
#	define MACH64_TEX_BLEND_FCN_NEAREST		(0 << 26)
#	define MACH64_TEX_BLEND_FCN_LINEAR		(2 << 26)
#	define MACH64_TEX_BLEND_FCN_TRILINEAR		(3 << 26)
#	define MACH64_TEX_AMASK_AEN			(1 << 28)
#	define MACH64_TEX_AMASK_BLEND_EDGE		(1 << 29)
#	define MACH64_TEX_MAP_AEN			(1 << 30)
#	define MACH64_SRC_3D_HOST_FIFO			(1 << 31)
#define MACH64_SCRATCH_REG0			0x0480
#define MACH64_SCRATCH_REG1			0x0484
#define MACH64_SECONDARY_TEX_OFF		0x0778
#define MACH64_SETUP_CNTL			0x0304
#	define MACH64_DONT_START_TRI			(1 << 0)
#	define MACH64_DONT_START_ANY			(1 << 2)
#	define MACH64_FLAT_SHADE_MASK			(3 << 3)
#	define MACH64_FLAT_SHADE_OFF			(0 << 3)
#	define MACH64_FLAT_SHADE_VERTEX_1		(1 << 3)
#	define MACH64_FLAT_SHADE_VERTEX_2		(2 << 3)
#	define MACH64_FLAT_SHADE_VERTEX_3		(3 << 3)
#	define MACH64_SOLID_MODE_OFF			(0 << 5)
#	define MACH64_SOLID_MODE_ON			(1 << 5)
#	define MACH64_LOG_MAX_INC_ADJ			(1 << 6)
#	define MACH64_SET_UP_CONTINUE			(1 << 31)
#define MACH64_SRC_CNTL				0x05b4
#define MACH64_SRC_HEIGHT1			0x0594
#define MACH64_SRC_HEIGHT2			0x05ac
#define MACH64_SRC_HEIGHT1_WIDTH1		0x0598
#define MACH64_SRC_HEIGHT2_WIDTH2		0x05b0
#define MACH64_SRC_OFF_PITCH			0x0580
#define MACH64_SRC_WIDTH1			0x0590
#define MACH64_SRC_Y_X				0x058c

#define MACH64_TEX_0_OFF			0x05c0
#define MACH64_TEX_CNTL				0x0774
#	define MACH64_LOD_BIAS_SHIFT			0
#	define MACH64_LOD_BIAS_MASK			(0xf << 0)
#	define MACH64_COMP_FACTOR_SHIFT			4
#	define MACH64_COMP_FACTOR_MASK			(0xf << 4)
#	define MACH64_TEXTURE_COMPOSITE			(1 << 8)
#	define MACH64_COMP_COMBINE_BLEND		(0 << 9)
#	define MACH64_COMP_COMBINE_MODULATE		(1 << 9)
#	define MACH64_COMP_BLEND_NEAREST		(0 << 11)
#	define MACH64_COMP_BLEND_BILINEAR		(1 << 11)
#	define MACH64_COMP_FILTER_NEAREST		(0 << 12)
#	define MACH64_COMP_FILTER_BILINEAR		(1 << 12)
#	define MACH64_COMP_ALPHA			(1 << 13)
#	define MACH64_TEXTURE_TILING			(1 << 14)
#	define MACH64_COMPOSITE_TEX_TILING		(1 << 15)
#	define MACH64_TEX_COLLISION_DISABLE		(1 << 16)
#	define MACH64_TEXTURE_CLAMP_S			(1 << 17)
#	define MACH64_TEXTURE_CLAMP_T			(1 << 18)
#	define MACH64_TEX_ST_MULT_W			(0 << 19)
#	define MACH64_TEX_ST_DIRECT			(1 << 19)
#	define MACH64_TEX_SRC_LOCAL			(0 << 20)
#	define MACH64_TEX_SRC_AGP			(1 << 20)
#	define MACH64_TEX_UNCOMPRESSED			(0 << 21)
#	define MACH64_TEX_VQ_COMPRESSED			(1 << 21)
#	define MACH64_COMP_TEX_UNCOMPRESSED		(0 << 22)
#	define MACH64_COMP_TEX_VQ_COMPRESSED		(1 << 22)
#	define MACH64_TEX_CACHE_FLUSH			(1 << 23)
#	define MACH64_SEC_TEX_CLAMP_S			(1 << 24)
#	define MACH64_SEC_TEX_CLAMP_T			(1 << 25)
#	define MACH64_TEX_WRAP_S			(1 << 28)
#	define MACH64_TEX_WRAP_T			(1 << 29)
#	define MACH64_TEX_CACHE_SIZE_4K			(1 << 30)
#	define MACH64_TEX_CACHE_SIZE_2K			(1 << 30)
#	define MACH64_SECONDARY_STW			(1 << 31)
#define MACH64_TEX_PALETTE			0x077c
#define MACH64_TEX_PALETTE_INDEX		0x0740
#define MACH64_TEX_SIZE_PITCH			0x0770

#define MACH64_VERTEX_1_ARGB			0x0254
#define MACH64_VERTEX_1_S			0x0240
#define MACH64_VERTEX_1_SECONDARY_S		0x0328
#define MACH64_VERTEX_1_SECONDARY_T		0x032c
#define MACH64_VERTEX_1_SECONDARY_W		0x0330
#define MACH64_VERTEX_1_SPEC_ARGB		0x024c
#define MACH64_VERTEX_1_T			0x0244
#define MACH64_VERTEX_1_W			0x0248
#define MACH64_VERTEX_1_X_Y			0x0258
#define MACH64_VERTEX_1_Z			0x0250
#define MACH64_VERTEX_2_ARGB			0x0274
#define MACH64_VERTEX_2_S			0x0260
#define MACH64_VERTEX_2_SECONDARY_S		0x0334
#define MACH64_VERTEX_2_SECONDARY_T		0x0338
#define MACH64_VERTEX_2_SECONDARY_W		0x033c
#define MACH64_VERTEX_2_SPEC_ARGB		0x026c
#define MACH64_VERTEX_2_T			0x0264
#define MACH64_VERTEX_2_W			0x0268
#define MACH64_VERTEX_2_X_Y			0x0278
#define MACH64_VERTEX_2_Z			0x0270
#define MACH64_VERTEX_3_ARGB			0x0294
#define MACH64_VERTEX_3_S			0x0280
#define MACH64_VERTEX_3_SECONDARY_S		0x02a0
#define MACH64_VERTEX_3_SECONDARY_T		0x02a4
#define MACH64_VERTEX_3_SECONDARY_W		0x02a8
#define MACH64_VERTEX_3_SPEC_ARGB		0x028c
#define MACH64_VERTEX_3_T			0x0284
#define MACH64_VERTEX_3_W			0x0288
#define MACH64_VERTEX_3_X_Y			0x0298
#define MACH64_VERTEX_3_Z			0x0290

#define MACH64_Z_CNTL				0x054c
#	define MACH64_Z_EN				(1 << 0)
#	define MACH64_Z_SRC_2D				(1 << 1)
#	define MACH64_Z_TEST_MASK			(7 << 4)
#	define MACH64_Z_TEST_NEVER			(0 << 4)
#	define MACH64_Z_TEST_LESS			(1 << 4)
#	define MACH64_Z_TEST_LEQUAL			(2 << 4)
#	define MACH64_Z_TEST_EQUAL			(3 << 4)
#	define MACH64_Z_TEST_GEQUAL			(4 << 4)
#	define MACH64_Z_TEST_GREATER			(5 << 4)
#	define MACH64_Z_TEST_NOTEQUAL			(6 << 4)
#	define MACH64_Z_TEST_ALWAYS			(7 << 4)
#	define MACH64_Z_MASK_EN				(1 << 8)
#define MACH64_Z_OFF_PITCH			0x0548



#define MACH64_DATATYPE_CI8				2
#define MACH64_DATATYPE_ARGB1555			3
#define MACH64_DATATYPE_RGB565				4
#define MACH64_DATATYPE_ARGB8888			6
#define MACH64_DATATYPE_RGB332				7
#define MACH64_DATATYPE_Y8				8
#define MACH64_DATATYPE_RGB8				9
#define MACH64_DATATYPE_VYUY422				11
#define MACH64_DATATYPE_YVYU422				12
#define MACH64_DATATYPE_AYUV444				14
#define MACH64_DATATYPE_ARGB4444			15

#define MACH64_LAST_FRAME_REG			MACH64_PAT_REG0
#define MACH64_LAST_DISPATCH_REG		MACH64_PAT_REG1

#endif /* __MACH64_REG_H__ */
