diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-12-13 08:21:32 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-13 18:21:32 +0200 |
| commit | 4e6dffff5a325365dce234d3b7daba60dc3245c0 (patch) | |
| tree | 0d3a4657fb992eb4ea83990373a11583884e61e9 /include | |
| parent | 25dfef320b8c7bd1e9952bd54e5808aa665e841d (diff) | |
most of shieldD revo sdk matching (#2951)
* shieldD revo wpad done
* shieldD revo hio2 done
* shieldD revo aralt, ppcarch, gf done
* shieldD revo exi done
* shieldD revo SI done
* shieldD revo vi done
* shieldD revo mtx done
* shieldD revo GX mostly done
* shieldD revo ai/dsp done
* shieldD revo sc mostly done
* shieldD revo esp/euart/wenc mostly done
* build fixes
Diffstat (limited to 'include')
27 files changed, 8032 insertions, 76 deletions
diff --git a/include/global.h b/include/global.h index 63e3defa45..24d22c7522 100644 --- a/include/global.h +++ b/include/global.h @@ -70,6 +70,13 @@ extern int __rlwimi(int, int, int, int, int); extern void __dcbz(void*, int); extern void __sync(); extern int __abs(int); +#else +// to stop clangd errors +#define __cntlzw +#define __rlwimi +#define __dcbz +#define __sync +#define __abs #endif #ifndef __MWERKS__ diff --git a/include/revolution/ai.h b/include/revolution/ai.h index 340da848b2..dd103eb0af 100644 --- a/include/revolution/ai.h +++ b/include/revolution/ai.h @@ -25,21 +25,8 @@ u32 AIGetDMABytesLeft(void); u32 AIGetDMAStartAddr(void); u32 AIGetDMALength(void); BOOL AICheckInit(void); -AISCallback AIRegisterStreamCallback(AISCallback callback); -u32 AIGetStreamSampleCount(void); -void AIResetStreamSampleCount(void); -void AISetStreamTrigger(u32 trigger); -u32 AIGetStreamTrigger(void); -void AISetStreamPlayState(u32 state); -u32 AIGetStreamPlayState(void); void AISetDSPSampleRate(u32 rate); u32 AIGetDSPSampleRate(void); -void AISetStreamSampleRate(u32 rate); -u32 AIGetStreamSampleRate(void); -void AISetStreamVolLeft(u8 vol); -u8 AIGetStreamVolLeft(void); -void AISetStreamVolRight(u8 vol); -u8 AIGetStreamVolRight(void); void AIInit(u8* stack); void AIReset(void); diff --git a/include/revolution/aralt.h b/include/revolution/aralt.h new file mode 100644 index 0000000000..8a699bb857 --- /dev/null +++ b/include/revolution/aralt.h @@ -0,0 +1,56 @@ +#ifndef _REVOLUTION_ARALT_H_ +#define _REVOLUTION_ARALT_H_ + +#include <revolution/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*ARQCallback)(u32 pointerToARQRequest); + +struct ARQRequest { + /* 0x00 */ struct ARQRequest *next; + /* 0x04 */ u32 owner; + /* 0x08 */ u32 type; + /* 0x0C */ u32 priority; + /* 0x10 */ u32 source; + /* 0x14 */ u32 dest; + /* 0x18 */ u32 length; + /* 0x1C */ ARQCallback callback; +}; + +#define ARQ_DMA_ALIGNMENT 32 + +#define ARAM_DIR_MRAM_TO_ARAM 0x00 +#define ARAM_DIR_ARAM_TO_MRAM 0x01 + +#define ARStartDMARead(mmem, aram, len) \ + ARStartDMA(ARAM_DIR_ARAM_TO_MRAM, mmem, aram, len) +#define ARStartDMAWrite(mmem, aram, len) \ + ARStartDMA(ARAM_DIR_MRAM_TO_ARAM, mmem, aram, len) + +typedef struct ARQRequest ARQRequest; + +#define ARQ_TYPE_MRAM_TO_ARAM ARAM_DIR_MRAM_TO_ARAM +#define ARQ_TYPE_ARAM_TO_MRAM ARAM_DIR_ARAM_TO_MRAM + +#define ARQ_PRIORITY_LOW 0 +#define ARQ_PRIORITY_HIGH 1 + +// AR +ARQCallback ARRegisterDMACallback(ARQCallback callback); +void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length); +u32 ARAlloc(u32 length); +u32 ARInit(u32* stack_index_addr, u32 num_entries); +u32 ARGetBaseAddress(void); +u32 ARGetSize(void); + +// ARQ +void ARQInit(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/revolution/esp.h b/include/revolution/esp.h index 802a028630..43fe6d8787 100644 --- a/include/revolution/esp.h +++ b/include/revolution/esp.h @@ -1,5 +1,5 @@ -#ifndef ESP_H -#define ESP_H +#ifndef _REVOLUTION_ESP_H_ +#define _REVOLUTION_ESP_H_ #ifdef __cplusplus extern "C" { @@ -122,17 +122,17 @@ typedef struct { s32 ESP_InitLib(void); s32 ESP_CloseLib(void); -s32 ESP_LaunchTitle(u64, ESTicketView*); -s32 ESP_GetTicketViews(ESTitleId, ESTicketView*, u32*); -s32 ESP_DiGetTicketView(const void*, ESTicketView*); -s32 ESP_DiGetTmd(ESTitleMeta*, u32*); -s32 ESP_GetTmdView(ESTitleId, ESTmdView*, u32*); -s32 ESP_GetDataDir(ESTitleId, char*); -s32 ESP_GetTitleId(ESTitleId*); -s32 ESP_GetConsumption(ESTicketId, ESLpEntry*, u32*); +s32 ESP_LaunchTitle(u64 titleID, ESTicketView* pTicketView); +s32 ESP_GetTicketViews(ESTitleId titleId, ESTicketView* ticketViewList, u32* ticketViewCnt); +s32 ESP_DiGetTicketView(const void* ticket, ESTicketView* ticketView); +s32 ESP_DiGetTmd(ESTitleMeta* tmd, u32* tmdSize); +s32 ESP_GetTmdView(ESTitleId titleId, ESTmdView* tmdView, u32* size); +s32 ESP_GetDataDir(ESTitleId titleId, char* dataDir); +s32 ESP_GetTitleId(ESTitleId* titleId); +s32 ESP_GetConsumption(ESTicketId ticketId, ESLpEntry* entries, u32* nEntries); #ifdef __cplusplus } #endif -#endif // ESP_H +#endif // _REVOLUTION_ESP_H_ diff --git a/include/revolution/euart.h b/include/revolution/euart.h new file mode 100644 index 0000000000..a560debc2d --- /dev/null +++ b/include/revolution/euart.h @@ -0,0 +1,61 @@ +#ifndef _REVOLUTION_EUART_H_ +#define _REVOLUTION_EUART_H_ + +#include <revolution/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef int UARTError; + +typedef enum { + kBaudHWSet = -1, + kBaud300 = 300, + kBaud600 = 600, + kBaud1200 = 1200, + kBaud1800 = 1800, + kBaud2000 = 2000, + kBaud2400 = 2400, + kBaud3600 = 3600, + kBaud4800 = 4800, + kBaud7200 = 7200, + kBaud9600 = 9600, + kBaud19200 = 19200, + kBaud38400 = 38400, + kBaud57600 = 57600, + kBaud115200 = 115200, + kBaud230400 = 230400 +} UARTBaudRate; + +enum { + kUARTDataError = -1, + kUARTNoError = 0, + kUARTUnknownBaudRate, + kUARTConfigurationError, + kUARTBufferOverflow, + kUARTNoData +}; + +typedef enum { + EUART_ERROR_NONE = 0, + EUART_ERROR_UNINITIALIZED, + EUART_ERROR_CANNOT_USE, + EUART_ERROR_CHANNEL_FULL, + EUART_ERROR_NOT_FIND, + EUART_ERROR_INTERNAL, + EUART_ERROR_INVALID_PARAMETER, + EUART_ERROR_INVALID_HANDLE, + EUART_ERROR_COM_OPEN, + EUART_ERROR_COMM +} EUARTError; + + +UARTError InitializeUART(UARTBaudRate); +UARTError WriteUARTN(const void *, unsigned long); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/revolution/exi.h b/include/revolution/exi.h index 9672a30aa6..b13745dab2 100644 --- a/include/revolution/exi.h +++ b/include/revolution/exi.h @@ -74,6 +74,8 @@ typedef struct EXIControl { } queue[3]; } EXIControl; +extern const u32 __EXIFreq; + EXICallback EXISetExiCallback(s32 channel, EXICallback callback); void EXIInit(void); @@ -96,6 +98,12 @@ int EXISelectSD(s32 chan, u32 dev, u32 freq); s32 EXIGetType(s32 chan, u32 dev, u32* type); char* EXIGetTypeString(u32 type); +s32 EXIGetConsoleType(void); +void EXIWait(void); +BOOL EXIWriteReg(s32 chan, u32 dev, u32 exiCmd, void* reg, s32 size); +BOOL EXIReadRam(s32 chan, u32 dev, u32 exiCmd, void* buffer, s32 size, EXICallback callback); +BOOL EXIWriteRam(s32 chan, u32 dev, u32 exiCmd, void* buffer, s32 size, EXICallback callback); + #ifdef __cplusplus } #endif diff --git a/include/revolution/hio2.h b/include/revolution/hio2.h new file mode 100644 index 0000000000..3758415931 --- /dev/null +++ b/include/revolution/hio2.h @@ -0,0 +1,44 @@ +#ifndef _REVOLUTION_HIO2_H_ +#define _REVOLUTION_HIO2_H_ + +#include <revolution/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + HIO2_DEVICE_INVALID = -1, + HIO2_DEVICE_UNK_0 = 0, + HIO2_DEVICE_UNK_1 = 1, + HIO2_DEVICE_UNK_2 = 2, +} HIO2DeviceType; + +typedef BOOL (*HIO2EnumCallback)(HIO2DeviceType); +typedef void (*HIO2UnkCallback)(s32); +typedef void (*HIO2DisconnectCallback)(s32); + +typedef struct HIO2Control { + /* 0x00 */ HIO2DeviceType type; + /* 0x04 */ s32 chan; + /* 0x08 */ u32 _0x8; + /* 0x0C */ HIO2UnkCallback exiCallback; + /* 0x10 */ HIO2UnkCallback _0x10; + /* 0x14 */ HIO2UnkCallback _0x14; + /* 0x18 */ HIO2DisconnectCallback disconnectCb; +} HIO2Control; // size 0x1C + + +BOOL HIO2Init(void); +BOOL HIO2EnumDevices(HIO2EnumCallback callback); +s32 HIO2Open(HIO2DeviceType type, HIO2UnkCallback exiCb, HIO2DisconnectCallback disconnectCb); +BOOL HIO2Close(s32 handle); +BOOL HIO2Read(s32 handle, u32 addr, void* buffer, s32 size); +BOOL HIO2Write(s32 handle, u32 addr, void* buffer, s32 size); +void HIO2Exit(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/revolution/hw_regs.h b/include/revolution/hw_regs.h index 1bf8658f9f..b1f8a2c4e5 100644 --- a/include/revolution/hw_regs.h +++ b/include/revolution/hw_regs.h @@ -9,7 +9,7 @@ volatile u32 __PIRegs[12] AT_ADDRESS(0xCC003000); volatile u16 __MEMRegs[64] AT_ADDRESS(0xCC004000); volatile u16 __DSPRegs[] AT_ADDRESS(0xCC005000); volatile u32 __DIRegs[] AT_ADDRESS(0xCD006000); -volatile u32 __SIRegs[0x100] AT_ADDRESS(0xCC006400); +volatile u32 __SIRegs[0x100] AT_ADDRESS(0xCD006400); volatile u32 __EXIRegs[0x40] AT_ADDRESS(0xCD006800); volatile u32 __AIRegs[8] AT_ADDRESS(0xCD006C00); volatile u32 __IPCRegs[4] AT_ADDRESS(0xCD000000); @@ -19,7 +19,7 @@ volatile u32 __IPCRegs[4] AT_ADDRESS(0xCD000000); #define __MEMRegs ((volatile u16 *)0xCC004000) #define __DSPRegs ((volatile u16 *)0xCC005000) #define __DIRegs ((volatile u32 *)0xCD006000) -#define __SIRegs ((volatile u32 *)0xCC006400) +#define __SIRegs ((volatile u32 *)0xCD006400) #define __EXIRegs ((volatile u32 *)0xCD006800) #define __AIRegs ((volatile u32 *)0xCD006C00) #define __IPCRegs ((volatile u32 *)0xCD000000) diff --git a/include/revolution/private/GXFDLShortcut.h b/include/revolution/private/GXFDLShortcut.h new file mode 100644 index 0000000000..a717d18fb6 --- /dev/null +++ b/include/revolution/private/GXFDLShortcut.h @@ -0,0 +1,263 @@ +#ifndef GXFDLSHORTCUT_H +#define GXFDLSHORTCUT_H + +#if __MWERKS__ +#define FAST_GPFLAGSET(line, regOrg, newFlag, regName) \ +do { \ + ASSERTMSGLINE(line, ((u32)(newFlag) & ~((1 << (regName ## _SIZE)) - 1)) == 0, "GX Internal: Register field out of range"); \ + (regOrg) = (u32) __rlwimi((int) (regOrg), \ + (int) (newFlag), \ + (regName ## _SHIFT), \ + (32-(regName ## _SHIFT)-(regName ## _SIZE)), \ + (31-(regName ## _SHIFT))); \ +} while (0) +#else +#define FAST_GPFLAGSET(line, regOrg, newFlag, regName) +#endif + +#define CP_VCD_REG_HI_TEXALL_MASK ((1UL<<CP_VCD_REG_HI_TOTAL_SIZE)-1) +#define CP_VCD_REG_HI_TEXALL_SHIFT CP_VCD_REG_HI_TEX0_SHIFT +#define CP_VCD_REG_LO_COLALL_MASK (CP_VCD_REG_LO_COL0_MASK|CP_VCD_REG_LO_COL1_MASK) +#define CP_VCD_REG_LO_COLALL_SHIFT CP_VCD_REG_LO_COL0_SHIFT + +#define TEV_REGISTERL_R8_SIZE TEV_KREGISTERL_R_SIZE +#define TEV_REGISTERL_R8_SHIFT TEV_KREGISTERL_R_SHIFT +#define TEV_REGISTERL_R8_MASK TEV_KREGISTERL_R_MASK +#define SC_TEV_REGISTERL_SET_R8(line, tev_registerl, r8) \ + FAST_GPFLAGSET(line, tev_registerl, r8, TEV_REGISTERL_R8) + +#define TEV_REGISTERL_A8_SIZE TEV_KREGISTERL_A_SIZE +#define TEV_REGISTERL_A8_SHIFT TEV_KREGISTERL_A_SHIFT +#define TEV_REGISTERL_A8_MASK TEV_KREGISTERL_A_MASK +#define SC_TEV_REGISTERL_SET_A8(line, tev_registerl, a8) \ + FAST_GPFLAGSET(line, tev_registerl, a8, TEV_REGISTERL_A8) + +#define TEV_REGISTERH_B8_SIZE TEV_KREGISTERH_B_SIZE +#define TEV_REGISTERH_B8_SHIFT TEV_KREGISTERH_B_SHIFT +#define TEV_REGISTERH_B8_MASK TEV_KREGISTERH_B_MASK +#define SC_TEV_REGISTERH_SET_B8(line, tev_registerh, b8) \ + FAST_GPFLAGSET(line, tev_registerh, b8, TEV_REGISTERH_B8) + +#define TEV_REGISTERH_G8_SIZE TEV_KREGISTERH_G_SIZE +#define TEV_REGISTERH_G8_SHIFT TEV_KREGISTERH_G_SHIFT +#define TEV_REGISTERH_G8_MASK TEV_KREGISTERH_G_MASK +#define SC_TEV_REGISTERH_SET_G8(line, tev_registerh, g8) \ + FAST_GPFLAGSET(line, tev_registerh, g8, TEV_REGISTERH_G8) + +#define TEV_REGISTERL_R8_SIZE TEV_KREGISTERL_R_SIZE +#define TEV_REGISTERL_R8_SHIFT TEV_KREGISTERL_R_SHIFT +#define TEV_REGISTERL_R8_MASK TEV_KREGISTERL_R_MASK +#define SC_TEV_REGISTERL_SET_R8(line, tev_registerl, r8) \ + FAST_GPFLAGSET(line, tev_registerl, r8, TEV_REGISTERL_R8) + +#define TEV_REGISTERL_A8_SIZE TEV_KREGISTERL_A_SIZE +#define TEV_REGISTERL_A8_SHIFT TEV_KREGISTERL_A_SHIFT +#define TEV_REGISTERL_A8_MASK TEV_KREGISTERL_A_MASK +#define SC_TEV_REGISTERL_SET_A8(line, tev_registerl, a8) \ + FAST_GPFLAGSET(line, tev_registerl, a8, TEV_REGISTERL_A8) + +#define TEV_REGISTERH_B8_SIZE TEV_KREGISTERH_B_SIZE +#define TEV_REGISTERH_B8_SHIFT TEV_KREGISTERH_B_SHIFT +#define TEV_REGISTERH_B8_MASK TEV_KREGISTERH_B_MASK +#define SC_TEV_REGISTERH_SET_B8(line, tev_registerh, b8) \ + FAST_GPFLAGSET(line, tev_registerh, b8, TEV_REGISTERH_B8) + +#define TEV_REGISTERH_G8_SIZE TEV_KREGISTERH_G_SIZE +#define TEV_REGISTERH_G8_SHIFT TEV_KREGISTERH_G_SHIFT +#define TEV_REGISTERH_G8_MASK TEV_KREGISTERH_G_MASK +#define SC_TEV_REGISTERH_SET_G8(line, tev_registerh, g8) \ + FAST_GPFLAGSET(line, tev_registerh, g8, TEV_REGISTERH_G8) + +#define XF_AMBIENT0_F_RGBA_SIZE \ + ((XF_AMBIENT0_F_ALPHA_SIZE)+(XF_AMBIENT0_F_BLUE_SIZE)+ \ + (XF_AMBIENT0_F_GREEN_SIZE)+(XF_AMBIENT0_F_RED_SIZE)) +#define XF_AMBIENT0_F_RGBA_SHIFT \ + XF_AMBIENT0_F_ALPHA_SHIFT +#define XF_AMBIENT0_F_RGBA_MASK \ + ((XF_AMBIENT0_F_ALPHA_MASK)|(XF_AMBIENT0_F_BLUE_MASK)| \ + (XF_AMBIENT0_F_GREEN_MASK)|(XF_AMBIENT0_F_RED_MASK)) +#define SC_XF_AMBIENT0_F_SET_RGBA(xf_ambient0_f, rgba) { \ + xf_ambient0_f = (((unsigned long)(xf_ambient0_f)) & ~XF_AMBIENT0_F_RGBA_MASK) | (((unsigned long)(rgba)) << XF_AMBIENT0_F_RGBA_SHIFT);\ +} + +#define XF_AMBIENT0_F_ALPHA_SIZE 8 +#define XF_AMBIENT0_F_ALPHA_SHIFT 0 +#define XF_AMBIENT0_F_ALPHA_MASK 0x000000ff +#define XF_AMBIENT0_F_GET_ALPHA(xf_ambient0_f) \ + ((((unsigned long)(xf_ambient0_f)) & XF_AMBIENT0_F_ALPHA_MASK) >> XF_AMBIENT0_F_ALPHA_SHIFT) +#define XF_AMBIENT0_F_SET_ALPHA(xf_ambient0_f, alpha) { \ + xf_ambient0_f = (((unsigned long)(xf_ambient0_f)) & ~XF_AMBIENT0_F_ALPHA_MASK) | (((unsigned long)(alpha)) << XF_AMBIENT0_F_ALPHA_SHIFT);\ +} +#define XF_AMBIENT0_F_BLUE_SIZE 8 +#define XF_AMBIENT0_F_BLUE_SHIFT 8 +#define XF_AMBIENT0_F_BLUE_MASK 0x0000ff00 +#define XF_AMBIENT0_F_GET_BLUE(xf_ambient0_f) \ + ((((unsigned long)(xf_ambient0_f)) & XF_AMBIENT0_F_BLUE_MASK) >> XF_AMBIENT0_F_BLUE_SHIFT) +#define XF_AMBIENT0_F_SET_BLUE(xf_ambient0_f, blue) { \ + xf_ambient0_f = (((unsigned long)(xf_ambient0_f)) & ~XF_AMBIENT0_F_BLUE_MASK) | (((unsigned long)(blue)) << XF_AMBIENT0_F_BLUE_SHIFT);\ +} +#define XF_AMBIENT0_F_GREEN_SIZE 8 +#define XF_AMBIENT0_F_GREEN_SHIFT 16 +#define XF_AMBIENT0_F_GREEN_MASK 0x00ff0000 +#define XF_AMBIENT0_F_GET_GREEN(xf_ambient0_f) \ + ((((unsigned long)(xf_ambient0_f)) & XF_AMBIENT0_F_GREEN_MASK) >> XF_AMBIENT0_F_GREEN_SHIFT) +#define XF_AMBIENT0_F_SET_GREEN(xf_ambient0_f, green) { \ + xf_ambient0_f = (((unsigned long)(xf_ambient0_f)) & ~XF_AMBIENT0_F_GREEN_MASK) | (((unsigned long)(green)) << XF_AMBIENT0_F_GREEN_SHIFT);\ +} +#define XF_AMBIENT0_F_RED_SIZE 8 +#define XF_AMBIENT0_F_RED_SHIFT 24 +#define XF_AMBIENT0_F_RED_MASK 0xff000000 +#define XF_AMBIENT0_F_GET_RED(xf_ambient0_f) \ + ((((unsigned long)(xf_ambient0_f)) & XF_AMBIENT0_F_RED_MASK) >> XF_AMBIENT0_F_RED_SHIFT) +#define XF_AMBIENT0_F_SET_RED(xf_ambient0_f, red) { \ + xf_ambient0_f = (((unsigned long)(xf_ambient0_f)) & ~XF_AMBIENT0_F_RED_MASK) | (((unsigned long)(red)) << XF_AMBIENT0_F_RED_SHIFT);\ +} + +#define XF_AMBIENT0_F_RGB_SIZE \ + ((XF_AMBIENT0_F_BLUE_SIZE)+(XF_AMBIENT0_F_GREEN_SIZE)+(XF_AMBIENT0_F_RED_SIZE)) +#define XF_AMBIENT0_F_RGB_SHIFT \ + XF_AMBIENT0_F_BLUE_SHIFT +#define XF_AMBIENT0_F_RGB_MASK \ + ((XF_AMBIENT0_F_BLUE_MASK)|(XF_AMBIENT0_F_GREEN_MASK)|(XF_AMBIENT0_F_RED_MASK)) + +#define SC_XF_AMBIENT0_F_SET_RGB(line, xf_ambient0_f, rgb) \ + FAST_GPFLAGSET(line, xf_ambient0_f, rgb, XF_AMBIENT0_F_RGB) + +#define XF_AMBIENT1_F_RGBA_SIZE \ + ((XF_AMBIENT1_F_ALPHA_SIZE)+(XF_AMBIENT1_F_BLUE_SIZE)+ \ + (XF_AMBIENT1_F_GREEN_SIZE)+(XF_AMBIENT1_F_RED_SIZE)) +#define XF_AMBIENT1_F_RGBA_SHIFT \ + XF_AMBIENT1_F_ALPHA_SHIFT +#define XF_AMBIENT1_F_RGBA_MASK \ + ((XF_AMBIENT1_F_ALPHA_MASK)|(XF_AMBIENT1_F_BLUE_MASK)| \ + (XF_AMBIENT1_F_GREEN_MASK)|(XF_AMBIENT1_F_RED_MASK)) +#define SC_XF_AMBIENT1_F_SET_RGBA(xf_ambient1_f, rgba) { \ + xf_ambient1_f = (((unsigned long)(xf_ambient1_f)) & ~XF_AMBIENT1_F_RGBA_MASK) | (((unsigned long)(rgba)) << XF_AMBIENT1_F_RGBA_SHIFT);\ +} + +#define XF_AMBIENT1_F_ALPHA_SIZE 8 +#define XF_AMBIENT1_F_ALPHA_SHIFT 0 +#define XF_AMBIENT1_F_ALPHA_MASK 0x000000ff +#define XF_AMBIENT1_F_GET_ALPHA(xf_ambient1_f) \ + ((((unsigned long)(xf_ambient1_f)) & XF_AMBIENT1_F_ALPHA_MASK) >> XF_AMBIENT1_F_ALPHA_SHIFT) +#define XF_AMBIENT1_F_SET_ALPHA(xf_ambient1_f, alpha) { \ + xf_ambient1_f = (((unsigned long)(xf_ambient1_f)) & ~XF_AMBIENT1_F_ALPHA_MASK) | (((unsigned long)(alpha)) << XF_AMBIENT1_F_ALPHA_SHIFT);\ +} +#define XF_AMBIENT1_F_BLUE_SIZE 8 +#define XF_AMBIENT1_F_BLUE_SHIFT 8 +#define XF_AMBIENT1_F_BLUE_MASK 0x0000ff00 +#define XF_AMBIENT1_F_GET_BLUE(xf_ambient1_f) \ + ((((unsigned long)(xf_ambient1_f)) & XF_AMBIENT1_F_BLUE_MASK) >> XF_AMBIENT1_F_BLUE_SHIFT) +#define XF_AMBIENT1_F_SET_BLUE(xf_ambient1_f, blue) { \ + xf_ambient1_f = (((unsigned long)(xf_ambient1_f)) & ~XF_AMBIENT1_F_BLUE_MASK) | (((unsigned long)(blue)) << XF_AMBIENT1_F_BLUE_SHIFT);\ +} +#define XF_AMBIENT1_F_GREEN_SIZE 8 +#define XF_AMBIENT1_F_GREEN_SHIFT 16 +#define XF_AMBIENT1_F_GREEN_MASK 0x00ff0000 +#define XF_AMBIENT1_F_GET_GREEN(xf_ambient1_f) \ + ((((unsigned long)(xf_ambient1_f)) & XF_AMBIENT1_F_GREEN_MASK) >> XF_AMBIENT1_F_GREEN_SHIFT) +#define XF_AMBIENT1_F_SET_GREEN(xf_ambient1_f, green) { \ + xf_ambient1_f = (((unsigned long)(xf_ambient1_f)) & ~XF_AMBIENT1_F_GREEN_MASK) | (((unsigned long)(green)) << XF_AMBIENT1_F_GREEN_SHIFT);\ +} +#define XF_AMBIENT1_F_RED_SIZE 8 +#define XF_AMBIENT1_F_RED_SHIFT 24 +#define XF_AMBIENT1_F_RED_MASK 0xff000000 +#define XF_AMBIENT1_F_GET_RED(xf_ambient1_f) \ + ((((unsigned long)(xf_ambient1_f)) & XF_AMBIENT1_F_RED_MASK) >> XF_AMBIENT1_F_RED_SHIFT) +#define XF_AMBIENT1_F_SET_RED(xf_ambient1_f, red) { \ + xf_ambient1_f = (((unsigned long)(xf_ambient1_f)) & ~XF_AMBIENT1_F_RED_MASK) | (((unsigned long)(red)) << XF_AMBIENT1_F_RED_SHIFT);\ +} + +#define XF_AMBIENT1_F_RGB_SIZE \ + ((XF_AMBIENT1_F_BLUE_SIZE)+(XF_AMBIENT1_F_GREEN_SIZE)+(XF_AMBIENT1_F_RED_SIZE)) +#define XF_AMBIENT1_F_RGB_SHIFT \ + XF_AMBIENT1_F_BLUE_SHIFT +#define XF_AMBIENT1_F_RGB_MASK \ + ((XF_AMBIENT1_F_BLUE_MASK)|(XF_AMBIENT1_F_GREEN_MASK)|(XF_AMBIENT1_F_RED_MASK)) +#define SC_XF_AMBIENT1_F_SET_RGB(line, xf_ambient1_f, rgb) \ + FAST_GPFLAGSET(line, xf_ambient1_f, rgb, XF_AMBIENT1_F_RGB) + +#define XF_MATERIAL0_F_RGBA_SIZE \ + ((XF_MATERIAL0_F_ALPHA_SIZE)+(XF_MATERIAL0_F_BLUE_SIZE)+ \ + (XF_MATERIAL0_F_GREEN_SIZE)+(XF_MATERIAL0_F_RED_SIZE)) +#define XF_MATERIAL0_F_RGBA_SHIFT \ + XF_MATERIAL0_F_ALPHA_SHIFT +#define XF_MATERIAL0_F_RGBA_MASK \ + ((XF_MATERIAL0_F_ALPHA_MASK)|(XF_MATERIAL0_F_BLUE_MASK)| \ + (XF_MATERIAL0_F_GREEN_MASK)|(XF_MATERIAL0_F_RED_MASK)) +#define SC_XF_MATERIAL0_F_SET_RGBA(xf_material0_f, rgba) { \ + xf_material0_f = (((unsigned long)(xf_material0_f)) & ~XF_MATERIAL0_F_RGBA_MASK) | (((unsigned long)(rgba)) << XF_MATERIAL0_F_RGBA_SHIFT);\ +} + +#define XF_MATERIAL0_F_RGBA_SIZE \ + ((XF_MATERIAL0_F_ALPHA_SIZE)+(XF_MATERIAL0_F_BLUE_SIZE)+ \ + (XF_MATERIAL0_F_GREEN_SIZE)+(XF_MATERIAL0_F_RED_SIZE)) +#define XF_MATERIAL0_F_RGBA_SHIFT \ + XF_MATERIAL0_F_ALPHA_SHIFT +#define XF_MATERIAL0_F_RGBA_MASK \ + ((XF_MATERIAL0_F_ALPHA_MASK)|(XF_MATERIAL0_F_BLUE_MASK)| \ + (XF_MATERIAL0_F_GREEN_MASK)|(XF_MATERIAL0_F_RED_MASK)) + +#define XF_MATERIAL0_F_RGB_SIZE \ + ((XF_MATERIAL0_F_BLUE_SIZE)+(XF_MATERIAL0_F_GREEN_SIZE)+(XF_MATERIAL0_F_RED_SIZE)) +#define XF_MATERIAL0_F_RGB_SHIFT \ + XF_MATERIAL0_F_BLUE_SHIFT +#define XF_MATERIAL0_F_RGB_MASK \ + ((XF_MATERIAL0_F_BLUE_MASK)|(XF_MATERIAL0_F_GREEN_MASK)|(XF_MATERIAL0_F_RED_MASK)) +#define SC_XF_MATERIAL0_F_SET_RGB(line, xf_material0_f, rgb) \ + FAST_GPFLAGSET(line, xf_material0_f, rgb, XF_MATERIAL0_F_RGB) + +#define XF_MATERIAL0_F_RGB_SIZE \ + ((XF_MATERIAL0_F_BLUE_SIZE)+(XF_MATERIAL0_F_GREEN_SIZE)+(XF_MATERIAL0_F_RED_SIZE)) +#define XF_MATERIAL0_F_RGB_SHIFT \ + XF_MATERIAL0_F_BLUE_SHIFT +#define XF_MATERIAL0_F_RGB_MASK \ + ((XF_MATERIAL0_F_BLUE_MASK)|(XF_MATERIAL0_F_GREEN_MASK)|(XF_MATERIAL0_F_RED_MASK)) +#define SC_XF_MATERIAL0_F_SET_RGB(line, xf_material0_f, rgb) \ + FAST_GPFLAGSET(line, xf_material0_f, rgb, XF_MATERIAL0_F_RGB) + +#define XF_MATERIAL1_F_RGBA_SIZE \ + ((XF_MATERIAL1_F_ALPHA_SIZE)+(XF_MATERIAL1_F_BLUE_SIZE)+ \ + (XF_MATERIAL1_F_GREEN_SIZE)+(XF_MATERIAL1_F_RED_SIZE)) +#define XF_MATERIAL1_F_RGBA_SHIFT \ + XF_MATERIAL1_F_ALPHA_SHIFT +#define XF_MATERIAL1_F_RGBA_MASK \ + ((XF_MATERIAL1_F_ALPHA_MASK)|(XF_MATERIAL1_F_BLUE_MASK)| \ + (XF_MATERIAL1_F_GREEN_MASK)|(XF_MATERIAL1_F_RED_MASK)) +#define SC_XF_MATERIAL1_F_SET_RGBA(xf_material1_f, rgba) { \ + xf_material1_f = (((unsigned long)(xf_material1_f)) & ~XF_MATERIAL1_F_RGBA_MASK) | (((unsigned long)(rgba)) << XF_MATERIAL1_F_RGBA_SHIFT);\ +} + + +#define XF_MATERIAL1_F_RGB_SIZE \ + ((XF_MATERIAL1_F_BLUE_SIZE)+(XF_MATERIAL1_F_GREEN_SIZE)+(XF_MATERIAL1_F_RED_SIZE)) +#define XF_MATERIAL1_F_RGB_SHIFT \ + XF_MATERIAL1_F_BLUE_SHIFT +#define XF_MATERIAL1_F_RGB_MASK \ + ((XF_MATERIAL1_F_BLUE_MASK)|(XF_MATERIAL1_F_GREEN_MASK)|(XF_MATERIAL1_F_RED_MASK)) +#define SC_XF_MATERIAL1_F_SET_RGB(line, xf_material1_f, rgb) \ + FAST_GPFLAGSET(line, xf_material1_f, rgb, XF_MATERIAL1_F_RGB) + +#define XF_COLOR0CNTRL_F_LIGHT0123_SIZE \ + ((XF_COLOR0CNTRL_F_LIGHT0_SIZE)+(XF_COLOR0CNTRL_F_LIGHT1_SIZE)+ \ + (XF_COLOR0CNTRL_F_LIGHT2_SIZE)+(XF_COLOR0CNTRL_F_LIGHT3_SIZE)) +#define XF_COLOR0CNTRL_F_LIGHT0123_SHIFT \ + XF_COLOR0CNTRL_F_LIGHT0_SHIFT +#define XF_COLOR0CNTRL_F_LIGHT0123_MASK \ + ((XF_COLOR0CNTRL_F_LIGHT0_MASK)|(XF_COLOR0CNTRL_F_LIGHT1_MASK)| \ + (XF_COLOR0CNTRL_F_LIGHT2_MASK)|(XF_COLOR0CNTRL_F_LIGHT3_MASK)) +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT0123(line, xf_color0cntrl_f, light0123) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f, light0123, XF_COLOR0CNTRL_F_LIGHT0123) + +#define XF_COLOR0CNTRL_F_LIGHT4567_SIZE \ + ((XF_COLOR0CNTRL_F_LIGHT4_SIZE)+(XF_COLOR0CNTRL_F_LIGHT5_SIZE)+ \ + (XF_COLOR0CNTRL_F_LIGHT6_SIZE)+(XF_COLOR0CNTRL_F_LIGHT7_SIZE)) +#define XF_COLOR0CNTRL_F_LIGHT4567_SHIFT \ + XF_COLOR0CNTRL_F_LIGHT4_SHIFT +#define XF_COLOR0CNTRL_F_LIGHT4567_MASK \ + ((XF_COLOR0CNTRL_F_LIGHT4_MASK)|(XF_COLOR0CNTRL_F_LIGHT5_MASK)| \ + (XF_COLOR0CNTRL_F_LIGHT6_MASK)|(XF_COLOR0CNTRL_F_LIGHT7_MASK)) +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT4567(line, xf_color0cntrl_f, light4567) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f, light4567, XF_COLOR0CNTRL_F_LIGHT4567) + +#endif // GXFDLSHORTCUT_H diff --git a/include/revolution/private/GXRegs.h b/include/revolution/private/GXRegs.h new file mode 100644 index 0000000000..ab6ca00c4d --- /dev/null +++ b/include/revolution/private/GXRegs.h @@ -0,0 +1,186 @@ +#ifndef GXREGS_H +#define GXREGS_H + +#include <revolution/gx.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#include <revolution/private/bp_reg.h> +#include <revolution/private/cp_reg.h> +#include <revolution/private/gen_reg.h> +#include <revolution/private/pe_reg.h> +#include <revolution/private/pi_reg.h> +#include <revolution/private/ras_reg.h> +#include <revolution/private/su_reg.h> +#include <revolution/private/tev_reg.h> +#include <revolution/private/tx_reg.h> +#include <revolution/private/xf_mem.h> + +extern volatile void* __piReg; +extern volatile void* __cpReg; +extern volatile void* __peReg; +extern volatile void* __memReg; + +#define MEM_PE_REQCOUNTH_IDX 0x27 +#define MEM_PE_REQCOUNTL_IDX 0x28 + +/* GX fifo write helpers */ + +#define GX_WRITE_U8(ub) \ + GXWGFifo.u8 = (u8)(ub) + +#define GX_WRITE_U16(us) \ + GXWGFifo.u16 = (u16)(us) + +#define GX_WRITE_U32(ui) \ + GXWGFifo.u32 = (u32)(ui) + +#define GX_WRITE_F32(f) \ + GXWGFifo.f32 = (f32)(f); + + +#define GX_PI_REG_WRITE_U32(a, d) *(vu32*)((vu8*)__piReg + (a)) = (u32)(d) + +#define GX_PI_REG_READ_U32(a) *(vu32*)((vu8*)__piReg + (a)) + +#define GX_CP_REG_WRITE_U16(a, d) *(vu16*)((vu16*)__cpReg + (a)) = (u16)(d) + +#define GX_CP_REG_READ_U16(a) *(vu16*)((vu16*)__cpReg + (a)) + +#define GX_CP_REG_WRITE_U32(a, d) *(vu32*)((vu16*)__cpReg + (a)) = (u32)(d) + +#define GX_CP_REG_READ_U32(a) *(vu32*)((vu16*)__cpReg + (a)) + +#define GX_MEM_REG_WRITE_U16(a, d) *(vu16*)((vu16*)__memReg + (a)) = (u16)(d) + +#define GX_MEM_REG_READ_U16(a) *(vu16*)((vu16*)__memReg + (a)) + +#define GX_PE_REG_WRITE_U16(a, d) *(vu16*)((vu16*)__peReg + (a)) = (u16)(d) + +#define GX_PE_REG_READ_U16(a) *(vu16*)((vu16*)__peReg + (a)) + +#define GX_CP_IDLE_REG_READ_U16(a) GX_CP_REG_READ_U16(a) + +#define GX_PI_REG_WRITE_U32(a, d) *(vu32*)((vu8*)__piReg + (a)) = (u32)(d) + +#define GX_PI_REG_READ_U32(a) *(vu32*)((vu8*)__piReg + (a)) + +#define GX_CP_REG_WRITE_U16(a, d) *(vu16*)((vu16*)__cpReg + (a)) = (u16)(d) + +#define GX_CP_REG_READ_U16(a) *(vu16*)((vu16*)__cpReg + (a)) + +#define GX_CP_REG_WRITE_U32(a, d) *(vu32*)((vu16*)__cpReg + (a)) = (u32)(d) + +#define GX_CP_REG_READ_U32(a) *(vu32*)((vu16*)__cpReg + (a)) + +#define GX_MEM_REG_WRITE_U16(a, d) *(vu16*)((vu16*)__memReg + (a)) = (u16)(d) + +#define GX_MEM_REG_READ_U16(a) *(vu16*)((vu16*)__memReg + (a)) + +#define GX_PE_REG_WRITE_U16(a, d) *(vu16*)((vu16*)__peReg + (a)) = (u16)(d) + +#define GX_PE_REG_READ_U16(a) *(vu16*)((vu16*)__peReg + (a)) + +#define GX_CP_IDLE_REG_READ_U16(a) GX_CP_REG_READ_U16(a) + +#define GX_WRITE_CP_STRM_REG(addr, vtxfmt, data) \ + { \ + GX_WRITE_U8(CP_OPCODE(0, 1)); \ + GX_WRITE_U8(CP_STREAM_REG((vtxfmt), (addr))); \ + GX_WRITE_U32((data)); \ + } + +// needed to match some places +#define GX_WRITE_CP_STRM_REG_alt(addr, vtxfmt, data, rAddr) \ + { \ + s32 regAddr; \ + GX_WRITE_U8(CP_OPCODE(0, 1)); \ + GX_WRITE_U8(CP_STREAM_REG((vtxfmt), (addr))); \ + GX_WRITE_U32((data)); \ + regAddr = rAddr; \ + } + +// needed to match some places +#if DEBUG +#define GX_WRITE_CP_STRM_REG_alt2(addr, vtxfmt, data, rAddr) \ + { \ + s32 regAddr; \ + GX_WRITE_U8(CP_OPCODE(0, 1)); \ + GX_WRITE_U8(CP_STREAM_REG((vtxfmt), (addr))); \ + GX_WRITE_U32((data)); \ + regAddr = rAddr; \ + if (regAddr >= 0 && regAddr < 4) { \ + __GXData->indexBase[regAddr] = data; \ + } \ + } +#else +#define GX_WRITE_CP_STRM_REG_alt2(addr, vtxfmt, data, rAddr) GX_WRITE_CP_STRM_REG(addr, vtxfmt, data) +#endif + +// needed to match some places +#if DEBUG +#define GX_WRITE_CP_STRM_REG_alt3(addr, vtxfmt, data, rAddr) \ + { \ + s32 regAddr; \ + GX_WRITE_U8(CP_OPCODE(0, 1)); \ + GX_WRITE_U8(CP_STREAM_REG((vtxfmt), (addr))); \ + GX_WRITE_U32((data)); \ + regAddr = rAddr; \ + if (regAddr >= 0 && regAddr < 4) { \ + __GXData->indexStride[regAddr] = data; \ + } \ + } +#else +#define GX_WRITE_CP_STRM_REG_alt3(addr, vtxfmt, data, rAddr) GX_WRITE_CP_STRM_REG(addr, vtxfmt, data) +#endif + +#define GX_WRITE_XF_REG(addr, data, cnt) \ + { \ + GX_WRITE_U8(CP_OPCODE(0, 0x2)); \ + GX_WRITE_U32(CP_XF_LOADREGS((addr), (cnt))); \ + GX_WRITE_U32((data)); \ + VERIF_XF_REG(addr, data); \ + } + +#define GX_WRITE_XF_MEM_U32(addr, data) GX_WRITE_U32(data) +#define GX_WRITE_XF_MEM_F32(addr, data) GX_WRITE_F32(data) + +#define GX_WRITE_RA_REG(reg) \ + { \ + GX_WRITE_U8(CP_OPCODE(1, 0xC)); \ + GX_WRITE_U32((reg)); \ + VERIF_RAS_REG(reg); \ + } + +#ifdef __MWERKS__ +#define GX_DEFINE_GX_READ_COUNTER(unit) \ + inline u32 __GXRead##unit##CounterU32(u32 regAddrL, u32 regAddrH) { \ + u32 ctrH0, ctrH1, ctrL; \ + ctrH0 = GX_##unit##_REG_READ_U16(regAddrH); \ + do { \ + ctrH1 = ctrH0; \ + ctrL = GX_##unit##_REG_READ_U16(regAddrL); \ + ctrH0 = GX_##unit##_REG_READ_U16(regAddrH); \ + } while (ctrH0 != ctrH1); \ + return ((ctrH0 << 16) | ctrL); \ + } +#else +#define GX_DEFINE_GX_READ_COUNTER(unit) +#endif + +#ifdef __MWERKS__ +#define FAST_FLAG_SET(regOrg, newFlag, shift, size) \ + do { \ + (regOrg) = (u32)__rlwimi((int)(regOrg), (int)(newFlag), (shift), (32 - (shift) - (size)), (31 - (shift))); \ + } while (0); +#else +#define FAST_FLAG_SET(regOrg, newFlag, shift, size) +#endif + +#ifdef __cplusplus +} +#endif + +#endif // GXREGS_H diff --git a/include/revolution/private/bp_reg.h b/include/revolution/private/bp_reg.h new file mode 100644 index 0000000000..1ac478453d --- /dev/null +++ b/include/revolution/private/bp_reg.h @@ -0,0 +1,229 @@ +#ifndef BP_REG_H +#define BP_REG_H + +#include <revolution/private/GXFDLShortcut.h> + +#define BP_IMASK_RID_SIZE 8 +#define BP_IMASK_RID_SHIFT 24 +#define BP_IMASK_RID_MASK 0xff000000 +#define BP_IMASK_GET_RID(bp_imask) \ + ((((unsigned long)(bp_imask)) & BP_IMASK_RID_MASK) >> BP_IMASK_RID_SHIFT) + +#define BP_CMD_BT_SIZE 2 +#define BP_CMD_BT_SHIFT 0 +#define BP_CMD_BT_MASK 0x00000003 +#define BP_CMD_GET_BT(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_BT_MASK) >> BP_CMD_BT_SHIFT) + +#define BP_CMD_FMT_SIZE 2 +#define BP_CMD_FMT_SHIFT 2 +#define BP_CMD_FMT_MASK 0x0000000c +#define BP_CMD_GET_FMT(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_FMT_MASK) >> BP_CMD_FMT_SHIFT) + +#define BP_CMD_BIAS_SIZE 3 +#define BP_CMD_BIAS_SHIFT 4 +#define BP_CMD_BIAS_MASK 0x00000070 +#define BP_CMD_GET_BIAS(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_BIAS_MASK) >> BP_CMD_BIAS_SHIFT) + +#define BP_CMD_BS_SIZE 2 +#define BP_CMD_BS_SHIFT 7 +#define BP_CMD_BS_MASK 0x00000180 +#define BP_CMD_GET_BS(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_BS_MASK) >> BP_CMD_BS_SHIFT) + +#define BP_CMD_M_SIZE 4 +#define BP_CMD_M_SHIFT 9 +#define BP_CMD_M_MASK 0x00001e00 +#define BP_CMD_GET_M(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_M_MASK) >> BP_CMD_M_SHIFT) + +#define BP_CMD_SW_SIZE 3 +#define BP_CMD_SW_SHIFT 13 +#define BP_CMD_SW_MASK 0x0000e000 +#define BP_CMD_GET_SW(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_SW_MASK) >> BP_CMD_SW_SHIFT) + +#define BP_CMD_TW_SIZE 3 +#define BP_CMD_TW_SHIFT 16 +#define BP_CMD_TW_MASK 0x00070000 +#define BP_CMD_GET_TW(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_TW_MASK) >> BP_CMD_TW_SHIFT) + +#define BP_CMD_LB_SIZE 1 +#define BP_CMD_LB_SHIFT 19 +#define BP_CMD_LB_MASK 0x00080000 +#define BP_CMD_GET_LB(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_LB_MASK) >> BP_CMD_LB_SHIFT) + +#define BP_CMD_FB_SIZE 1 +#define BP_CMD_FB_SHIFT 20 +#define BP_CMD_FB_MASK 0x00100000 +#define BP_CMD_GET_FB(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_FB_MASK) >> BP_CMD_FB_SHIFT) + +#define BP_CMD_PAD0_SIZE 3 +#define BP_CMD_PAD0_SHIFT 21 +#define BP_CMD_PAD0_MASK 0x00e00000 +#define BP_CMD_GET_PAD0(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_PAD0_MASK) >> BP_CMD_PAD0_SHIFT) + +#define BP_CMD_RID_SIZE 8 +#define BP_CMD_RID_SHIFT 24 +#define BP_CMD_RID_MASK 0xff000000 +#define BP_CMD_GET_RID(bp_cmd) \ + ((((unsigned long)(bp_cmd)) & BP_CMD_RID_MASK) >> BP_CMD_RID_SHIFT) + +#define BP_MTXA_MA_SIZE 11 +#define BP_MTXA_MA_SHIFT 0 +#define BP_MTXA_MA_MASK 0x000007ff +#define BP_MTXA_GET_MA(bp_mtxa) \ + ((((unsigned long)(bp_mtxa)) & BP_MTXA_MA_MASK) >> BP_MTXA_MA_SHIFT) + +#define BP_MTXA_MB_SIZE 11 +#define BP_MTXA_MB_SHIFT 11 +#define BP_MTXA_MB_MASK 0x003ff800 +#define BP_MTXA_GET_MB(bp_mtxa) \ + ((((unsigned long)(bp_mtxa)) & BP_MTXA_MB_MASK) >> BP_MTXA_MB_SHIFT) + +#define BP_MTXA_S_SIZE 2 +#define BP_MTXA_S_SHIFT 22 +#define BP_MTXA_S_MASK 0x00c00000 +#define BP_MTXA_GET_S(bp_mtxa) \ + ((((unsigned long)(bp_mtxa)) & BP_MTXA_S_MASK) >> BP_MTXA_S_SHIFT) + +#define BP_MTXA_RID_SIZE 8 +#define BP_MTXA_RID_SHIFT 24 +#define BP_MTXA_RID_MASK 0xff000000 +#define BP_MTXA_GET_RID(bp_mtxa) \ + ((((unsigned long)(bp_mtxa)) & BP_MTXA_RID_MASK) >> BP_MTXA_RID_SHIFT) + +#define BP_MTXB_MC_SIZE 11 +#define BP_MTXB_MC_SHIFT 0 +#define BP_MTXB_MC_MASK 0x000007ff +#define BP_MTXB_GET_MC(bp_mtxb) \ + ((((unsigned long)(bp_mtxb)) & BP_MTXB_MC_MASK) >> BP_MTXB_MC_SHIFT) + +#define BP_MTXB_MD_SIZE 11 +#define BP_MTXB_MD_SHIFT 11 +#define BP_MTXB_MD_MASK 0x003ff800 +#define BP_MTXB_GET_MD(bp_mtxb) \ + ((((unsigned long)(bp_mtxb)) & BP_MTXB_MD_MASK) >> BP_MTXB_MD_SHIFT) + +#define BP_MTXB_S_SIZE 2 +#define BP_MTXB_S_SHIFT 22 +#define BP_MTXB_S_MASK 0x00c00000 +#define BP_MTXB_GET_S(bp_mtxb) \ + ((((unsigned long)(bp_mtxb)) & BP_MTXB_S_MASK) >> BP_MTXB_S_SHIFT) + +#define BP_MTXB_RID_SIZE 8 +#define BP_MTXB_RID_SHIFT 24 +#define BP_MTXB_RID_MASK 0xff000000 +#define BP_MTXB_GET_RID(bp_mtxb) \ + ((((unsigned long)(bp_mtxb)) & BP_MTXB_RID_MASK) >> BP_MTXB_RID_SHIFT) + +#define BP_MTXC_ME_SIZE 11 +#define BP_MTXC_ME_SHIFT 0 +#define BP_MTXC_ME_MASK 0x000007ff +#define BP_MTXC_GET_ME(bp_mtxc) \ + ((((unsigned long)(bp_mtxc)) & BP_MTXC_ME_MASK) >> BP_MTXC_ME_SHIFT) + +#define BP_MTXC_MF_SIZE 11 +#define BP_MTXC_MF_SHIFT 11 +#define BP_MTXC_MF_MASK 0x003ff800 +#define BP_MTXC_GET_MF(bp_mtxc) \ + ((((unsigned long)(bp_mtxc)) & BP_MTXC_MF_MASK) >> BP_MTXC_MF_SHIFT) + +#define BP_MTXC_S_SIZE 2 +#define BP_MTXC_S_SHIFT 22 +#define BP_MTXC_S_MASK 0x00c00000 +#define BP_MTXC_GET_S(bp_mtxc) \ + ((((unsigned long)(bp_mtxc)) & BP_MTXC_S_MASK) >> BP_MTXC_S_SHIFT) + +#define BP_MTXC_RID_SIZE 8 +#define BP_MTXC_RID_SHIFT 24 +#define BP_MTXC_RID_MASK 0xff000000 +#define BP_MTXC_GET_RID(bp_mtxc) \ + ((((unsigned long)(bp_mtxc)) & BP_MTXC_RID_MASK) >> BP_MTXC_RID_SHIFT) + + +#define SC_BP_MTXA_SET_MA(line, bp_mtxa,ma) \ + FAST_GPFLAGSET(line, bp_mtxa,ma,BP_MTXA_MA) + +#define SC_BP_MTXA_SET_MB(line, bp_mtxa,mb) \ + FAST_GPFLAGSET(line, bp_mtxa,mb,BP_MTXA_MB) + +#define SC_BP_MTXA_SET_S(line, bp_mtxa,s) \ + FAST_GPFLAGSET(line, bp_mtxa,s,BP_MTXA_S) + +#define SC_BP_MTXA_SET_RID(line, bp_mtxa,rid) \ + FAST_GPFLAGSET(line, bp_mtxa,rid,BP_MTXA_RID) + +#define SC_BP_MTXB_SET_MC(line, bp_mtxb,mc) \ + FAST_GPFLAGSET(line, bp_mtxb,mc,BP_MTXB_MC) + +#define SC_BP_MTXB_SET_MD(line, bp_mtxb,md) \ + FAST_GPFLAGSET(line, bp_mtxb,md,BP_MTXB_MD) + +#define SC_BP_MTXB_SET_S(line, bp_mtxb,s) \ + FAST_GPFLAGSET(line, bp_mtxb,s,BP_MTXB_S) + +#define SC_BP_MTXB_SET_RID(line, bp_mtxb,rid) \ + FAST_GPFLAGSET(line, bp_mtxb,rid,BP_MTXB_RID) + +#define SC_BP_MTXC_SET_ME(line, bp_mtxc,me) \ + FAST_GPFLAGSET(line, bp_mtxc,me,BP_MTXC_ME) + +#define SC_BP_MTXC_SET_MF(line, bp_mtxc,mf) \ + FAST_GPFLAGSET(line, bp_mtxc,mf,BP_MTXC_MF) + +#define SC_BP_MTXC_SET_S(line, bp_mtxc,s) \ + FAST_GPFLAGSET(line, bp_mtxc,s,BP_MTXC_S) + +#define SC_BP_MTXC_SET_RID(line, bp_mtxc,rid) \ + FAST_GPFLAGSET(line, bp_mtxc,rid,BP_MTXC_RID) + +#define SC_BP_CMD_SET_BT(line, bp_cmd,bt) \ + FAST_GPFLAGSET(line, bp_cmd,bt,BP_CMD_BT) + +#define SC_BP_CMD_SET_FMT(line, bp_cmd,fmt) \ + FAST_GPFLAGSET(line, bp_cmd,fmt,BP_CMD_FMT) + +#define SC_BP_CMD_SET_BIAS(line, bp_cmd,bias) \ + FAST_GPFLAGSET(line, bp_cmd,bias,BP_CMD_BIAS) + +#define SC_BP_CMD_SET_BS(line, bp_cmd,bs) \ + FAST_GPFLAGSET(line, bp_cmd,bs,BP_CMD_BS) + +#define SC_BP_CMD_SET_M(line, bp_cmd,m) \ + FAST_GPFLAGSET(line, bp_cmd,m,BP_CMD_M) + +#define SC_BP_CMD_SET_SW(line, bp_cmd,sw) \ + FAST_GPFLAGSET(line, bp_cmd,sw,BP_CMD_SW) + +#define SC_BP_CMD_SET_TW(line, bp_cmd,tw) \ + FAST_GPFLAGSET(line, bp_cmd,tw,BP_CMD_TW) + +#define SC_BP_CMD_SET_LB(line, bp_cmd,lb) \ + FAST_GPFLAGSET(line, bp_cmd,lb,BP_CMD_LB) + +#define SC_BP_CMD_SET_FB(line, bp_cmd,fb) \ + FAST_GPFLAGSET(line, bp_cmd,fb,BP_CMD_FB) + +#define SC_BP_CMD_SET_PAD0(line, bp_cmd,pad0) \ + FAST_GPFLAGSET(line, bp_cmd,pad0,BP_CMD_PAD0) + +#define SC_BP_CMD_SET_RID(line, bp_cmd,rid) \ + FAST_GPFLAGSET(line, bp_cmd,rid,BP_CMD_RID) + +#define SC_BP_IMASK_SET_IMASK(line, bp_imask,imask) \ + FAST_GPFLAGSET(line, bp_imask,imask,BP_IMASK_IMASK) + +#define SC_BP_IMASK_SET_PAD0(line, bp_imask,pad0) \ + FAST_GPFLAGSET(line, bp_imask,pad0,BP_IMASK_PAD0) + +#define SC_BP_IMASK_SET_RID(line, bp_imask,rid) \ + FAST_GPFLAGSET(line, bp_imask,rid,BP_IMASK_RID) + +#endif // BP_REG_H diff --git a/include/revolution/private/cp_reg.h b/include/revolution/private/cp_reg.h new file mode 100644 index 0000000000..2cfda75e75 --- /dev/null +++ b/include/revolution/private/cp_reg.h @@ -0,0 +1,2043 @@ +#ifndef __FDL_CP_REG_H__ +#define __FDL_CP_REG_H__ + +#include <revolution/private/GXFDLShortcut.h> + +#define FDL_ASSERT(c) + +#define CP_CMD_NOP 0x00 +#define CP_CMD_QUADS 0x10 +#define CP_CMD_QUAD_STRIP 0x11 +#define CP_CMD_TRIANGLES 0x12 +#define CP_CMD_TRIANGLE_STRIP 0x13 +#define CP_CMD_TRIANGLE_FAN 0x14 +#define CP_CMD_LINES 0x15 +#define CP_CMD_LINE_STRIP 0x16 +#define CP_CMD_POINTS 0x17 +#define CP_CMD_LOADREGS 0x01 +#define CP_CMD_XF_LOADREGS 0x02 +#define CP_CMD_XF_IDXLDREG_A 0x04 +#define CP_CMD_XF_IDXLDREG_B 0x05 +#define CP_CMD_XF_IDXLDREG_C 0x06 +#define CP_CMD_XF_IDXLDREG_D 0x07 +#define CP_CMD_CALL_OBJECT 0x08 +#define CP_CMD_VCACHE_INVALIDATE 0x09 +#define CP_CMD_SU_BYPCMD0 0x0c +#define CP_CMD_SU_BYPCMD1 0x0d + +#define CP_COUNTER0L 0x20 +#define CP_COUNTER0H 0x21 +#define CP_COUNTER1L 0x22 +#define CP_COUNTER1H 0x23 +#define CP_COUNTER2L 0x24 +#define CP_COUNTER2H 0x25 +#define CP_COUNTER3L 0x26 +#define CP_COUNTER3H 0x27 +#define CP_VC_CHKCNTL 0x28 +#define CP_VC_CHKCNTH 0x29 + +#define CP_OPCODE_INDEX_SIZE 3 +#define CP_OPCODE_INDEX_SHIFT 0 +#define CP_OPCODE_INDEX_MASK 0x00000007 +#define CP_OPCODE_GET_INDEX(cp_opcode) \ + ((((unsigned long)(cp_opcode)) & CP_OPCODE_INDEX_MASK) >> CP_OPCODE_INDEX_SHIFT) +#define CP_OPCODE_SET_INDEX(cp_opcode, index) { \ + FDL_ASSERT(!((index) & ~((1 << CP_OPCODE_INDEX_SIZE)-1))); \ + cp_opcode = (((unsigned long)(cp_opcode)) & ~CP_OPCODE_INDEX_MASK) | (((unsigned long)(index)) << CP_OPCODE_INDEX_SHIFT);\ +} +#define CP_OPCODE_CMD_SIZE 5 +#define CP_OPCODE_CMD_SHIFT 3 +#define CP_OPCODE_CMD_MASK 0x000000f8 +#define CP_OPCODE_GET_CMD(cp_opcode) \ + ((((unsigned long)(cp_opcode)) & CP_OPCODE_CMD_MASK) >> CP_OPCODE_CMD_SHIFT) +#define CP_OPCODE_SET_CMD(cp_opcode, cmd) { \ + FDL_ASSERT(!((cmd) & ~((1 << CP_OPCODE_CMD_SIZE)-1))); \ + cp_opcode = (((unsigned long)(cp_opcode)) & ~CP_OPCODE_CMD_MASK) | (((unsigned long)(cmd)) << CP_OPCODE_CMD_SHIFT);\ +} +#define CP_OPCODE_TOTAL_SIZE 8 +#define CP_OPCODE(index, cmd) \ + ((((unsigned long)(index)) << CP_OPCODE_INDEX_SHIFT) | \ + (((unsigned long)(cmd)) << CP_OPCODE_CMD_SHIFT)) + +#define CP_VC_STAT_RESET 0x00 +#define CP_STAT_ENABLE 0x01 +#define CP_STAT_SEL 0x02 +#define CP_MATINDEX_A 0x03 +#define CP_MATINDEX_B 0x04 +#define CP_VCD_LO 0x05 +#define CP_VCD_HI 0x06 +#define CP_VAT_A 0x07 +#define CP_VAT_B 0x08 +#define CP_VAT_C 0x09 +#define CP_ARRAY_BASE 0x0a +#define CP_ARRAY_STRIDE 0x0b + +#define CP_STREAM_REG_INDEX_SIZE 4 +#define CP_STREAM_REG_INDEX_SHIFT 0 +#define CP_STREAM_REG_INDEX_MASK 0x0000000f +#define CP_STREAM_REG_GET_INDEX(cp_stream_reg) \ + ((((unsigned long)(cp_stream_reg)) & CP_STREAM_REG_INDEX_MASK) >> CP_STREAM_REG_INDEX_SHIFT) +#define CP_STREAM_REG_SET_INDEX(cp_stream_reg, index) { \ + FDL_ASSERT(!((index) & ~((1 << CP_STREAM_REG_INDEX_SIZE)-1))); \ + cp_stream_reg = (((unsigned long)(cp_stream_reg)) & ~CP_STREAM_REG_INDEX_MASK) | (((unsigned long)(index)) << CP_STREAM_REG_INDEX_SHIFT);\ +} +#define CP_STREAM_REG_ADDR_SIZE 4 +#define CP_STREAM_REG_ADDR_SHIFT 4 +#define CP_STREAM_REG_ADDR_MASK 0x000000f0 +#define CP_STREAM_REG_GET_ADDR(cp_stream_reg) \ + ((((unsigned long)(cp_stream_reg)) & CP_STREAM_REG_ADDR_MASK) >> CP_STREAM_REG_ADDR_SHIFT) +#define CP_STREAM_REG_SET_ADDR(cp_stream_reg, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_STREAM_REG_ADDR_SIZE)-1))); \ + cp_stream_reg = (((unsigned long)(cp_stream_reg)) & ~CP_STREAM_REG_ADDR_MASK) | (((unsigned long)(addr)) << CP_STREAM_REG_ADDR_SHIFT);\ +} +#define CP_STREAM_REG_TOTAL_SIZE 8 +#define CP_STREAM_REG(index, addr) \ + ((((unsigned long)(index)) << CP_STREAM_REG_INDEX_SHIFT) | \ + (((unsigned long)(addr)) << CP_STREAM_REG_ADDR_SHIFT)) + +#define CP_STATUS 0x00 +#define CP_ENABLE 0x01 +#define CP_CLR 0x02 +#define CP_MEMPERF_SEL 0x03 +#define CP_STM_LOW 0x05 +#define CP_FIFO_BASEL 0x10 +#define CP_FIFO_BASEH 0x11 +#define CP_FIFO_TOPL 0x12 +#define CP_FIFO_TOPH 0x13 +#define CP_FIFO_HICNTL 0x14 +#define CP_FIFO_HICNTH 0x15 +#define CP_FIFO_LOCNTL 0x16 +#define CP_FIFO_LOCNTH 0x17 +#define CP_FIFO_COUNTL 0x18 +#define CP_FIFO_COUNTH 0x19 +#define CP_FIFO_WPTRL 0x1a +#define CP_FIFO_WPTRH 0x1b +#define CP_FIFO_RPTRL 0x1c +#define CP_FIFO_RPTRH 0x1d +#define CP_FIFO_BRKL 0x1e +#define CP_FIFO_BRKH 0x1f +#define CP_COUNTER0L 0x20 +#define CP_COUNTER0H 0x21 +#define CP_COUNTER1L 0x22 +#define CP_COUNTER1H 0x23 +#define CP_COUNTER2L 0x24 +#define CP_COUNTER2H 0x25 +#define CP_COUNTER3L 0x26 +#define CP_COUNTER3H 0x27 +#define CP_VC_CHKCNTL 0x28 +#define CP_VC_CHKCNTH 0x29 +#define CP_VC_MISSL 0x2a +#define CP_VC_MISSH 0x2b +#define CP_VC_STALLL 0x2c +#define CP_VC_STALLH 0x2d +#define CP_FRCLK_CNTL 0x2e +#define CP_FRCLK_CNTH 0x2f +#define CP_XF_ADDR 0x30 +#define CP_XF_DATAL 0x31 +#define CP_XF_DATAH 0x32 +#define CP_NUM_REGS 0x33 + +/* +* cp_reg_status struct +*/ +#define CP_REG_STATUS_OVFL_SIZE 1 +#define CP_REG_STATUS_OVFL_SHIFT 0 +#define CP_REG_STATUS_OVFL_MASK 0x00000001 +#define CP_REG_STATUS_GET_OVFL(cp_reg_status) \ + ((((unsigned long)(cp_reg_status)) & CP_REG_STATUS_OVFL_MASK) >> CP_REG_STATUS_OVFL_SHIFT) +#define CP_REG_STATUS_SET_OVFL(cp_reg_status, ovfl) { \ + FDL_ASSERT(!((ovfl) & ~((1 << CP_REG_STATUS_OVFL_SIZE)-1))); \ + cp_reg_status = (((unsigned long)(cp_reg_status)) & ~CP_REG_STATUS_OVFL_MASK) | (((unsigned long)(ovfl)) << CP_REG_STATUS_OVFL_SHIFT);\ +} +#define CP_REG_STATUS_UNFL_SIZE 1 +#define CP_REG_STATUS_UNFL_SHIFT 1 +#define CP_REG_STATUS_UNFL_MASK 0x00000002 +#define CP_REG_STATUS_GET_UNFL(cp_reg_status) \ + ((((unsigned long)(cp_reg_status)) & CP_REG_STATUS_UNFL_MASK) >> CP_REG_STATUS_UNFL_SHIFT) +#define CP_REG_STATUS_SET_UNFL(cp_reg_status, unfl) { \ + FDL_ASSERT(!((unfl) & ~((1 << CP_REG_STATUS_UNFL_SIZE)-1))); \ + cp_reg_status = (((unsigned long)(cp_reg_status)) & ~CP_REG_STATUS_UNFL_MASK) | (((unsigned long)(unfl)) << CP_REG_STATUS_UNFL_SHIFT);\ +} +#define CP_REG_STATUS_FIFO_RDIDLE_SIZE 1 +#define CP_REG_STATUS_FIFO_RDIDLE_SHIFT 2 +#define CP_REG_STATUS_FIFO_RDIDLE_MASK 0x00000004 +#define CP_REG_STATUS_GET_FIFO_RDIDLE(cp_reg_status) \ + ((((unsigned long)(cp_reg_status)) & CP_REG_STATUS_FIFO_RDIDLE_MASK) >> CP_REG_STATUS_FIFO_RDIDLE_SHIFT) +#define CP_REG_STATUS_SET_FIFO_RDIDLE(cp_reg_status, fifo_rdidle) { \ + FDL_ASSERT(!((fifo_rdidle) & ~((1 << CP_REG_STATUS_FIFO_RDIDLE_SIZE)-1))); \ + cp_reg_status = (((unsigned long)(cp_reg_status)) & ~CP_REG_STATUS_FIFO_RDIDLE_MASK) | (((unsigned long)(fifo_rdidle)) << CP_REG_STATUS_FIFO_RDIDLE_SHIFT);\ +} +#define CP_REG_STATUS_CPIDLE_SIZE 1 +#define CP_REG_STATUS_CPIDLE_SHIFT 3 +#define CP_REG_STATUS_CPIDLE_MASK 0x00000008 +#define CP_REG_STATUS_GET_CPIDLE(cp_reg_status) \ + ((((unsigned long)(cp_reg_status)) & CP_REG_STATUS_CPIDLE_MASK) >> CP_REG_STATUS_CPIDLE_SHIFT) +#define CP_REG_STATUS_SET_CPIDLE(cp_reg_status, cpidle) { \ + FDL_ASSERT(!((cpidle) & ~((1 << CP_REG_STATUS_CPIDLE_SIZE)-1))); \ + cp_reg_status = (((unsigned long)(cp_reg_status)) & ~CP_REG_STATUS_CPIDLE_MASK) | (((unsigned long)(cpidle)) << CP_REG_STATUS_CPIDLE_SHIFT);\ +} +#define CP_REG_STATUS_FIFOBRK_SIZE 1 +#define CP_REG_STATUS_FIFOBRK_SHIFT 4 +#define CP_REG_STATUS_FIFOBRK_MASK 0x00000010 +#define CP_REG_STATUS_GET_FIFOBRK(cp_reg_status) \ + ((((unsigned long)(cp_reg_status)) & CP_REG_STATUS_FIFOBRK_MASK) >> CP_REG_STATUS_FIFOBRK_SHIFT) +#define CP_REG_STATUS_SET_FIFOBRK(cp_reg_status, fifobrk) { \ + FDL_ASSERT(!((fifobrk) & ~((1 << CP_REG_STATUS_FIFOBRK_SIZE)-1))); \ + cp_reg_status = (((unsigned long)(cp_reg_status)) & ~CP_REG_STATUS_FIFOBRK_MASK) | (((unsigned long)(fifobrk)) << CP_REG_STATUS_FIFOBRK_SHIFT);\ +} +#define CP_REG_STATUS_TOTAL_SIZE 5 +#define CP_REG_STATUS(ovfl, unfl, fifo_rdidle, cpidle, fifobrk) \ + ((((unsigned long)(ovfl)) << CP_REG_STATUS_OVFL_SHIFT) | \ + (((unsigned long)(unfl)) << CP_REG_STATUS_UNFL_SHIFT) | \ + (((unsigned long)(fifo_rdidle)) << CP_REG_STATUS_FIFO_RDIDLE_SHIFT) | \ + (((unsigned long)(cpidle)) << CP_REG_STATUS_CPIDLE_SHIFT) | \ + (((unsigned long)(fifobrk)) << CP_REG_STATUS_FIFOBRK_SHIFT)) + +/* +* cp_reg_enable struct +*/ +#define CP_REG_ENABLE_FIFORD_SIZE 1 +#define CP_REG_ENABLE_FIFORD_SHIFT 0 +#define CP_REG_ENABLE_FIFORD_MASK 0x00000001 +#define CP_REG_ENABLE_GET_FIFORD(cp_reg_enable) \ + ((((unsigned long)(cp_reg_enable)) & CP_REG_ENABLE_FIFORD_MASK) >> CP_REG_ENABLE_FIFORD_SHIFT) +#define CP_REG_ENABLE_SET_FIFORD(cp_reg_enable, fiford) { \ + FDL_ASSERT(!((fiford) & ~((1 << CP_REG_ENABLE_FIFORD_SIZE)-1))); \ + cp_reg_enable = (((unsigned long)(cp_reg_enable)) & ~CP_REG_ENABLE_FIFORD_MASK) | (((unsigned long)(fiford)) << CP_REG_ENABLE_FIFORD_SHIFT);\ +} +#define CP_REG_ENABLE_FIFOBRK_SIZE 1 +#define CP_REG_ENABLE_FIFOBRK_SHIFT 1 +#define CP_REG_ENABLE_FIFOBRK_MASK 0x00000002 +#define CP_REG_ENABLE_GET_FIFOBRK(cp_reg_enable) \ + ((((unsigned long)(cp_reg_enable)) & CP_REG_ENABLE_FIFOBRK_MASK) >> CP_REG_ENABLE_FIFOBRK_SHIFT) +#define CP_REG_ENABLE_SET_FIFOBRK(cp_reg_enable, fifobrk) { \ + FDL_ASSERT(!((fifobrk) & ~((1 << CP_REG_ENABLE_FIFOBRK_SIZE)-1))); \ + cp_reg_enable = (((unsigned long)(cp_reg_enable)) & ~CP_REG_ENABLE_FIFOBRK_MASK) | (((unsigned long)(fifobrk)) << CP_REG_ENABLE_FIFOBRK_SHIFT);\ +} +#define CP_REG_ENABLE_OVFLINT_SIZE 1 +#define CP_REG_ENABLE_OVFLINT_SHIFT 2 +#define CP_REG_ENABLE_OVFLINT_MASK 0x00000004 +#define CP_REG_ENABLE_GET_OVFLINT(cp_reg_enable) \ + ((((unsigned long)(cp_reg_enable)) & CP_REG_ENABLE_OVFLINT_MASK) >> CP_REG_ENABLE_OVFLINT_SHIFT) +#define CP_REG_ENABLE_SET_OVFLINT(cp_reg_enable, ovflint) { \ + FDL_ASSERT(!((ovflint) & ~((1 << CP_REG_ENABLE_OVFLINT_SIZE)-1))); \ + cp_reg_enable = (((unsigned long)(cp_reg_enable)) & ~CP_REG_ENABLE_OVFLINT_MASK) | (((unsigned long)(ovflint)) << CP_REG_ENABLE_OVFLINT_SHIFT);\ +} +#define CP_REG_ENABLE_UNFLINT_SIZE 1 +#define CP_REG_ENABLE_UNFLINT_SHIFT 3 +#define CP_REG_ENABLE_UNFLINT_MASK 0x00000008 +#define CP_REG_ENABLE_GET_UNFLINT(cp_reg_enable) \ + ((((unsigned long)(cp_reg_enable)) & CP_REG_ENABLE_UNFLINT_MASK) >> CP_REG_ENABLE_UNFLINT_SHIFT) +#define CP_REG_ENABLE_SET_UNFLINT(cp_reg_enable, unflint) { \ + FDL_ASSERT(!((unflint) & ~((1 << CP_REG_ENABLE_UNFLINT_SIZE)-1))); \ + cp_reg_enable = (((unsigned long)(cp_reg_enable)) & ~CP_REG_ENABLE_UNFLINT_MASK) | (((unsigned long)(unflint)) << CP_REG_ENABLE_UNFLINT_SHIFT);\ +} +#define CP_REG_ENABLE_WRPTRINC_SIZE 1 +#define CP_REG_ENABLE_WRPTRINC_SHIFT 4 +#define CP_REG_ENABLE_WRPTRINC_MASK 0x00000010 +#define CP_REG_ENABLE_GET_WRPTRINC(cp_reg_enable) \ + ((((unsigned long)(cp_reg_enable)) & CP_REG_ENABLE_WRPTRINC_MASK) >> CP_REG_ENABLE_WRPTRINC_SHIFT) +#define CP_REG_ENABLE_SET_WRPTRINC(cp_reg_enable, wrptrinc) { \ + FDL_ASSERT(!((wrptrinc) & ~((1 << CP_REG_ENABLE_WRPTRINC_SIZE)-1))); \ + cp_reg_enable = (((unsigned long)(cp_reg_enable)) & ~CP_REG_ENABLE_WRPTRINC_MASK) | (((unsigned long)(wrptrinc)) << CP_REG_ENABLE_WRPTRINC_SHIFT);\ +} +#define CP_REG_ENABLE_FIFOBRKINT_SIZE 1 +#define CP_REG_ENABLE_FIFOBRKINT_SHIFT 5 +#define CP_REG_ENABLE_FIFOBRKINT_MASK 0x00000020 +#define CP_REG_ENABLE_GET_FIFOBRKINT(cp_reg_enable) \ + ((((unsigned long)(cp_reg_enable)) & CP_REG_ENABLE_FIFOBRKINT_MASK) >> CP_REG_ENABLE_FIFOBRKINT_SHIFT) +#define CP_REG_ENABLE_SET_FIFOBRKINT(cp_reg_enable, fifobrkint) { \ + FDL_ASSERT(!((fifobrkint) & ~((1 << CP_REG_ENABLE_FIFOBRKINT_SIZE)-1))); \ + cp_reg_enable = (((unsigned long)(cp_reg_enable)) & ~CP_REG_ENABLE_FIFOBRKINT_MASK) | (((unsigned long)(fifobrkint)) << CP_REG_ENABLE_FIFOBRKINT_SHIFT);\ +} +#define CP_REG_ENABLE_TOTAL_SIZE 6 +#define CP_REG_ENABLE(fiford, fifobrk, ovflint, unflint, wrptrinc, fifobrkint) \ + ((((unsigned long)(fiford)) << CP_REG_ENABLE_FIFORD_SHIFT) | \ + (((unsigned long)(fifobrk)) << CP_REG_ENABLE_FIFOBRK_SHIFT) | \ + (((unsigned long)(ovflint)) << CP_REG_ENABLE_OVFLINT_SHIFT) | \ + (((unsigned long)(unflint)) << CP_REG_ENABLE_UNFLINT_SHIFT) | \ + (((unsigned long)(wrptrinc)) << CP_REG_ENABLE_WRPTRINC_SHIFT) | \ + (((unsigned long)(fifobrkint)) << CP_REG_ENABLE_FIFOBRKINT_SHIFT)) + +/* +* cp_reg_clr struct +*/ +#define CP_REG_CLR_OVFLINT_SIZE 1 +#define CP_REG_CLR_OVFLINT_SHIFT 0 +#define CP_REG_CLR_OVFLINT_MASK 0x00000001 +#define CP_REG_CLR_GET_OVFLINT(cp_reg_clr) \ + ((((unsigned long)(cp_reg_clr)) & CP_REG_CLR_OVFLINT_MASK) >> CP_REG_CLR_OVFLINT_SHIFT) +#define CP_REG_CLR_SET_OVFLINT(cp_reg_clr, ovflint) { \ + FDL_ASSERT(!((ovflint) & ~((1 << CP_REG_CLR_OVFLINT_SIZE)-1))); \ + cp_reg_clr = (((unsigned long)(cp_reg_clr)) & ~CP_REG_CLR_OVFLINT_MASK) | (((unsigned long)(ovflint)) << CP_REG_CLR_OVFLINT_SHIFT);\ +} +#define CP_REG_CLR_UNFLINT_SIZE 1 +#define CP_REG_CLR_UNFLINT_SHIFT 1 +#define CP_REG_CLR_UNFLINT_MASK 0x00000002 +#define CP_REG_CLR_GET_UNFLINT(cp_reg_clr) \ + ((((unsigned long)(cp_reg_clr)) & CP_REG_CLR_UNFLINT_MASK) >> CP_REG_CLR_UNFLINT_SHIFT) +#define CP_REG_CLR_SET_UNFLINT(cp_reg_clr, unflint) { \ + FDL_ASSERT(!((unflint) & ~((1 << CP_REG_CLR_UNFLINT_SIZE)-1))); \ + cp_reg_clr = (((unsigned long)(cp_reg_clr)) & ~CP_REG_CLR_UNFLINT_MASK) | (((unsigned long)(unflint)) << CP_REG_CLR_UNFLINT_SHIFT);\ +} +#define CP_REG_CLR_PERFCNT_SIZE 1 +#define CP_REG_CLR_PERFCNT_SHIFT 2 +#define CP_REG_CLR_PERFCNT_MASK 0x00000004 +#define CP_REG_CLR_GET_PERFCNT(cp_reg_clr) \ + ((((unsigned long)(cp_reg_clr)) & CP_REG_CLR_PERFCNT_MASK) >> CP_REG_CLR_PERFCNT_SHIFT) +#define CP_REG_CLR_SET_PERFCNT(cp_reg_clr, perfcnt) { \ + FDL_ASSERT(!((perfcnt) & ~((1 << CP_REG_CLR_PERFCNT_SIZE)-1))); \ + cp_reg_clr = (((unsigned long)(cp_reg_clr)) & ~CP_REG_CLR_PERFCNT_MASK) | (((unsigned long)(perfcnt)) << CP_REG_CLR_PERFCNT_SHIFT);\ +} +#define CP_REG_CLR_TOTAL_SIZE 3 +#define CP_REG_CLR(ovflint, unflint, perfcnt) \ + ((((unsigned long)(ovflint)) << CP_REG_CLR_OVFLINT_SHIFT) | \ + (((unsigned long)(unflint)) << CP_REG_CLR_UNFLINT_SHIFT) | \ + (((unsigned long)(perfcnt)) << CP_REG_CLR_PERFCNT_SHIFT)) + +/* +* cp_reg_memperfsel struct +*/ +#define CP_REG_MEMPERFSEL_PERFSEL_SIZE 3 +#define CP_REG_MEMPERFSEL_PERFSEL_SHIFT 0 +#define CP_REG_MEMPERFSEL_PERFSEL_MASK 0x00000007 +#define CP_REG_MEMPERFSEL_GET_PERFSEL(cp_reg_memperfsel) \ + ((((unsigned long)(cp_reg_memperfsel)) & CP_REG_MEMPERFSEL_PERFSEL_MASK) >> CP_REG_MEMPERFSEL_PERFSEL_SHIFT) +#define CP_REG_MEMPERFSEL_SET_PERFSEL(cp_reg_memperfsel, perfsel) { \ + FDL_ASSERT(!((perfsel) & ~((1 << CP_REG_MEMPERFSEL_PERFSEL_SIZE)-1))); \ + cp_reg_memperfsel = (((unsigned long)(cp_reg_memperfsel)) & ~CP_REG_MEMPERFSEL_PERFSEL_MASK) | (((unsigned long)(perfsel)) << CP_REG_MEMPERFSEL_PERFSEL_SHIFT);\ +} +#define CP_REG_MEMPERFSEL_TOTAL_SIZE 3 +#define CP_REG_MEMPERFSEL(perfsel) \ + ((((unsigned long)(perfsel)) << CP_REG_MEMPERFSEL_PERFSEL_SHIFT)) + +/* +* cp_reg_fifo_basel struct +*/ +#define CP_REG_FIFO_BASEL_PAD0_SIZE 5 +#define CP_REG_FIFO_BASEL_PAD0_SHIFT 0 +#define CP_REG_FIFO_BASEL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_BASEL_GET_PAD0(cp_reg_fifo_basel) \ + ((((unsigned long)(cp_reg_fifo_basel)) & CP_REG_FIFO_BASEL_PAD0_MASK) >> CP_REG_FIFO_BASEL_PAD0_SHIFT) +#define CP_REG_FIFO_BASEL_SET_PAD0(cp_reg_fifo_basel, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_BASEL_PAD0_SIZE)-1))); \ + cp_reg_fifo_basel = (((unsigned long)(cp_reg_fifo_basel)) & ~CP_REG_FIFO_BASEL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_BASEL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_BASEL_ADDR_SIZE 11 +#define CP_REG_FIFO_BASEL_ADDR_SHIFT 5 +#define CP_REG_FIFO_BASEL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_BASEL_GET_ADDR(cp_reg_fifo_basel) \ + ((((unsigned long)(cp_reg_fifo_basel)) & CP_REG_FIFO_BASEL_ADDR_MASK) >> CP_REG_FIFO_BASEL_ADDR_SHIFT) +#define CP_REG_FIFO_BASEL_SET_ADDR(cp_reg_fifo_basel, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_BASEL_ADDR_SIZE)-1))); \ + cp_reg_fifo_basel = (((unsigned long)(cp_reg_fifo_basel)) & ~CP_REG_FIFO_BASEL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_BASEL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_BASEL_TOTAL_SIZE 16 +#define CP_REG_FIFO_BASEL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_BASEL_ADDR_SHIFT)) + +/* +* cp_reg_fifo_baseh struct +*/ +#define CP_REG_FIFO_BASEH_ADDR_SIZE 13 +#define CP_REG_FIFO_BASEH_ADDR_SHIFT 0 +#define CP_REG_FIFO_BASEH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_BASEH_GET_ADDR(cp_reg_fifo_baseh) \ + ((((unsigned long)(cp_reg_fifo_baseh)) & CP_REG_FIFO_BASEH_ADDR_MASK) >> CP_REG_FIFO_BASEH_ADDR_SHIFT) +#define CP_REG_FIFO_BASEH_SET_ADDR(cp_reg_fifo_baseh, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_BASEH_ADDR_SIZE)-1))); \ + cp_reg_fifo_baseh = (((unsigned long)(cp_reg_fifo_baseh)) & ~CP_REG_FIFO_BASEH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_BASEH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_BASEH_TOTAL_SIZE 13 +#define CP_REG_FIFO_BASEH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_BASEH_ADDR_SHIFT)) + +/* +* cp_reg_fifo_topl struct +*/ +#define CP_REG_FIFO_TOPL_PAD0_SIZE 5 +#define CP_REG_FIFO_TOPL_PAD0_SHIFT 0 +#define CP_REG_FIFO_TOPL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_TOPL_GET_PAD0(cp_reg_fifo_topl) \ + ((((unsigned long)(cp_reg_fifo_topl)) & CP_REG_FIFO_TOPL_PAD0_MASK) >> CP_REG_FIFO_TOPL_PAD0_SHIFT) +#define CP_REG_FIFO_TOPL_SET_PAD0(cp_reg_fifo_topl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_TOPL_PAD0_SIZE)-1))); \ + cp_reg_fifo_topl = (((unsigned long)(cp_reg_fifo_topl)) & ~CP_REG_FIFO_TOPL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_TOPL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_TOPL_ADDR_SIZE 11 +#define CP_REG_FIFO_TOPL_ADDR_SHIFT 5 +#define CP_REG_FIFO_TOPL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_TOPL_GET_ADDR(cp_reg_fifo_topl) \ + ((((unsigned long)(cp_reg_fifo_topl)) & CP_REG_FIFO_TOPL_ADDR_MASK) >> CP_REG_FIFO_TOPL_ADDR_SHIFT) +#define CP_REG_FIFO_TOPL_SET_ADDR(cp_reg_fifo_topl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_TOPL_ADDR_SIZE)-1))); \ + cp_reg_fifo_topl = (((unsigned long)(cp_reg_fifo_topl)) & ~CP_REG_FIFO_TOPL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_TOPL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_TOPL_TOTAL_SIZE 16 +#define CP_REG_FIFO_TOPL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_TOPL_ADDR_SHIFT)) + +/* +* cp_reg_fifo_toph struct +*/ +#define CP_REG_FIFO_TOPH_ADDR_SIZE 13 +#define CP_REG_FIFO_TOPH_ADDR_SHIFT 0 +#define CP_REG_FIFO_TOPH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_TOPH_GET_ADDR(cp_reg_fifo_toph) \ + ((((unsigned long)(cp_reg_fifo_toph)) & CP_REG_FIFO_TOPH_ADDR_MASK) >> CP_REG_FIFO_TOPH_ADDR_SHIFT) +#define CP_REG_FIFO_TOPH_SET_ADDR(cp_reg_fifo_toph, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_TOPH_ADDR_SIZE)-1))); \ + cp_reg_fifo_toph = (((unsigned long)(cp_reg_fifo_toph)) & ~CP_REG_FIFO_TOPH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_TOPH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_TOPH_TOTAL_SIZE 13 +#define CP_REG_FIFO_TOPH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_TOPH_ADDR_SHIFT)) + +/* +* cp_reg_fifo_hicntl struct +*/ +#define CP_REG_FIFO_HICNTL_PAD0_SIZE 5 +#define CP_REG_FIFO_HICNTL_PAD0_SHIFT 0 +#define CP_REG_FIFO_HICNTL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_HICNTL_GET_PAD0(cp_reg_fifo_hicntl) \ + ((((unsigned long)(cp_reg_fifo_hicntl)) & CP_REG_FIFO_HICNTL_PAD0_MASK) >> CP_REG_FIFO_HICNTL_PAD0_SHIFT) +#define CP_REG_FIFO_HICNTL_SET_PAD0(cp_reg_fifo_hicntl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_HICNTL_PAD0_SIZE)-1))); \ + cp_reg_fifo_hicntl = (((unsigned long)(cp_reg_fifo_hicntl)) & ~CP_REG_FIFO_HICNTL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_HICNTL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_HICNTL_ADDR_SIZE 11 +#define CP_REG_FIFO_HICNTL_ADDR_SHIFT 5 +#define CP_REG_FIFO_HICNTL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_HICNTL_GET_ADDR(cp_reg_fifo_hicntl) \ + ((((unsigned long)(cp_reg_fifo_hicntl)) & CP_REG_FIFO_HICNTL_ADDR_MASK) >> CP_REG_FIFO_HICNTL_ADDR_SHIFT) +#define CP_REG_FIFO_HICNTL_SET_ADDR(cp_reg_fifo_hicntl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_HICNTL_ADDR_SIZE)-1))); \ + cp_reg_fifo_hicntl = (((unsigned long)(cp_reg_fifo_hicntl)) & ~CP_REG_FIFO_HICNTL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_HICNTL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_HICNTL_TOTAL_SIZE 16 +#define CP_REG_FIFO_HICNTL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_HICNTL_ADDR_SHIFT)) + +/* +* cp_reg_fifo_hicnth struct +*/ +#define CP_REG_FIFO_HICNTH_ADDR_SIZE 13 +#define CP_REG_FIFO_HICNTH_ADDR_SHIFT 0 +#define CP_REG_FIFO_HICNTH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_HICNTH_GET_ADDR(cp_reg_fifo_hicnth) \ + ((((unsigned long)(cp_reg_fifo_hicnth)) & CP_REG_FIFO_HICNTH_ADDR_MASK) >> CP_REG_FIFO_HICNTH_ADDR_SHIFT) +#define CP_REG_FIFO_HICNTH_SET_ADDR(cp_reg_fifo_hicnth, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_HICNTH_ADDR_SIZE)-1))); \ + cp_reg_fifo_hicnth = (((unsigned long)(cp_reg_fifo_hicnth)) & ~CP_REG_FIFO_HICNTH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_HICNTH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_HICNTH_TOTAL_SIZE 13 +#define CP_REG_FIFO_HICNTH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_HICNTH_ADDR_SHIFT)) + +#define CP_REG_FIFO_LOCNTL_PAD0_SIZE 5 +#define CP_REG_FIFO_LOCNTL_PAD0_SHIFT 0 +#define CP_REG_FIFO_LOCNTL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_LOCNTL_GET_PAD0(cp_reg_fifo_locntl) \ + ((((unsigned long)(cp_reg_fifo_locntl)) & CP_REG_FIFO_LOCNTL_PAD0_MASK) >> CP_REG_FIFO_LOCNTL_PAD0_SHIFT) +#define CP_REG_FIFO_LOCNTL_SET_PAD0(cp_reg_fifo_locntl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_LOCNTL_PAD0_SIZE)-1))); \ + cp_reg_fifo_locntl = (((unsigned long)(cp_reg_fifo_locntl)) & ~CP_REG_FIFO_LOCNTL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_LOCNTL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_LOCNTL_ADDR_SIZE 11 +#define CP_REG_FIFO_LOCNTL_ADDR_SHIFT 5 +#define CP_REG_FIFO_LOCNTL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_LOCNTL_GET_ADDR(cp_reg_fifo_locntl) \ + ((((unsigned long)(cp_reg_fifo_locntl)) & CP_REG_FIFO_LOCNTL_ADDR_MASK) >> CP_REG_FIFO_LOCNTL_ADDR_SHIFT) +#define CP_REG_FIFO_LOCNTL_SET_ADDR(cp_reg_fifo_locntl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_LOCNTL_ADDR_SIZE)-1))); \ + cp_reg_fifo_locntl = (((unsigned long)(cp_reg_fifo_locntl)) & ~CP_REG_FIFO_LOCNTL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_LOCNTL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_LOCNTL_TOTAL_SIZE 16 +#define CP_REG_FIFO_LOCNTL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_LOCNTL_ADDR_SHIFT)) + +#define CP_REG_FIFO_LOCNTH_ADDR_SIZE 13 +#define CP_REG_FIFO_LOCNTH_ADDR_SHIFT 0 +#define CP_REG_FIFO_LOCNTH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_LOCNTH_GET_ADDR(cp_reg_fifo_locnth) \ + ((((unsigned long)(cp_reg_fifo_locnth)) & CP_REG_FIFO_LOCNTH_ADDR_MASK) >> CP_REG_FIFO_LOCNTH_ADDR_SHIFT) +#define CP_REG_FIFO_LOCNTH_SET_ADDR(cp_reg_fifo_locnth, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_LOCNTH_ADDR_SIZE)-1))); \ + cp_reg_fifo_locnth = (((unsigned long)(cp_reg_fifo_locnth)) & ~CP_REG_FIFO_LOCNTH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_LOCNTH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_LOCNTH_TOTAL_SIZE 13 +#define CP_REG_FIFO_LOCNTH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_LOCNTH_ADDR_SHIFT)) + +#define CP_REG_FIFO_COUNTL_PAD0_SIZE 5 +#define CP_REG_FIFO_COUNTL_PAD0_SHIFT 0 +#define CP_REG_FIFO_COUNTL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_COUNTL_GET_PAD0(cp_reg_fifo_countl) \ + ((((unsigned long)(cp_reg_fifo_countl)) & CP_REG_FIFO_COUNTL_PAD0_MASK) >> CP_REG_FIFO_COUNTL_PAD0_SHIFT) +#define CP_REG_FIFO_COUNTL_SET_PAD0(cp_reg_fifo_countl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_COUNTL_PAD0_SIZE)-1))); \ + cp_reg_fifo_countl = (((unsigned long)(cp_reg_fifo_countl)) & ~CP_REG_FIFO_COUNTL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_COUNTL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_COUNTL_ADDR_SIZE 11 +#define CP_REG_FIFO_COUNTL_ADDR_SHIFT 5 +#define CP_REG_FIFO_COUNTL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_COUNTL_GET_ADDR(cp_reg_fifo_countl) \ + ((((unsigned long)(cp_reg_fifo_countl)) & CP_REG_FIFO_COUNTL_ADDR_MASK) >> CP_REG_FIFO_COUNTL_ADDR_SHIFT) +#define CP_REG_FIFO_COUNTL_SET_ADDR(cp_reg_fifo_countl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_COUNTL_ADDR_SIZE)-1))); \ + cp_reg_fifo_countl = (((unsigned long)(cp_reg_fifo_countl)) & ~CP_REG_FIFO_COUNTL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_COUNTL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_COUNTL_TOTAL_SIZE 16 +#define CP_REG_FIFO_COUNTL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_COUNTL_ADDR_SHIFT)) + +#define CP_REG_FIFO_COUNTH_ADDR_SIZE 13 +#define CP_REG_FIFO_COUNTH_ADDR_SHIFT 0 +#define CP_REG_FIFO_COUNTH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_COUNTH_GET_ADDR(cp_reg_fifo_counth) \ + ((((unsigned long)(cp_reg_fifo_counth)) & CP_REG_FIFO_COUNTH_ADDR_MASK) >> CP_REG_FIFO_COUNTH_ADDR_SHIFT) +#define CP_REG_FIFO_COUNTH_SET_ADDR(cp_reg_fifo_counth, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_COUNTH_ADDR_SIZE)-1))); \ + cp_reg_fifo_counth = (((unsigned long)(cp_reg_fifo_counth)) & ~CP_REG_FIFO_COUNTH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_COUNTH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_COUNTH_TOTAL_SIZE 13 +#define CP_REG_FIFO_COUNTH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_COUNTH_ADDR_SHIFT)) + +#define CP_REG_FIFO_WPTRL_PAD0_SIZE 5 +#define CP_REG_FIFO_WPTRL_PAD0_SHIFT 0 +#define CP_REG_FIFO_WPTRL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_WPTRL_GET_PAD0(cp_reg_fifo_wptrl) \ + ((((unsigned long)(cp_reg_fifo_wptrl)) & CP_REG_FIFO_WPTRL_PAD0_MASK) >> CP_REG_FIFO_WPTRL_PAD0_SHIFT) +#define CP_REG_FIFO_WPTRL_SET_PAD0(cp_reg_fifo_wptrl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_WPTRL_PAD0_SIZE)-1))); \ + cp_reg_fifo_wptrl = (((unsigned long)(cp_reg_fifo_wptrl)) & ~CP_REG_FIFO_WPTRL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_WPTRL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_WPTRL_ADDR_SIZE 11 +#define CP_REG_FIFO_WPTRL_ADDR_SHIFT 5 +#define CP_REG_FIFO_WPTRL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_WPTRL_GET_ADDR(cp_reg_fifo_wptrl) \ + ((((unsigned long)(cp_reg_fifo_wptrl)) & CP_REG_FIFO_WPTRL_ADDR_MASK) >> CP_REG_FIFO_WPTRL_ADDR_SHIFT) +#define CP_REG_FIFO_WPTRL_SET_ADDR(cp_reg_fifo_wptrl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_WPTRL_ADDR_SIZE)-1))); \ + cp_reg_fifo_wptrl = (((unsigned long)(cp_reg_fifo_wptrl)) & ~CP_REG_FIFO_WPTRL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_WPTRL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_WPTRL_TOTAL_SIZE 16 +#define CP_REG_FIFO_WPTRL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_WPTRL_ADDR_SHIFT)) + +#define CP_REG_FIFO_WPTRH_ADDR_SIZE 13 +#define CP_REG_FIFO_WPTRH_ADDR_SHIFT 0 +#define CP_REG_FIFO_WPTRH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_WPTRH_GET_ADDR(cp_reg_fifo_wptrh) \ + ((((unsigned long)(cp_reg_fifo_wptrh)) & CP_REG_FIFO_WPTRH_ADDR_MASK) >> CP_REG_FIFO_WPTRH_ADDR_SHIFT) +#define CP_REG_FIFO_WPTRH_SET_ADDR(cp_reg_fifo_wptrh, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_WPTRH_ADDR_SIZE)-1))); \ + cp_reg_fifo_wptrh = (((unsigned long)(cp_reg_fifo_wptrh)) & ~CP_REG_FIFO_WPTRH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_WPTRH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_WPTRH_TOTAL_SIZE 13 +#define CP_REG_FIFO_WPTRH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_WPTRH_ADDR_SHIFT)) + +#define CP_REG_FIFO_RPTRL_PAD0_SIZE 5 +#define CP_REG_FIFO_RPTRL_PAD0_SHIFT 0 +#define CP_REG_FIFO_RPTRL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_RPTRL_GET_PAD0(cp_reg_fifo_rptrl) \ + ((((unsigned long)(cp_reg_fifo_rptrl)) & CP_REG_FIFO_RPTRL_PAD0_MASK) >> CP_REG_FIFO_RPTRL_PAD0_SHIFT) +#define CP_REG_FIFO_RPTRL_SET_PAD0(cp_reg_fifo_rptrl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_RPTRL_PAD0_SIZE)-1))); \ + cp_reg_fifo_rptrl = (((unsigned long)(cp_reg_fifo_rptrl)) & ~CP_REG_FIFO_RPTRL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_RPTRL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_RPTRL_ADDR_SIZE 11 +#define CP_REG_FIFO_RPTRL_ADDR_SHIFT 5 +#define CP_REG_FIFO_RPTRL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_RPTRL_GET_ADDR(cp_reg_fifo_rptrl) \ + ((((unsigned long)(cp_reg_fifo_rptrl)) & CP_REG_FIFO_RPTRL_ADDR_MASK) >> CP_REG_FIFO_RPTRL_ADDR_SHIFT) +#define CP_REG_FIFO_RPTRL_SET_ADDR(cp_reg_fifo_rptrl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_RPTRL_ADDR_SIZE)-1))); \ + cp_reg_fifo_rptrl = (((unsigned long)(cp_reg_fifo_rptrl)) & ~CP_REG_FIFO_RPTRL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_RPTRL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_RPTRL_TOTAL_SIZE 16 +#define CP_REG_FIFO_RPTRL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_RPTRL_ADDR_SHIFT)) + +#define CP_REG_FIFO_RPTRH_ADDR_SIZE 13 +#define CP_REG_FIFO_RPTRH_ADDR_SHIFT 0 +#define CP_REG_FIFO_RPTRH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_RPTRH_GET_ADDR(cp_reg_fifo_rptrh) \ + ((((unsigned long)(cp_reg_fifo_rptrh)) & CP_REG_FIFO_RPTRH_ADDR_MASK) >> CP_REG_FIFO_RPTRH_ADDR_SHIFT) +#define CP_REG_FIFO_RPTRH_SET_ADDR(cp_reg_fifo_rptrh, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_RPTRH_ADDR_SIZE)-1))); \ + cp_reg_fifo_rptrh = (((unsigned long)(cp_reg_fifo_rptrh)) & ~CP_REG_FIFO_RPTRH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_RPTRH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_RPTRH_TOTAL_SIZE 13 +#define CP_REG_FIFO_RPTRH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_RPTRH_ADDR_SHIFT)) + +#define CP_REG_FIFO_BRKL_PAD0_SIZE 5 +#define CP_REG_FIFO_BRKL_PAD0_SHIFT 0 +#define CP_REG_FIFO_BRKL_PAD0_MASK 0x0000001f +#define CP_REG_FIFO_BRKL_GET_PAD0(cp_reg_fifo_brkl) \ + ((((unsigned long)(cp_reg_fifo_brkl)) & CP_REG_FIFO_BRKL_PAD0_MASK) >> CP_REG_FIFO_BRKL_PAD0_SHIFT) +#define CP_REG_FIFO_BRKL_SET_PAD0(cp_reg_fifo_brkl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_REG_FIFO_BRKL_PAD0_SIZE)-1))); \ + cp_reg_fifo_brkl = (((unsigned long)(cp_reg_fifo_brkl)) & ~CP_REG_FIFO_BRKL_PAD0_MASK) | (((unsigned long)(pad0)) << CP_REG_FIFO_BRKL_PAD0_SHIFT);\ +} +#define CP_REG_FIFO_BRKL_ADDR_SIZE 11 +#define CP_REG_FIFO_BRKL_ADDR_SHIFT 5 +#define CP_REG_FIFO_BRKL_ADDR_MASK 0x0000ffe0 +#define CP_REG_FIFO_BRKL_GET_ADDR(cp_reg_fifo_brkl) \ + ((((unsigned long)(cp_reg_fifo_brkl)) & CP_REG_FIFO_BRKL_ADDR_MASK) >> CP_REG_FIFO_BRKL_ADDR_SHIFT) +#define CP_REG_FIFO_BRKL_SET_ADDR(cp_reg_fifo_brkl, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_BRKL_ADDR_SIZE)-1))); \ + cp_reg_fifo_brkl = (((unsigned long)(cp_reg_fifo_brkl)) & ~CP_REG_FIFO_BRKL_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_BRKL_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_BRKL_TOTAL_SIZE 16 +#define CP_REG_FIFO_BRKL(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_BRKL_ADDR_SHIFT)) + +/* +* cp_reg_fifo_brkh struct +*/ +#define CP_REG_FIFO_BRKH_ADDR_SIZE 13 +#define CP_REG_FIFO_BRKH_ADDR_SHIFT 0 +#define CP_REG_FIFO_BRKH_ADDR_MASK 0x00001fff +#define CP_REG_FIFO_BRKH_GET_ADDR(cp_reg_fifo_brkh) \ + ((((unsigned long)(cp_reg_fifo_brkh)) & CP_REG_FIFO_BRKH_ADDR_MASK) >> CP_REG_FIFO_BRKH_ADDR_SHIFT) +#define CP_REG_FIFO_BRKH_SET_ADDR(cp_reg_fifo_brkh, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_REG_FIFO_BRKH_ADDR_SIZE)-1))); \ + cp_reg_fifo_brkh = (((unsigned long)(cp_reg_fifo_brkh)) & ~CP_REG_FIFO_BRKH_ADDR_MASK) | (((unsigned long)(addr)) << CP_REG_FIFO_BRKH_ADDR_SHIFT);\ +} +#define CP_REG_FIFO_BRKH_TOTAL_SIZE 13 +#define CP_REG_FIFO_BRKH(addr) \ + ((((unsigned long)(addr)) << CP_REG_FIFO_BRKH_ADDR_SHIFT)) + +/* +* memperf_sel enum +*/ +#define MEMPERF_ZERO 0x00000000 +#define MEMPERF_ONE 0x00000001 +#define DFIFO_REQ_CNT 0x00000002 +#define OBJCALL_REQ_CNT 0x00000003 +#define VCMISS_REQ_CNT 0x00000004 +#define ALL_MEMREQ_CNT 0x00000005 +#define MEMPERF_SEL_UNUSED_6 0x00000006 +#define MEMPERF_SEL_UNUSED_7 0x00000007 + +/* +* vtx_attr_name value +*/ +#define VTX_ATTR_POSMATIDX 0x00 +#define VTX_ATTR_TEX0MATIDX 0x01 +#define VTX_ATTR_TEX1MATIDX 0x02 +#define VTX_ATTR_TEX2MATIDX 0x03 +#define VTX_ATTR_TEX3MATIDX 0x04 +#define VTX_ATTR_TEX4MATIDX 0x05 +#define VTX_ATTR_TEX5MATIDX 0x06 +#define VTX_ATTR_TEX6MATIDX 0x07 +#define VTX_ATTR_TEX7MATIDX 0x08 +#define VTX_ATTR_POS 0x09 +#define VTX_ATTR_NRM 0x0a +#define VTX_ATTR_COL0 0x0b +#define VTX_ATTR_COL1 0x0c +#define VTX_ATTR_TEX0 0x0d +#define VTX_ATTR_TEX1 0x0e +#define VTX_ATTR_TEX2 0x0f +#define VTX_ATTR_TEX3 0x10 +#define VTX_ATTR_TEX4 0x11 +#define VTX_ATTR_TEX5 0x12 +#define VTX_ATTR_TEX6 0x13 +#define VTX_ATTR_TEX7 0x14 +#define VTX_ATTR_POSARRAY 0x15 +#define VTX_ATTR_NRMARRAY 0x16 +#define VTX_ATTR_TEXARRAY 0x17 +#define VTX_ATTR_LIGHTARRAY 0x18 +#define VTX_NUM_ATTR 0x19 + +/* +* vtx_attr_type value +*/ +#define ATTR_NONE 0x0 +#define ATTR_DIRECT 0x1 +#define ATTR_INDEX8 0x2 +#define ATTR_INDEX16 0x3 + +/* +* attr_comp_fmt value +*/ +#define ATTR_COMP_UBYTE 0x0 +#define ATTR_COMP_BYTE 0x1 +#define ATTR_COMP_USHORT 0x2 +#define ATTR_COMP_SHORT 0x3 +#define ATTR_COMP_FLOAT 0x4 + +/* +* attr_clr_fmt value +*/ +#define ATTR_CLR_565 0x0 +#define ATTR_CLR_888 0x1 +#define ATTR_CLR_888X 0x2 +#define ATTR_CLR_4444 0x3 +#define ATTR_CLR_6666 0x4 +#define ATTR_CLR_8888 0x5 + +/* +* cp_vcd_reg_lo struct +*/ +#define CP_VCD_REG_LO_PMIDX_SIZE 1 +#define CP_VCD_REG_LO_PMIDX_SHIFT 0 +#define CP_VCD_REG_LO_PMIDX_MASK 0x00000001 +#define CP_VCD_REG_LO_GET_PMIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_PMIDX_MASK) >> CP_VCD_REG_LO_PMIDX_SHIFT) +#define CP_VCD_REG_LO_SET_PMIDX(cp_vcd_reg_lo, pmidx) { \ + FDL_ASSERT(!((pmidx) & ~((1 << CP_VCD_REG_LO_PMIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_PMIDX_MASK) | (((unsigned long)(pmidx)) << CP_VCD_REG_LO_PMIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T0MIDX_SIZE 1 +#define CP_VCD_REG_LO_T0MIDX_SHIFT 1 +#define CP_VCD_REG_LO_T0MIDX_MASK 0x00000002 +#define CP_VCD_REG_LO_GET_T0MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T0MIDX_MASK) >> CP_VCD_REG_LO_T0MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T0MIDX(cp_vcd_reg_lo, t0midx) { \ + FDL_ASSERT(!((t0midx) & ~((1 << CP_VCD_REG_LO_T0MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T0MIDX_MASK) | (((unsigned long)(t0midx)) << CP_VCD_REG_LO_T0MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T1MIDX_SIZE 1 +#define CP_VCD_REG_LO_T1MIDX_SHIFT 2 +#define CP_VCD_REG_LO_T1MIDX_MASK 0x00000004 +#define CP_VCD_REG_LO_GET_T1MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T1MIDX_MASK) >> CP_VCD_REG_LO_T1MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T1MIDX(cp_vcd_reg_lo, t1midx) { \ + FDL_ASSERT(!((t1midx) & ~((1 << CP_VCD_REG_LO_T1MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T1MIDX_MASK) | (((unsigned long)(t1midx)) << CP_VCD_REG_LO_T1MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T2MIDX_SIZE 1 +#define CP_VCD_REG_LO_T2MIDX_SHIFT 3 +#define CP_VCD_REG_LO_T2MIDX_MASK 0x00000008 +#define CP_VCD_REG_LO_GET_T2MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T2MIDX_MASK) >> CP_VCD_REG_LO_T2MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T2MIDX(cp_vcd_reg_lo, t2midx) { \ + FDL_ASSERT(!((t2midx) & ~((1 << CP_VCD_REG_LO_T2MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T2MIDX_MASK) | (((unsigned long)(t2midx)) << CP_VCD_REG_LO_T2MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T3MIDX_SIZE 1 +#define CP_VCD_REG_LO_T3MIDX_SHIFT 4 +#define CP_VCD_REG_LO_T3MIDX_MASK 0x00000010 +#define CP_VCD_REG_LO_GET_T3MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T3MIDX_MASK) >> CP_VCD_REG_LO_T3MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T3MIDX(cp_vcd_reg_lo, t3midx) { \ + FDL_ASSERT(!((t3midx) & ~((1 << CP_VCD_REG_LO_T3MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T3MIDX_MASK) | (((unsigned long)(t3midx)) << CP_VCD_REG_LO_T3MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T4MIDX_SIZE 1 +#define CP_VCD_REG_LO_T4MIDX_SHIFT 5 +#define CP_VCD_REG_LO_T4MIDX_MASK 0x00000020 +#define CP_VCD_REG_LO_GET_T4MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T4MIDX_MASK) >> CP_VCD_REG_LO_T4MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T4MIDX(cp_vcd_reg_lo, t4midx) { \ + FDL_ASSERT(!((t4midx) & ~((1 << CP_VCD_REG_LO_T4MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T4MIDX_MASK) | (((unsigned long)(t4midx)) << CP_VCD_REG_LO_T4MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T5MIDX_SIZE 1 +#define CP_VCD_REG_LO_T5MIDX_SHIFT 6 +#define CP_VCD_REG_LO_T5MIDX_MASK 0x00000040 +#define CP_VCD_REG_LO_GET_T5MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T5MIDX_MASK) >> CP_VCD_REG_LO_T5MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T5MIDX(cp_vcd_reg_lo, t5midx) { \ + FDL_ASSERT(!((t5midx) & ~((1 << CP_VCD_REG_LO_T5MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T5MIDX_MASK) | (((unsigned long)(t5midx)) << CP_VCD_REG_LO_T5MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T6MIDX_SIZE 1 +#define CP_VCD_REG_LO_T6MIDX_SHIFT 7 +#define CP_VCD_REG_LO_T6MIDX_MASK 0x00000080 +#define CP_VCD_REG_LO_GET_T6MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T6MIDX_MASK) >> CP_VCD_REG_LO_T6MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T6MIDX(cp_vcd_reg_lo, t6midx) { \ + FDL_ASSERT(!((t6midx) & ~((1 << CP_VCD_REG_LO_T6MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T6MIDX_MASK) | (((unsigned long)(t6midx)) << CP_VCD_REG_LO_T6MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_T7MIDX_SIZE 1 +#define CP_VCD_REG_LO_T7MIDX_SHIFT 8 +#define CP_VCD_REG_LO_T7MIDX_MASK 0x00000100 +#define CP_VCD_REG_LO_GET_T7MIDX(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_T7MIDX_MASK) >> CP_VCD_REG_LO_T7MIDX_SHIFT) +#define CP_VCD_REG_LO_SET_T7MIDX(cp_vcd_reg_lo, t7midx) { \ + FDL_ASSERT(!((t7midx) & ~((1 << CP_VCD_REG_LO_T7MIDX_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_T7MIDX_MASK) | (((unsigned long)(t7midx)) << CP_VCD_REG_LO_T7MIDX_SHIFT);\ +} +#define CP_VCD_REG_LO_POS_SIZE 2 +#define CP_VCD_REG_LO_POS_SHIFT 9 +#define CP_VCD_REG_LO_POS_MASK 0x00000600 +#define CP_VCD_REG_LO_GET_POS(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_POS_MASK) >> CP_VCD_REG_LO_POS_SHIFT) +#define CP_VCD_REG_LO_SET_POS(cp_vcd_reg_lo, pos) { \ + FDL_ASSERT(!((pos) & ~((1 << CP_VCD_REG_LO_POS_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_POS_MASK) | (((unsigned long)(pos)) << CP_VCD_REG_LO_POS_SHIFT);\ +} +#define CP_VCD_REG_LO_NRM_SIZE 2 +#define CP_VCD_REG_LO_NRM_SHIFT 11 +#define CP_VCD_REG_LO_NRM_MASK 0x00001800 +#define CP_VCD_REG_LO_GET_NRM(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_NRM_MASK) >> CP_VCD_REG_LO_NRM_SHIFT) +#define CP_VCD_REG_LO_SET_NRM(cp_vcd_reg_lo, nrm) { \ + FDL_ASSERT(!((nrm) & ~((1 << CP_VCD_REG_LO_NRM_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_NRM_MASK) | (((unsigned long)(nrm)) << CP_VCD_REG_LO_NRM_SHIFT);\ +} +#define CP_VCD_REG_LO_COL0_SIZE 2 +#define CP_VCD_REG_LO_COL0_SHIFT 13 +#define CP_VCD_REG_LO_COL0_MASK 0x00006000 +#define CP_VCD_REG_LO_GET_COL0(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_COL0_MASK) >> CP_VCD_REG_LO_COL0_SHIFT) +#define CP_VCD_REG_LO_SET_COL0(cp_vcd_reg_lo, col0) { \ + FDL_ASSERT(!((col0) & ~((1 << CP_VCD_REG_LO_COL0_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_COL0_MASK) | (((unsigned long)(col0)) << CP_VCD_REG_LO_COL0_SHIFT);\ +} +#define CP_VCD_REG_LO_COL1_SIZE 2 +#define CP_VCD_REG_LO_COL1_SHIFT 15 +#define CP_VCD_REG_LO_COL1_MASK 0x00018000 +#define CP_VCD_REG_LO_GET_COL1(cp_vcd_reg_lo) \ + ((((unsigned long)(cp_vcd_reg_lo)) & CP_VCD_REG_LO_COL1_MASK) >> CP_VCD_REG_LO_COL1_SHIFT) +#define CP_VCD_REG_LO_SET_COL1(cp_vcd_reg_lo, col1) { \ + FDL_ASSERT(!((col1) & ~((1 << CP_VCD_REG_LO_COL1_SIZE)-1))); \ + cp_vcd_reg_lo = (((unsigned long)(cp_vcd_reg_lo)) & ~CP_VCD_REG_LO_COL1_MASK) | (((unsigned long)(col1)) << CP_VCD_REG_LO_COL1_SHIFT);\ +} +#define CP_VCD_REG_LO_TOTAL_SIZE 17 +#define CP_VCD_REG_LO(pmidx, t0midx, t1midx, t2midx, t3midx, t4midx, t5midx, t6midx, t7midx, pos, nrm, col0, col1) \ + ((((unsigned long)(pmidx)) << CP_VCD_REG_LO_PMIDX_SHIFT) | \ + (((unsigned long)(t0midx)) << CP_VCD_REG_LO_T0MIDX_SHIFT) | \ + (((unsigned long)(t1midx)) << CP_VCD_REG_LO_T1MIDX_SHIFT) | \ + (((unsigned long)(t2midx)) << CP_VCD_REG_LO_T2MIDX_SHIFT) | \ + (((unsigned long)(t3midx)) << CP_VCD_REG_LO_T3MIDX_SHIFT) | \ + (((unsigned long)(t4midx)) << CP_VCD_REG_LO_T4MIDX_SHIFT) | \ + (((unsigned long)(t5midx)) << CP_VCD_REG_LO_T5MIDX_SHIFT) | \ + (((unsigned long)(t6midx)) << CP_VCD_REG_LO_T6MIDX_SHIFT) | \ + (((unsigned long)(t7midx)) << CP_VCD_REG_LO_T7MIDX_SHIFT) | \ + (((unsigned long)(pos)) << CP_VCD_REG_LO_POS_SHIFT) | \ + (((unsigned long)(nrm)) << CP_VCD_REG_LO_NRM_SHIFT) | \ + (((unsigned long)(col0)) << CP_VCD_REG_LO_COL0_SHIFT) | \ + (((unsigned long)(col1)) << CP_VCD_REG_LO_COL1_SHIFT)) + +/* +* cp_vcd_reg_hi struct +*/ +#define CP_VCD_REG_HI_TEX0_SIZE 2 +#define CP_VCD_REG_HI_TEX0_SHIFT 0 +#define CP_VCD_REG_HI_TEX0_MASK 0x00000003 +#define CP_VCD_REG_HI_GET_TEX0(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX0_MASK) >> CP_VCD_REG_HI_TEX0_SHIFT) +#define CP_VCD_REG_HI_SET_TEX0(cp_vcd_reg_hi, tex0) { \ + FDL_ASSERT(!((tex0) & ~((1 << CP_VCD_REG_HI_TEX0_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX0_MASK) | (((unsigned long)(tex0)) << CP_VCD_REG_HI_TEX0_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX1_SIZE 2 +#define CP_VCD_REG_HI_TEX1_SHIFT 2 +#define CP_VCD_REG_HI_TEX1_MASK 0x0000000c +#define CP_VCD_REG_HI_GET_TEX1(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX1_MASK) >> CP_VCD_REG_HI_TEX1_SHIFT) +#define CP_VCD_REG_HI_SET_TEX1(cp_vcd_reg_hi, tex1) { \ + FDL_ASSERT(!((tex1) & ~((1 << CP_VCD_REG_HI_TEX1_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX1_MASK) | (((unsigned long)(tex1)) << CP_VCD_REG_HI_TEX1_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX2_SIZE 2 +#define CP_VCD_REG_HI_TEX2_SHIFT 4 +#define CP_VCD_REG_HI_TEX2_MASK 0x00000030 +#define CP_VCD_REG_HI_GET_TEX2(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX2_MASK) >> CP_VCD_REG_HI_TEX2_SHIFT) +#define CP_VCD_REG_HI_SET_TEX2(cp_vcd_reg_hi, tex2) { \ + FDL_ASSERT(!((tex2) & ~((1 << CP_VCD_REG_HI_TEX2_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX2_MASK) | (((unsigned long)(tex2)) << CP_VCD_REG_HI_TEX2_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX3_SIZE 2 +#define CP_VCD_REG_HI_TEX3_SHIFT 6 +#define CP_VCD_REG_HI_TEX3_MASK 0x000000c0 +#define CP_VCD_REG_HI_GET_TEX3(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX3_MASK) >> CP_VCD_REG_HI_TEX3_SHIFT) +#define CP_VCD_REG_HI_SET_TEX3(cp_vcd_reg_hi, tex3) { \ + FDL_ASSERT(!((tex3) & ~((1 << CP_VCD_REG_HI_TEX3_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX3_MASK) | (((unsigned long)(tex3)) << CP_VCD_REG_HI_TEX3_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX4_SIZE 2 +#define CP_VCD_REG_HI_TEX4_SHIFT 8 +#define CP_VCD_REG_HI_TEX4_MASK 0x00000300 +#define CP_VCD_REG_HI_GET_TEX4(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX4_MASK) >> CP_VCD_REG_HI_TEX4_SHIFT) +#define CP_VCD_REG_HI_SET_TEX4(cp_vcd_reg_hi, tex4) { \ + FDL_ASSERT(!((tex4) & ~((1 << CP_VCD_REG_HI_TEX4_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX4_MASK) | (((unsigned long)(tex4)) << CP_VCD_REG_HI_TEX4_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX5_SIZE 2 +#define CP_VCD_REG_HI_TEX5_SHIFT 10 +#define CP_VCD_REG_HI_TEX5_MASK 0x00000c00 +#define CP_VCD_REG_HI_GET_TEX5(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX5_MASK) >> CP_VCD_REG_HI_TEX5_SHIFT) +#define CP_VCD_REG_HI_SET_TEX5(cp_vcd_reg_hi, tex5) { \ + FDL_ASSERT(!((tex5) & ~((1 << CP_VCD_REG_HI_TEX5_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX5_MASK) | (((unsigned long)(tex5)) << CP_VCD_REG_HI_TEX5_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX6_SIZE 2 +#define CP_VCD_REG_HI_TEX6_SHIFT 12 +#define CP_VCD_REG_HI_TEX6_MASK 0x00003000 +#define CP_VCD_REG_HI_GET_TEX6(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX6_MASK) >> CP_VCD_REG_HI_TEX6_SHIFT) +#define CP_VCD_REG_HI_SET_TEX6(cp_vcd_reg_hi, tex6) { \ + FDL_ASSERT(!((tex6) & ~((1 << CP_VCD_REG_HI_TEX6_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX6_MASK) | (((unsigned long)(tex6)) << CP_VCD_REG_HI_TEX6_SHIFT);\ +} +#define CP_VCD_REG_HI_TEX7_SIZE 2 +#define CP_VCD_REG_HI_TEX7_SHIFT 14 +#define CP_VCD_REG_HI_TEX7_MASK 0x0000c000 +#define CP_VCD_REG_HI_GET_TEX7(cp_vcd_reg_hi) \ + ((((unsigned long)(cp_vcd_reg_hi)) & CP_VCD_REG_HI_TEX7_MASK) >> CP_VCD_REG_HI_TEX7_SHIFT) +#define CP_VCD_REG_HI_SET_TEX7(cp_vcd_reg_hi, tex7) { \ + FDL_ASSERT(!((tex7) & ~((1 << CP_VCD_REG_HI_TEX7_SIZE)-1))); \ + cp_vcd_reg_hi = (((unsigned long)(cp_vcd_reg_hi)) & ~CP_VCD_REG_HI_TEX7_MASK) | (((unsigned long)(tex7)) << CP_VCD_REG_HI_TEX7_SHIFT);\ +} +#define CP_VCD_REG_HI_TOTAL_SIZE 16 +#define CP_VCD_REG_HI(tex0, tex1, tex2, tex3, tex4, tex5, tex6, tex7) \ + ((((unsigned long)(tex0)) << CP_VCD_REG_HI_TEX0_SHIFT) | \ + (((unsigned long)(tex1)) << CP_VCD_REG_HI_TEX1_SHIFT) | \ + (((unsigned long)(tex2)) << CP_VCD_REG_HI_TEX2_SHIFT) | \ + (((unsigned long)(tex3)) << CP_VCD_REG_HI_TEX3_SHIFT) | \ + (((unsigned long)(tex4)) << CP_VCD_REG_HI_TEX4_SHIFT) | \ + (((unsigned long)(tex5)) << CP_VCD_REG_HI_TEX5_SHIFT) | \ + (((unsigned long)(tex6)) << CP_VCD_REG_HI_TEX6_SHIFT) | \ + (((unsigned long)(tex7)) << CP_VCD_REG_HI_TEX7_SHIFT)) + +/* +* cp_vat_table value +*/ +#define CP_NUM_VATS 0x08 + +/* +* cp_vat_reg_a struct +*/ +#define CP_VAT_REG_A_POSCNT_SIZE 1 +#define CP_VAT_REG_A_POSCNT_SHIFT 0 +#define CP_VAT_REG_A_POSCNT_MASK 0x00000001 +#define CP_VAT_REG_A_GET_POSCNT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_POSCNT_MASK) >> CP_VAT_REG_A_POSCNT_SHIFT) +#define CP_VAT_REG_A_SET_POSCNT(cp_vat_reg_a, posCnt) { \ + FDL_ASSERT(!((posCnt) & ~((1 << CP_VAT_REG_A_POSCNT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_POSCNT_MASK) | (((unsigned long)(posCnt)) << CP_VAT_REG_A_POSCNT_SHIFT);\ +} +#define CP_VAT_REG_A_POSFMT_SIZE 3 +#define CP_VAT_REG_A_POSFMT_SHIFT 1 +#define CP_VAT_REG_A_POSFMT_MASK 0x0000000e +#define CP_VAT_REG_A_GET_POSFMT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_POSFMT_MASK) >> CP_VAT_REG_A_POSFMT_SHIFT) +#define CP_VAT_REG_A_SET_POSFMT(cp_vat_reg_a, posFmt) { \ + FDL_ASSERT(!((posFmt) & ~((1 << CP_VAT_REG_A_POSFMT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_POSFMT_MASK) | (((unsigned long)(posFmt)) << CP_VAT_REG_A_POSFMT_SHIFT);\ +} +#define CP_VAT_REG_A_POSSHFT_SIZE 5 +#define CP_VAT_REG_A_POSSHFT_SHIFT 4 +#define CP_VAT_REG_A_POSSHFT_MASK 0x000001f0 +#define CP_VAT_REG_A_GET_POSSHFT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_POSSHFT_MASK) >> CP_VAT_REG_A_POSSHFT_SHIFT) +#define CP_VAT_REG_A_SET_POSSHFT(cp_vat_reg_a, posShft) { \ + FDL_ASSERT(!((posShft) & ~((1 << CP_VAT_REG_A_POSSHFT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_POSSHFT_MASK) | (((unsigned long)(posShft)) << CP_VAT_REG_A_POSSHFT_SHIFT);\ +} +#define CP_VAT_REG_A_NRMCNT_SIZE 1 +#define CP_VAT_REG_A_NRMCNT_SHIFT 9 +#define CP_VAT_REG_A_NRMCNT_MASK 0x00000200 +#define CP_VAT_REG_A_GET_NRMCNT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_NRMCNT_MASK) >> CP_VAT_REG_A_NRMCNT_SHIFT) +#define CP_VAT_REG_A_SET_NRMCNT(cp_vat_reg_a, nrmCnt) { \ + FDL_ASSERT(!((nrmCnt) & ~((1 << CP_VAT_REG_A_NRMCNT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_NRMCNT_MASK) | (((unsigned long)(nrmCnt)) << CP_VAT_REG_A_NRMCNT_SHIFT);\ +} +#define CP_VAT_REG_A_NRMFMT_SIZE 3 +#define CP_VAT_REG_A_NRMFMT_SHIFT 10 +#define CP_VAT_REG_A_NRMFMT_MASK 0x00001c00 +#define CP_VAT_REG_A_GET_NRMFMT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_NRMFMT_MASK) >> CP_VAT_REG_A_NRMFMT_SHIFT) +#define CP_VAT_REG_A_SET_NRMFMT(cp_vat_reg_a, nrmFmt) { \ + FDL_ASSERT(!((nrmFmt) & ~((1 << CP_VAT_REG_A_NRMFMT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_NRMFMT_MASK) | (((unsigned long)(nrmFmt)) << CP_VAT_REG_A_NRMFMT_SHIFT);\ +} +#define CP_VAT_REG_A_COL0CNT_SIZE 1 +#define CP_VAT_REG_A_COL0CNT_SHIFT 13 +#define CP_VAT_REG_A_COL0CNT_MASK 0x00002000 +#define CP_VAT_REG_A_GET_COL0CNT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_COL0CNT_MASK) >> CP_VAT_REG_A_COL0CNT_SHIFT) +#define CP_VAT_REG_A_SET_COL0CNT(cp_vat_reg_a, Col0Cnt) { \ + FDL_ASSERT(!((Col0Cnt) & ~((1 << CP_VAT_REG_A_COL0CNT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_COL0CNT_MASK) | (((unsigned long)(Col0Cnt)) << CP_VAT_REG_A_COL0CNT_SHIFT);\ +} +#define CP_VAT_REG_A_COL0FMT_SIZE 3 +#define CP_VAT_REG_A_COL0FMT_SHIFT 14 +#define CP_VAT_REG_A_COL0FMT_MASK 0x0001c000 +#define CP_VAT_REG_A_GET_COL0FMT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_COL0FMT_MASK) >> CP_VAT_REG_A_COL0FMT_SHIFT) +#define CP_VAT_REG_A_SET_COL0FMT(cp_vat_reg_a, Col0Fmt) { \ + FDL_ASSERT(!((Col0Fmt) & ~((1 << CP_VAT_REG_A_COL0FMT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_COL0FMT_MASK) | (((unsigned long)(Col0Fmt)) << CP_VAT_REG_A_COL0FMT_SHIFT);\ +} +#define CP_VAT_REG_A_COL1CNT_SIZE 1 +#define CP_VAT_REG_A_COL1CNT_SHIFT 17 +#define CP_VAT_REG_A_COL1CNT_MASK 0x00020000 +#define CP_VAT_REG_A_GET_COL1CNT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_COL1CNT_MASK) >> CP_VAT_REG_A_COL1CNT_SHIFT) +#define CP_VAT_REG_A_SET_COL1CNT(cp_vat_reg_a, Col1Cnt) { \ + FDL_ASSERT(!((Col1Cnt) & ~((1 << CP_VAT_REG_A_COL1CNT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_COL1CNT_MASK) | (((unsigned long)(Col1Cnt)) << CP_VAT_REG_A_COL1CNT_SHIFT);\ +} +#define CP_VAT_REG_A_COL1FMT_SIZE 3 +#define CP_VAT_REG_A_COL1FMT_SHIFT 18 +#define CP_VAT_REG_A_COL1FMT_MASK 0x001c0000 +#define CP_VAT_REG_A_GET_COL1FMT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_COL1FMT_MASK) >> CP_VAT_REG_A_COL1FMT_SHIFT) +#define CP_VAT_REG_A_SET_COL1FMT(cp_vat_reg_a, Col1Fmt) { \ + FDL_ASSERT(!((Col1Fmt) & ~((1 << CP_VAT_REG_A_COL1FMT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_COL1FMT_MASK) | (((unsigned long)(Col1Fmt)) << CP_VAT_REG_A_COL1FMT_SHIFT);\ +} +#define CP_VAT_REG_A_TEX0CNT_SIZE 1 +#define CP_VAT_REG_A_TEX0CNT_SHIFT 21 +#define CP_VAT_REG_A_TEX0CNT_MASK 0x00200000 +#define CP_VAT_REG_A_GET_TEX0CNT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_TEX0CNT_MASK) >> CP_VAT_REG_A_TEX0CNT_SHIFT) +#define CP_VAT_REG_A_SET_TEX0CNT(cp_vat_reg_a, tex0Cnt) { \ + FDL_ASSERT(!((tex0Cnt) & ~((1 << CP_VAT_REG_A_TEX0CNT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_TEX0CNT_MASK) | (((unsigned long)(tex0Cnt)) << CP_VAT_REG_A_TEX0CNT_SHIFT);\ +} +#define CP_VAT_REG_A_TEX0FMT_SIZE 3 +#define CP_VAT_REG_A_TEX0FMT_SHIFT 22 +#define CP_VAT_REG_A_TEX0FMT_MASK 0x01c00000 +#define CP_VAT_REG_A_GET_TEX0FMT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_TEX0FMT_MASK) >> CP_VAT_REG_A_TEX0FMT_SHIFT) +#define CP_VAT_REG_A_SET_TEX0FMT(cp_vat_reg_a, tex0Fmt) { \ + FDL_ASSERT(!((tex0Fmt) & ~((1 << CP_VAT_REG_A_TEX0FMT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_TEX0FMT_MASK) | (((unsigned long)(tex0Fmt)) << CP_VAT_REG_A_TEX0FMT_SHIFT);\ +} +#define CP_VAT_REG_A_TEX0SHFT_SIZE 5 +#define CP_VAT_REG_A_TEX0SHFT_SHIFT 25 +#define CP_VAT_REG_A_TEX0SHFT_MASK 0x3e000000 +#define CP_VAT_REG_A_GET_TEX0SHFT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_TEX0SHFT_MASK) >> CP_VAT_REG_A_TEX0SHFT_SHIFT) +#define CP_VAT_REG_A_SET_TEX0SHFT(cp_vat_reg_a, tex0Shft) { \ + FDL_ASSERT(!((tex0Shft) & ~((1 << CP_VAT_REG_A_TEX0SHFT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_TEX0SHFT_MASK) | (((unsigned long)(tex0Shft)) << CP_VAT_REG_A_TEX0SHFT_SHIFT);\ +} +#define CP_VAT_REG_A_BYTEDEQUANT_SIZE 1 +#define CP_VAT_REG_A_BYTEDEQUANT_SHIFT 30 +#define CP_VAT_REG_A_BYTEDEQUANT_MASK 0x40000000 +#define CP_VAT_REG_A_GET_BYTEDEQUANT(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_BYTEDEQUANT_MASK) >> CP_VAT_REG_A_BYTEDEQUANT_SHIFT) +#define CP_VAT_REG_A_SET_BYTEDEQUANT(cp_vat_reg_a, byteDequant) { \ + FDL_ASSERT(!((byteDequant) & ~((1 << CP_VAT_REG_A_BYTEDEQUANT_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_BYTEDEQUANT_MASK) | (((unsigned long)(byteDequant)) << CP_VAT_REG_A_BYTEDEQUANT_SHIFT);\ +} +#define CP_VAT_REG_A_NORMALINDEX3_SIZE 1 +#define CP_VAT_REG_A_NORMALINDEX3_SHIFT 31 +#define CP_VAT_REG_A_NORMALINDEX3_MASK 0x80000000 +#define CP_VAT_REG_A_GET_NORMALINDEX3(cp_vat_reg_a) \ + ((((unsigned long)(cp_vat_reg_a)) & CP_VAT_REG_A_NORMALINDEX3_MASK) >> CP_VAT_REG_A_NORMALINDEX3_SHIFT) +#define CP_VAT_REG_A_SET_NORMALINDEX3(cp_vat_reg_a, normalIndex3) { \ + FDL_ASSERT(!((normalIndex3) & ~((1 << CP_VAT_REG_A_NORMALINDEX3_SIZE)-1))); \ + cp_vat_reg_a = (((unsigned long)(cp_vat_reg_a)) & ~CP_VAT_REG_A_NORMALINDEX3_MASK) | (((unsigned long)(normalIndex3)) << CP_VAT_REG_A_NORMALINDEX3_SHIFT);\ +} +#define CP_VAT_REG_A_TOTAL_SIZE 32 +#define CP_VAT_REG_A(posCnt, posFmt, posShft, nrmCnt, nrmFmt, Col0Cnt, Col0Fmt, Col1Cnt, Col1Fmt, tex0Cnt, tex0Fmt, tex0Shft, byteDequant, normalIndex3) \ + ((((unsigned long)(posCnt)) << CP_VAT_REG_A_POSCNT_SHIFT) | \ + (((unsigned long)(posFmt)) << CP_VAT_REG_A_POSFMT_SHIFT) | \ + (((unsigned long)(posShft)) << CP_VAT_REG_A_POSSHFT_SHIFT) | \ + (((unsigned long)(nrmCnt)) << CP_VAT_REG_A_NRMCNT_SHIFT) | \ + (((unsigned long)(nrmFmt)) << CP_VAT_REG_A_NRMFMT_SHIFT) | \ + (((unsigned long)(Col0Cnt)) << CP_VAT_REG_A_COL0CNT_SHIFT) | \ + (((unsigned long)(Col0Fmt)) << CP_VAT_REG_A_COL0FMT_SHIFT) | \ + (((unsigned long)(Col1Cnt)) << CP_VAT_REG_A_COL1CNT_SHIFT) | \ + (((unsigned long)(Col1Fmt)) << CP_VAT_REG_A_COL1FMT_SHIFT) | \ + (((unsigned long)(tex0Cnt)) << CP_VAT_REG_A_TEX0CNT_SHIFT) | \ + (((unsigned long)(tex0Fmt)) << CP_VAT_REG_A_TEX0FMT_SHIFT) | \ + (((unsigned long)(tex0Shft)) << CP_VAT_REG_A_TEX0SHFT_SHIFT) | \ + (((unsigned long)(byteDequant)) << CP_VAT_REG_A_BYTEDEQUANT_SHIFT) | \ + (((unsigned long)(normalIndex3)) << CP_VAT_REG_A_NORMALINDEX3_SHIFT)) + +/* +* cp_vat_reg_b struct +*/ +#define CP_VAT_REG_B_TEX1CNT_SIZE 1 +#define CP_VAT_REG_B_TEX1CNT_SHIFT 0 +#define CP_VAT_REG_B_TEX1CNT_MASK 0x00000001 +#define CP_VAT_REG_B_GET_TEX1CNT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX1CNT_MASK) >> CP_VAT_REG_B_TEX1CNT_SHIFT) +#define CP_VAT_REG_B_SET_TEX1CNT(cp_vat_reg_b, tex1Cnt) { \ + FDL_ASSERT(!((tex1Cnt) & ~((1 << CP_VAT_REG_B_TEX1CNT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX1CNT_MASK) | (((unsigned long)(tex1Cnt)) << CP_VAT_REG_B_TEX1CNT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX1FMT_SIZE 3 +#define CP_VAT_REG_B_TEX1FMT_SHIFT 1 +#define CP_VAT_REG_B_TEX1FMT_MASK 0x0000000e +#define CP_VAT_REG_B_GET_TEX1FMT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX1FMT_MASK) >> CP_VAT_REG_B_TEX1FMT_SHIFT) +#define CP_VAT_REG_B_SET_TEX1FMT(cp_vat_reg_b, tex1Fmt) { \ + FDL_ASSERT(!((tex1Fmt) & ~((1 << CP_VAT_REG_B_TEX1FMT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX1FMT_MASK) | (((unsigned long)(tex1Fmt)) << CP_VAT_REG_B_TEX1FMT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX1SHFT_SIZE 5 +#define CP_VAT_REG_B_TEX1SHFT_SHIFT 4 +#define CP_VAT_REG_B_TEX1SHFT_MASK 0x000001f0 +#define CP_VAT_REG_B_GET_TEX1SHFT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX1SHFT_MASK) >> CP_VAT_REG_B_TEX1SHFT_SHIFT) +#define CP_VAT_REG_B_SET_TEX1SHFT(cp_vat_reg_b, tex1Shft) { \ + FDL_ASSERT(!((tex1Shft) & ~((1 << CP_VAT_REG_B_TEX1SHFT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX1SHFT_MASK) | (((unsigned long)(tex1Shft)) << CP_VAT_REG_B_TEX1SHFT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX2CNT_SIZE 1 +#define CP_VAT_REG_B_TEX2CNT_SHIFT 9 +#define CP_VAT_REG_B_TEX2CNT_MASK 0x00000200 +#define CP_VAT_REG_B_GET_TEX2CNT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX2CNT_MASK) >> CP_VAT_REG_B_TEX2CNT_SHIFT) +#define CP_VAT_REG_B_SET_TEX2CNT(cp_vat_reg_b, tex2Cnt) { \ + FDL_ASSERT(!((tex2Cnt) & ~((1 << CP_VAT_REG_B_TEX2CNT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX2CNT_MASK) | (((unsigned long)(tex2Cnt)) << CP_VAT_REG_B_TEX2CNT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX2FMT_SIZE 3 +#define CP_VAT_REG_B_TEX2FMT_SHIFT 10 +#define CP_VAT_REG_B_TEX2FMT_MASK 0x00001c00 +#define CP_VAT_REG_B_GET_TEX2FMT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX2FMT_MASK) >> CP_VAT_REG_B_TEX2FMT_SHIFT) +#define CP_VAT_REG_B_SET_TEX2FMT(cp_vat_reg_b, tex2Fmt) { \ + FDL_ASSERT(!((tex2Fmt) & ~((1 << CP_VAT_REG_B_TEX2FMT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX2FMT_MASK) | (((unsigned long)(tex2Fmt)) << CP_VAT_REG_B_TEX2FMT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX2SHFT_SIZE 5 +#define CP_VAT_REG_B_TEX2SHFT_SHIFT 13 +#define CP_VAT_REG_B_TEX2SHFT_MASK 0x0003e000 +#define CP_VAT_REG_B_GET_TEX2SHFT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX2SHFT_MASK) >> CP_VAT_REG_B_TEX2SHFT_SHIFT) +#define CP_VAT_REG_B_SET_TEX2SHFT(cp_vat_reg_b, tex2Shft) { \ + FDL_ASSERT(!((tex2Shft) & ~((1 << CP_VAT_REG_B_TEX2SHFT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX2SHFT_MASK) | (((unsigned long)(tex2Shft)) << CP_VAT_REG_B_TEX2SHFT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX3CNT_SIZE 1 +#define CP_VAT_REG_B_TEX3CNT_SHIFT 18 +#define CP_VAT_REG_B_TEX3CNT_MASK 0x00040000 +#define CP_VAT_REG_B_GET_TEX3CNT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX3CNT_MASK) >> CP_VAT_REG_B_TEX3CNT_SHIFT) +#define CP_VAT_REG_B_SET_TEX3CNT(cp_vat_reg_b, tex3Cnt) { \ + FDL_ASSERT(!((tex3Cnt) & ~((1 << CP_VAT_REG_B_TEX3CNT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX3CNT_MASK) | (((unsigned long)(tex3Cnt)) << CP_VAT_REG_B_TEX3CNT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX3FMT_SIZE 3 +#define CP_VAT_REG_B_TEX3FMT_SHIFT 19 +#define CP_VAT_REG_B_TEX3FMT_MASK 0x00380000 +#define CP_VAT_REG_B_GET_TEX3FMT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX3FMT_MASK) >> CP_VAT_REG_B_TEX3FMT_SHIFT) +#define CP_VAT_REG_B_SET_TEX3FMT(cp_vat_reg_b, tex3Fmt) { \ + FDL_ASSERT(!((tex3Fmt) & ~((1 << CP_VAT_REG_B_TEX3FMT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX3FMT_MASK) | (((unsigned long)(tex3Fmt)) << CP_VAT_REG_B_TEX3FMT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX3SHFT_SIZE 5 +#define CP_VAT_REG_B_TEX3SHFT_SHIFT 22 +#define CP_VAT_REG_B_TEX3SHFT_MASK 0x07c00000 +#define CP_VAT_REG_B_GET_TEX3SHFT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX3SHFT_MASK) >> CP_VAT_REG_B_TEX3SHFT_SHIFT) +#define CP_VAT_REG_B_SET_TEX3SHFT(cp_vat_reg_b, tex3Shft) { \ + FDL_ASSERT(!((tex3Shft) & ~((1 << CP_VAT_REG_B_TEX3SHFT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX3SHFT_MASK) | (((unsigned long)(tex3Shft)) << CP_VAT_REG_B_TEX3SHFT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX4CNT_SIZE 1 +#define CP_VAT_REG_B_TEX4CNT_SHIFT 27 +#define CP_VAT_REG_B_TEX4CNT_MASK 0x08000000 +#define CP_VAT_REG_B_GET_TEX4CNT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX4CNT_MASK) >> CP_VAT_REG_B_TEX4CNT_SHIFT) +#define CP_VAT_REG_B_SET_TEX4CNT(cp_vat_reg_b, tex4Cnt) { \ + FDL_ASSERT(!((tex4Cnt) & ~((1 << CP_VAT_REG_B_TEX4CNT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX4CNT_MASK) | (((unsigned long)(tex4Cnt)) << CP_VAT_REG_B_TEX4CNT_SHIFT);\ +} +#define CP_VAT_REG_B_TEX4FMT_SIZE 3 +#define CP_VAT_REG_B_TEX4FMT_SHIFT 28 +#define CP_VAT_REG_B_TEX4FMT_MASK 0x70000000 +#define CP_VAT_REG_B_GET_TEX4FMT(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_TEX4FMT_MASK) >> CP_VAT_REG_B_TEX4FMT_SHIFT) +#define CP_VAT_REG_B_SET_TEX4FMT(cp_vat_reg_b, tex4Fmt) { \ + FDL_ASSERT(!((tex4Fmt) & ~((1 << CP_VAT_REG_B_TEX4FMT_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_TEX4FMT_MASK) | (((unsigned long)(tex4Fmt)) << CP_VAT_REG_B_TEX4FMT_SHIFT);\ +} +#define CP_VAT_REG_B_VCACHE_ENHANCE_SIZE 1 +#define CP_VAT_REG_B_VCACHE_ENHANCE_SHIFT 31 +#define CP_VAT_REG_B_VCACHE_ENHANCE_MASK 0x80000000 +#define CP_VAT_REG_B_GET_VCACHE_ENHANCE(cp_vat_reg_b) \ + ((((unsigned long)(cp_vat_reg_b)) & CP_VAT_REG_B_VCACHE_ENHANCE_MASK) >> CP_VAT_REG_B_VCACHE_ENHANCE_SHIFT) +#define CP_VAT_REG_B_SET_VCACHE_ENHANCE(cp_vat_reg_b, vcache_enhance) { \ + FDL_ASSERT(!((vcache_enhance) & ~((1 << CP_VAT_REG_B_VCACHE_ENHANCE_SIZE)-1))); \ + cp_vat_reg_b = (((unsigned long)(cp_vat_reg_b)) & ~CP_VAT_REG_B_VCACHE_ENHANCE_MASK) | (((unsigned long)(vcache_enhance)) << CP_VAT_REG_B_VCACHE_ENHANCE_SHIFT);\ +} +#define CP_VAT_REG_B_TOTAL_SIZE 32 +#define CP_VAT_REG_B(tex1Cnt, tex1Fmt, tex1Shft, tex2Cnt, tex2Fmt, tex2Shft, tex3Cnt, tex3Fmt, tex3Shft, tex4Cnt, tex4Fmt, vcache_enhance) \ + ((((unsigned long)(tex1Cnt)) << CP_VAT_REG_B_TEX1CNT_SHIFT) | \ + (((unsigned long)(tex1Fmt)) << CP_VAT_REG_B_TEX1FMT_SHIFT) | \ + (((unsigned long)(tex1Shft)) << CP_VAT_REG_B_TEX1SHFT_SHIFT) | \ + (((unsigned long)(tex2Cnt)) << CP_VAT_REG_B_TEX2CNT_SHIFT) | \ + (((unsigned long)(tex2Fmt)) << CP_VAT_REG_B_TEX2FMT_SHIFT) | \ + (((unsigned long)(tex2Shft)) << CP_VAT_REG_B_TEX2SHFT_SHIFT) | \ + (((unsigned long)(tex3Cnt)) << CP_VAT_REG_B_TEX3CNT_SHIFT) | \ + (((unsigned long)(tex3Fmt)) << CP_VAT_REG_B_TEX3FMT_SHIFT) | \ + (((unsigned long)(tex3Shft)) << CP_VAT_REG_B_TEX3SHFT_SHIFT) | \ + (((unsigned long)(tex4Cnt)) << CP_VAT_REG_B_TEX4CNT_SHIFT) | \ + (((unsigned long)(tex4Fmt)) << CP_VAT_REG_B_TEX4FMT_SHIFT) | \ + (((unsigned long)(vcache_enhance)) << CP_VAT_REG_B_VCACHE_ENHANCE_SHIFT)) + +/* +* cp_vat_reg_c struct +*/ +#define CP_VAT_REG_C_TEX4SHFT_SIZE 5 +#define CP_VAT_REG_C_TEX4SHFT_SHIFT 0 +#define CP_VAT_REG_C_TEX4SHFT_MASK 0x0000001f +#define CP_VAT_REG_C_GET_TEX4SHFT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX4SHFT_MASK) >> CP_VAT_REG_C_TEX4SHFT_SHIFT) +#define CP_VAT_REG_C_SET_TEX4SHFT(cp_vat_reg_c, tex4Shft) { \ + FDL_ASSERT(!((tex4Shft) & ~((1 << CP_VAT_REG_C_TEX4SHFT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX4SHFT_MASK) | (((unsigned long)(tex4Shft)) << CP_VAT_REG_C_TEX4SHFT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX5CNT_SIZE 1 +#define CP_VAT_REG_C_TEX5CNT_SHIFT 5 +#define CP_VAT_REG_C_TEX5CNT_MASK 0x00000020 +#define CP_VAT_REG_C_GET_TEX5CNT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX5CNT_MASK) >> CP_VAT_REG_C_TEX5CNT_SHIFT) +#define CP_VAT_REG_C_SET_TEX5CNT(cp_vat_reg_c, tex5Cnt) { \ + FDL_ASSERT(!((tex5Cnt) & ~((1 << CP_VAT_REG_C_TEX5CNT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX5CNT_MASK) | (((unsigned long)(tex5Cnt)) << CP_VAT_REG_C_TEX5CNT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX5FMT_SIZE 3 +#define CP_VAT_REG_C_TEX5FMT_SHIFT 6 +#define CP_VAT_REG_C_TEX5FMT_MASK 0x000001c0 +#define CP_VAT_REG_C_GET_TEX5FMT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX5FMT_MASK) >> CP_VAT_REG_C_TEX5FMT_SHIFT) +#define CP_VAT_REG_C_SET_TEX5FMT(cp_vat_reg_c, tex5Fmt) { \ + FDL_ASSERT(!((tex5Fmt) & ~((1 << CP_VAT_REG_C_TEX5FMT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX5FMT_MASK) | (((unsigned long)(tex5Fmt)) << CP_VAT_REG_C_TEX5FMT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX5SHFT_SIZE 5 +#define CP_VAT_REG_C_TEX5SHFT_SHIFT 9 +#define CP_VAT_REG_C_TEX5SHFT_MASK 0x00003e00 +#define CP_VAT_REG_C_GET_TEX5SHFT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX5SHFT_MASK) >> CP_VAT_REG_C_TEX5SHFT_SHIFT) +#define CP_VAT_REG_C_SET_TEX5SHFT(cp_vat_reg_c, tex5Shft) { \ + FDL_ASSERT(!((tex5Shft) & ~((1 << CP_VAT_REG_C_TEX5SHFT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX5SHFT_MASK) | (((unsigned long)(tex5Shft)) << CP_VAT_REG_C_TEX5SHFT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX6CNT_SIZE 1 +#define CP_VAT_REG_C_TEX6CNT_SHIFT 14 +#define CP_VAT_REG_C_TEX6CNT_MASK 0x00004000 +#define CP_VAT_REG_C_GET_TEX6CNT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX6CNT_MASK) >> CP_VAT_REG_C_TEX6CNT_SHIFT) +#define CP_VAT_REG_C_SET_TEX6CNT(cp_vat_reg_c, tex6Cnt) { \ + FDL_ASSERT(!((tex6Cnt) & ~((1 << CP_VAT_REG_C_TEX6CNT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX6CNT_MASK) | (((unsigned long)(tex6Cnt)) << CP_VAT_REG_C_TEX6CNT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX6FMT_SIZE 3 +#define CP_VAT_REG_C_TEX6FMT_SHIFT 15 +#define CP_VAT_REG_C_TEX6FMT_MASK 0x00038000 +#define CP_VAT_REG_C_GET_TEX6FMT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX6FMT_MASK) >> CP_VAT_REG_C_TEX6FMT_SHIFT) +#define CP_VAT_REG_C_SET_TEX6FMT(cp_vat_reg_c, tex6Fmt) { \ + FDL_ASSERT(!((tex6Fmt) & ~((1 << CP_VAT_REG_C_TEX6FMT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX6FMT_MASK) | (((unsigned long)(tex6Fmt)) << CP_VAT_REG_C_TEX6FMT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX6SHFT_SIZE 5 +#define CP_VAT_REG_C_TEX6SHFT_SHIFT 18 +#define CP_VAT_REG_C_TEX6SHFT_MASK 0x007c0000 +#define CP_VAT_REG_C_GET_TEX6SHFT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX6SHFT_MASK) >> CP_VAT_REG_C_TEX6SHFT_SHIFT) +#define CP_VAT_REG_C_SET_TEX6SHFT(cp_vat_reg_c, tex6Shft) { \ + FDL_ASSERT(!((tex6Shft) & ~((1 << CP_VAT_REG_C_TEX6SHFT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX6SHFT_MASK) | (((unsigned long)(tex6Shft)) << CP_VAT_REG_C_TEX6SHFT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX7CNT_SIZE 1 +#define CP_VAT_REG_C_TEX7CNT_SHIFT 23 +#define CP_VAT_REG_C_TEX7CNT_MASK 0x00800000 +#define CP_VAT_REG_C_GET_TEX7CNT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX7CNT_MASK) >> CP_VAT_REG_C_TEX7CNT_SHIFT) +#define CP_VAT_REG_C_SET_TEX7CNT(cp_vat_reg_c, tex7Cnt) { \ + FDL_ASSERT(!((tex7Cnt) & ~((1 << CP_VAT_REG_C_TEX7CNT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX7CNT_MASK) | (((unsigned long)(tex7Cnt)) << CP_VAT_REG_C_TEX7CNT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX7FMT_SIZE 3 +#define CP_VAT_REG_C_TEX7FMT_SHIFT 24 +#define CP_VAT_REG_C_TEX7FMT_MASK 0x07000000 +#define CP_VAT_REG_C_GET_TEX7FMT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX7FMT_MASK) >> CP_VAT_REG_C_TEX7FMT_SHIFT) +#define CP_VAT_REG_C_SET_TEX7FMT(cp_vat_reg_c, tex7Fmt) { \ + FDL_ASSERT(!((tex7Fmt) & ~((1 << CP_VAT_REG_C_TEX7FMT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX7FMT_MASK) | (((unsigned long)(tex7Fmt)) << CP_VAT_REG_C_TEX7FMT_SHIFT);\ +} +#define CP_VAT_REG_C_TEX7SHFT_SIZE 5 +#define CP_VAT_REG_C_TEX7SHFT_SHIFT 27 +#define CP_VAT_REG_C_TEX7SHFT_MASK 0xf8000000 +#define CP_VAT_REG_C_GET_TEX7SHFT(cp_vat_reg_c) \ + ((((unsigned long)(cp_vat_reg_c)) & CP_VAT_REG_C_TEX7SHFT_MASK) >> CP_VAT_REG_C_TEX7SHFT_SHIFT) +#define CP_VAT_REG_C_SET_TEX7SHFT(cp_vat_reg_c, tex7Shft) { \ + FDL_ASSERT(!((tex7Shft) & ~((1 << CP_VAT_REG_C_TEX7SHFT_SIZE)-1))); \ + cp_vat_reg_c = (((unsigned long)(cp_vat_reg_c)) & ~CP_VAT_REG_C_TEX7SHFT_MASK) | (((unsigned long)(tex7Shft)) << CP_VAT_REG_C_TEX7SHFT_SHIFT);\ +} +#define CP_VAT_REG_C_TOTAL_SIZE 32 +#define CP_VAT_REG_C(tex4Shft, tex5Cnt, tex5Fmt, tex5Shft, tex6Cnt, tex6Fmt, tex6Shft, tex7Cnt, tex7Fmt, tex7Shft) \ + ((((unsigned long)(tex4Shft)) << CP_VAT_REG_C_TEX4SHFT_SHIFT) | \ + (((unsigned long)(tex5Cnt)) << CP_VAT_REG_C_TEX5CNT_SHIFT) | \ + (((unsigned long)(tex5Fmt)) << CP_VAT_REG_C_TEX5FMT_SHIFT) | \ + (((unsigned long)(tex5Shft)) << CP_VAT_REG_C_TEX5SHFT_SHIFT) | \ + (((unsigned long)(tex6Cnt)) << CP_VAT_REG_C_TEX6CNT_SHIFT) | \ + (((unsigned long)(tex6Fmt)) << CP_VAT_REG_C_TEX6FMT_SHIFT) | \ + (((unsigned long)(tex6Shft)) << CP_VAT_REG_C_TEX6SHFT_SHIFT) | \ + (((unsigned long)(tex7Cnt)) << CP_VAT_REG_C_TEX7CNT_SHIFT) | \ + (((unsigned long)(tex7Fmt)) << CP_VAT_REG_C_TEX7FMT_SHIFT) | \ + (((unsigned long)(tex7Shft)) << CP_VAT_REG_C_TEX7SHFT_SHIFT)) + +/* +* cp_matidx_reg_a struct +*/ +#define CP_MATIDX_REG_A_POSIDX_SIZE 6 +#define CP_MATIDX_REG_A_POSIDX_SHIFT 0 +#define CP_MATIDX_REG_A_POSIDX_MASK 0x0000003f +#define CP_MATIDX_REG_A_GET_POSIDX(cp_matidx_reg_a) \ + ((((unsigned long)(cp_matidx_reg_a)) & CP_MATIDX_REG_A_POSIDX_MASK) >> CP_MATIDX_REG_A_POSIDX_SHIFT) +#define CP_MATIDX_REG_A_SET_POSIDX(cp_matidx_reg_a, posIdx) { \ + FDL_ASSERT(!((posIdx) & ~((1 << CP_MATIDX_REG_A_POSIDX_SIZE)-1))); \ + cp_matidx_reg_a = (((unsigned long)(cp_matidx_reg_a)) & ~CP_MATIDX_REG_A_POSIDX_MASK) | (((unsigned long)(posIdx)) << CP_MATIDX_REG_A_POSIDX_SHIFT);\ +} +#define CP_MATIDX_REG_A_TEX0IDX_SIZE 6 +#define CP_MATIDX_REG_A_TEX0IDX_SHIFT 6 +#define CP_MATIDX_REG_A_TEX0IDX_MASK 0x00000fc0 +#define CP_MATIDX_REG_A_GET_TEX0IDX(cp_matidx_reg_a) \ + ((((unsigned long)(cp_matidx_reg_a)) & CP_MATIDX_REG_A_TEX0IDX_MASK) >> CP_MATIDX_REG_A_TEX0IDX_SHIFT) +#define CP_MATIDX_REG_A_SET_TEX0IDX(cp_matidx_reg_a, tex0Idx) { \ + FDL_ASSERT(!((tex0Idx) & ~((1 << CP_MATIDX_REG_A_TEX0IDX_SIZE)-1))); \ + cp_matidx_reg_a = (((unsigned long)(cp_matidx_reg_a)) & ~CP_MATIDX_REG_A_TEX0IDX_MASK) | (((unsigned long)(tex0Idx)) << CP_MATIDX_REG_A_TEX0IDX_SHIFT);\ +} +#define CP_MATIDX_REG_A_TEX1IDX_SIZE 6 +#define CP_MATIDX_REG_A_TEX1IDX_SHIFT 12 +#define CP_MATIDX_REG_A_TEX1IDX_MASK 0x0003f000 +#define CP_MATIDX_REG_A_GET_TEX1IDX(cp_matidx_reg_a) \ + ((((unsigned long)(cp_matidx_reg_a)) & CP_MATIDX_REG_A_TEX1IDX_MASK) >> CP_MATIDX_REG_A_TEX1IDX_SHIFT) +#define CP_MATIDX_REG_A_SET_TEX1IDX(cp_matidx_reg_a, tex1Idx) { \ + FDL_ASSERT(!((tex1Idx) & ~((1 << CP_MATIDX_REG_A_TEX1IDX_SIZE)-1))); \ + cp_matidx_reg_a = (((unsigned long)(cp_matidx_reg_a)) & ~CP_MATIDX_REG_A_TEX1IDX_MASK) | (((unsigned long)(tex1Idx)) << CP_MATIDX_REG_A_TEX1IDX_SHIFT);\ +} +#define CP_MATIDX_REG_A_TEX2IDX_SIZE 6 +#define CP_MATIDX_REG_A_TEX2IDX_SHIFT 18 +#define CP_MATIDX_REG_A_TEX2IDX_MASK 0x00fc0000 +#define CP_MATIDX_REG_A_GET_TEX2IDX(cp_matidx_reg_a) \ + ((((unsigned long)(cp_matidx_reg_a)) & CP_MATIDX_REG_A_TEX2IDX_MASK) >> CP_MATIDX_REG_A_TEX2IDX_SHIFT) +#define CP_MATIDX_REG_A_SET_TEX2IDX(cp_matidx_reg_a, tex2Idx) { \ + FDL_ASSERT(!((tex2Idx) & ~((1 << CP_MATIDX_REG_A_TEX2IDX_SIZE)-1))); \ + cp_matidx_reg_a = (((unsigned long)(cp_matidx_reg_a)) & ~CP_MATIDX_REG_A_TEX2IDX_MASK) | (((unsigned long)(tex2Idx)) << CP_MATIDX_REG_A_TEX2IDX_SHIFT);\ +} +#define CP_MATIDX_REG_A_TEX3IDX_SIZE 6 +#define CP_MATIDX_REG_A_TEX3IDX_SHIFT 24 +#define CP_MATIDX_REG_A_TEX3IDX_MASK 0x3f000000 +#define CP_MATIDX_REG_A_GET_TEX3IDX(cp_matidx_reg_a) \ + ((((unsigned long)(cp_matidx_reg_a)) & CP_MATIDX_REG_A_TEX3IDX_MASK) >> CP_MATIDX_REG_A_TEX3IDX_SHIFT) +#define CP_MATIDX_REG_A_SET_TEX3IDX(cp_matidx_reg_a, tex3Idx) { \ + FDL_ASSERT(!((tex3Idx) & ~((1 << CP_MATIDX_REG_A_TEX3IDX_SIZE)-1))); \ + cp_matidx_reg_a = (((unsigned long)(cp_matidx_reg_a)) & ~CP_MATIDX_REG_A_TEX3IDX_MASK) | (((unsigned long)(tex3Idx)) << CP_MATIDX_REG_A_TEX3IDX_SHIFT);\ +} +#define CP_MATIDX_REG_A_TOTAL_SIZE 30 +#define CP_MATIDX_REG_A(posIdx, tex0Idx, tex1Idx, tex2Idx, tex3Idx) \ + ((((unsigned long)(posIdx)) << CP_MATIDX_REG_A_POSIDX_SHIFT) | \ + (((unsigned long)(tex0Idx)) << CP_MATIDX_REG_A_TEX0IDX_SHIFT) | \ + (((unsigned long)(tex1Idx)) << CP_MATIDX_REG_A_TEX1IDX_SHIFT) | \ + (((unsigned long)(tex2Idx)) << CP_MATIDX_REG_A_TEX2IDX_SHIFT) | \ + (((unsigned long)(tex3Idx)) << CP_MATIDX_REG_A_TEX3IDX_SHIFT)) + +/* +* cp_matidx_reg_b struct +*/ +#define CP_MATIDX_REG_B_TEX4IDX_SIZE 6 +#define CP_MATIDX_REG_B_TEX4IDX_SHIFT 0 +#define CP_MATIDX_REG_B_TEX4IDX_MASK 0x0000003f +#define CP_MATIDX_REG_B_GET_TEX4IDX(cp_matidx_reg_b) \ + ((((unsigned long)(cp_matidx_reg_b)) & CP_MATIDX_REG_B_TEX4IDX_MASK) >> CP_MATIDX_REG_B_TEX4IDX_SHIFT) +#define CP_MATIDX_REG_B_SET_TEX4IDX(cp_matidx_reg_b, tex4Idx) { \ + FDL_ASSERT(!((tex4Idx) & ~((1 << CP_MATIDX_REG_B_TEX4IDX_SIZE)-1))); \ + cp_matidx_reg_b = (((unsigned long)(cp_matidx_reg_b)) & ~CP_MATIDX_REG_B_TEX4IDX_MASK) | (((unsigned long)(tex4Idx)) << CP_MATIDX_REG_B_TEX4IDX_SHIFT);\ +} +#define CP_MATIDX_REG_B_TEX5IDX_SIZE 6 +#define CP_MATIDX_REG_B_TEX5IDX_SHIFT 6 +#define CP_MATIDX_REG_B_TEX5IDX_MASK 0x00000fc0 +#define CP_MATIDX_REG_B_GET_TEX5IDX(cp_matidx_reg_b) \ + ((((unsigned long)(cp_matidx_reg_b)) & CP_MATIDX_REG_B_TEX5IDX_MASK) >> CP_MATIDX_REG_B_TEX5IDX_SHIFT) +#define CP_MATIDX_REG_B_SET_TEX5IDX(cp_matidx_reg_b, tex5Idx) { \ + FDL_ASSERT(!((tex5Idx) & ~((1 << CP_MATIDX_REG_B_TEX5IDX_SIZE)-1))); \ + cp_matidx_reg_b = (((unsigned long)(cp_matidx_reg_b)) & ~CP_MATIDX_REG_B_TEX5IDX_MASK) | (((unsigned long)(tex5Idx)) << CP_MATIDX_REG_B_TEX5IDX_SHIFT);\ +} +#define CP_MATIDX_REG_B_TEX6IDX_SIZE 6 +#define CP_MATIDX_REG_B_TEX6IDX_SHIFT 12 +#define CP_MATIDX_REG_B_TEX6IDX_MASK 0x0003f000 +#define CP_MATIDX_REG_B_GET_TEX6IDX(cp_matidx_reg_b) \ + ((((unsigned long)(cp_matidx_reg_b)) & CP_MATIDX_REG_B_TEX6IDX_MASK) >> CP_MATIDX_REG_B_TEX6IDX_SHIFT) +#define CP_MATIDX_REG_B_SET_TEX6IDX(cp_matidx_reg_b, tex6Idx) { \ + FDL_ASSERT(!((tex6Idx) & ~((1 << CP_MATIDX_REG_B_TEX6IDX_SIZE)-1))); \ + cp_matidx_reg_b = (((unsigned long)(cp_matidx_reg_b)) & ~CP_MATIDX_REG_B_TEX6IDX_MASK) | (((unsigned long)(tex6Idx)) << CP_MATIDX_REG_B_TEX6IDX_SHIFT);\ +} +#define CP_MATIDX_REG_B_TEX7IDX_SIZE 6 +#define CP_MATIDX_REG_B_TEX7IDX_SHIFT 18 +#define CP_MATIDX_REG_B_TEX7IDX_MASK 0x00fc0000 +#define CP_MATIDX_REG_B_GET_TEX7IDX(cp_matidx_reg_b) \ + ((((unsigned long)(cp_matidx_reg_b)) & CP_MATIDX_REG_B_TEX7IDX_MASK) >> CP_MATIDX_REG_B_TEX7IDX_SHIFT) +#define CP_MATIDX_REG_B_SET_TEX7IDX(cp_matidx_reg_b, tex7Idx) { \ + FDL_ASSERT(!((tex7Idx) & ~((1 << CP_MATIDX_REG_B_TEX7IDX_SIZE)-1))); \ + cp_matidx_reg_b = (((unsigned long)(cp_matidx_reg_b)) & ~CP_MATIDX_REG_B_TEX7IDX_MASK) | (((unsigned long)(tex7Idx)) << CP_MATIDX_REG_B_TEX7IDX_SHIFT);\ +} +#define CP_MATIDX_REG_B_TOTAL_SIZE 24 +#define CP_MATIDX_REG_B(tex4Idx, tex5Idx, tex6Idx, tex7Idx) \ + ((((unsigned long)(tex4Idx)) << CP_MATIDX_REG_B_TEX4IDX_SHIFT) | \ + (((unsigned long)(tex5Idx)) << CP_MATIDX_REG_B_TEX5IDX_SHIFT) | \ + (((unsigned long)(tex6Idx)) << CP_MATIDX_REG_B_TEX6IDX_SHIFT) | \ + (((unsigned long)(tex7Idx)) << CP_MATIDX_REG_B_TEX7IDX_SHIFT)) + +/* +* cp_array_base_reg struct +*/ +#define CP_ARRAY_BASE_REG_BASE_SIZE 29 +#define CP_ARRAY_BASE_REG_BASE_SHIFT 0 +#define CP_ARRAY_BASE_REG_BASE_MASK 0x1fffffff +#define CP_ARRAY_BASE_REG_GET_BASE(cp_array_base_reg) \ + ((((unsigned long)(cp_array_base_reg)) & CP_ARRAY_BASE_REG_BASE_MASK) >> CP_ARRAY_BASE_REG_BASE_SHIFT) +#define CP_ARRAY_BASE_REG_SET_BASE(cp_array_base_reg, base) { \ + FDL_ASSERT(!((base) & ~((1 << CP_ARRAY_BASE_REG_BASE_SIZE)-1))); \ + cp_array_base_reg = (((unsigned long)(cp_array_base_reg)) & ~CP_ARRAY_BASE_REG_BASE_MASK) | (((unsigned long)(base)) << CP_ARRAY_BASE_REG_BASE_SHIFT);\ +} +#define CP_ARRAY_BASE_REG_PAD0_SIZE 3 +#define CP_ARRAY_BASE_REG_PAD0_SHIFT 29 +#define CP_ARRAY_BASE_REG_PAD0_MASK 0xe0000000 +#define CP_ARRAY_BASE_REG_GET_PAD0(cp_array_base_reg) \ + ((((unsigned long)(cp_array_base_reg)) & CP_ARRAY_BASE_REG_PAD0_MASK) >> CP_ARRAY_BASE_REG_PAD0_SHIFT) +#define CP_ARRAY_BASE_REG_SET_PAD0(cp_array_base_reg, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_ARRAY_BASE_REG_PAD0_SIZE)-1))); \ + cp_array_base_reg = (((unsigned long)(cp_array_base_reg)) & ~CP_ARRAY_BASE_REG_PAD0_MASK) | (((unsigned long)(pad0)) << CP_ARRAY_BASE_REG_PAD0_SHIFT);\ +} +#define CP_ARRAY_BASE_REG_TOTAL_SIZE 32 +#define CP_ARRAY_BASE_REG(base) \ + ((((unsigned long)(base)) << CP_ARRAY_BASE_REG_BASE_SHIFT)) + +/* +* cp_array_stride_reg struct +*/ +#define CP_ARRAY_STRIDE_REG_STRIDE_SIZE 8 +#define CP_ARRAY_STRIDE_REG_STRIDE_SHIFT 0 +#define CP_ARRAY_STRIDE_REG_STRIDE_MASK 0x000000ff +#define CP_ARRAY_STRIDE_REG_GET_STRIDE(cp_array_stride_reg) \ + ((((unsigned long)(cp_array_stride_reg)) & CP_ARRAY_STRIDE_REG_STRIDE_MASK) >> CP_ARRAY_STRIDE_REG_STRIDE_SHIFT) +#define CP_ARRAY_STRIDE_REG_SET_STRIDE(cp_array_stride_reg, stride) { \ + FDL_ASSERT(!((stride) & ~((1 << CP_ARRAY_STRIDE_REG_STRIDE_SIZE)-1))); \ + cp_array_stride_reg = (((unsigned long)(cp_array_stride_reg)) & ~CP_ARRAY_STRIDE_REG_STRIDE_MASK) | (((unsigned long)(stride)) << CP_ARRAY_STRIDE_REG_STRIDE_SHIFT);\ +} +#define CP_ARRAY_STRIDE_REG_PAD0_SIZE 24 +#define CP_ARRAY_STRIDE_REG_PAD0_SHIFT 8 +#define CP_ARRAY_STRIDE_REG_PAD0_MASK 0xffffff00 +#define CP_ARRAY_STRIDE_REG_GET_PAD0(cp_array_stride_reg) \ + ((((unsigned long)(cp_array_stride_reg)) & CP_ARRAY_STRIDE_REG_PAD0_MASK) >> CP_ARRAY_STRIDE_REG_PAD0_SHIFT) +#define CP_ARRAY_STRIDE_REG_SET_PAD0(cp_array_stride_reg, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_ARRAY_STRIDE_REG_PAD0_SIZE)-1))); \ + cp_array_stride_reg = (((unsigned long)(cp_array_stride_reg)) & ~CP_ARRAY_STRIDE_REG_PAD0_MASK) | (((unsigned long)(pad0)) << CP_ARRAY_STRIDE_REG_PAD0_SHIFT);\ +} +#define CP_ARRAY_STRIDE_REG_TOTAL_SIZE 32 +#define CP_ARRAY_STRIDE_REG(stride) \ + ((((unsigned long)(stride)) << CP_ARRAY_STRIDE_REG_STRIDE_SHIFT)) + +/* +* cp_stat_enable_reg struct +*/ +#define CP_STAT_ENABLE_REG_VC_STAT_SIZE 1 +#define CP_STAT_ENABLE_REG_VC_STAT_SHIFT 0 +#define CP_STAT_ENABLE_REG_VC_STAT_MASK 0x00000001 +#define CP_STAT_ENABLE_REG_GET_VC_STAT(cp_stat_enable_reg) \ + ((((unsigned long)(cp_stat_enable_reg)) & CP_STAT_ENABLE_REG_VC_STAT_MASK) >> CP_STAT_ENABLE_REG_VC_STAT_SHIFT) +#define CP_STAT_ENABLE_REG_SET_VC_STAT(cp_stat_enable_reg, vc_stat) { \ + FDL_ASSERT(!((vc_stat) & ~((1 << CP_STAT_ENABLE_REG_VC_STAT_SIZE)-1))); \ + cp_stat_enable_reg = (((unsigned long)(cp_stat_enable_reg)) & ~CP_STAT_ENABLE_REG_VC_STAT_MASK) | (((unsigned long)(vc_stat)) << CP_STAT_ENABLE_REG_VC_STAT_SHIFT);\ +} +#define CP_STAT_ENABLE_REG_PAD0_SIZE 1 +#define CP_STAT_ENABLE_REG_PAD0_SHIFT 1 +#define CP_STAT_ENABLE_REG_PAD0_MASK 0x00000002 +#define CP_STAT_ENABLE_REG_GET_PAD0(cp_stat_enable_reg) \ + ((((unsigned long)(cp_stat_enable_reg)) & CP_STAT_ENABLE_REG_PAD0_MASK) >> CP_STAT_ENABLE_REG_PAD0_SHIFT) +#define CP_STAT_ENABLE_REG_SET_PAD0(cp_stat_enable_reg, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_STAT_ENABLE_REG_PAD0_SIZE)-1))); \ + cp_stat_enable_reg = (((unsigned long)(cp_stat_enable_reg)) & ~CP_STAT_ENABLE_REG_PAD0_MASK) | (((unsigned long)(pad0)) << CP_STAT_ENABLE_REG_PAD0_SHIFT);\ +} +#define CP_STAT_ENABLE_REG_FRCLK_SIZE 1 +#define CP_STAT_ENABLE_REG_FRCLK_SHIFT 2 +#define CP_STAT_ENABLE_REG_FRCLK_MASK 0x00000004 +#define CP_STAT_ENABLE_REG_GET_FRCLK(cp_stat_enable_reg) \ + ((((unsigned long)(cp_stat_enable_reg)) & CP_STAT_ENABLE_REG_FRCLK_MASK) >> CP_STAT_ENABLE_REG_FRCLK_SHIFT) +#define CP_STAT_ENABLE_REG_SET_FRCLK(cp_stat_enable_reg, frclk) { \ + FDL_ASSERT(!((frclk) & ~((1 << CP_STAT_ENABLE_REG_FRCLK_SIZE)-1))); \ + cp_stat_enable_reg = (((unsigned long)(cp_stat_enable_reg)) & ~CP_STAT_ENABLE_REG_FRCLK_MASK) | (((unsigned long)(frclk)) << CP_STAT_ENABLE_REG_FRCLK_SHIFT);\ +} +#define CP_STAT_ENABLE_REG_TOTAL_SIZE 3 +#define CP_STAT_ENABLE_REG(vc_stat, frclk) \ + ((((unsigned long)(vc_stat)) << CP_STAT_ENABLE_REG_VC_STAT_SHIFT) | \ + (((unsigned long)(frclk)) << CP_STAT_ENABLE_REG_FRCLK_SHIFT)) + +/* +* cp_stat_sel_reg struct +*/ +#define CP_STAT_SEL_REG_ATTR_SEL_SIZE 4 +#define CP_STAT_SEL_REG_ATTR_SEL_SHIFT 0 +#define CP_STAT_SEL_REG_ATTR_SEL_MASK 0x0000000f +#define CP_STAT_SEL_REG_GET_ATTR_SEL(cp_stat_sel_reg) \ + ((((unsigned long)(cp_stat_sel_reg)) & CP_STAT_SEL_REG_ATTR_SEL_MASK) >> CP_STAT_SEL_REG_ATTR_SEL_SHIFT) +#define CP_STAT_SEL_REG_SET_ATTR_SEL(cp_stat_sel_reg, attr_sel) { \ + FDL_ASSERT(!((attr_sel) & ~((1 << CP_STAT_SEL_REG_ATTR_SEL_SIZE)-1))); \ + cp_stat_sel_reg = (((unsigned long)(cp_stat_sel_reg)) & ~CP_STAT_SEL_REG_ATTR_SEL_MASK) | (((unsigned long)(attr_sel)) << CP_STAT_SEL_REG_ATTR_SEL_SHIFT);\ +} +#define CP_STAT_SEL_REG_STALLPERF_SEL_SIZE 4 +#define CP_STAT_SEL_REG_STALLPERF_SEL_SHIFT 4 +#define CP_STAT_SEL_REG_STALLPERF_SEL_MASK 0x000000f0 +#define CP_STAT_SEL_REG_GET_STALLPERF_SEL(cp_stat_sel_reg) \ + ((((unsigned long)(cp_stat_sel_reg)) & CP_STAT_SEL_REG_STALLPERF_SEL_MASK) >> CP_STAT_SEL_REG_STALLPERF_SEL_SHIFT) +#define CP_STAT_SEL_REG_SET_STALLPERF_SEL(cp_stat_sel_reg, stallperf_sel) { \ + FDL_ASSERT(!((stallperf_sel) & ~((1 << CP_STAT_SEL_REG_STALLPERF_SEL_SIZE)-1))); \ + cp_stat_sel_reg = (((unsigned long)(cp_stat_sel_reg)) & ~CP_STAT_SEL_REG_STALLPERF_SEL_MASK) | (((unsigned long)(stallperf_sel)) << CP_STAT_SEL_REG_STALLPERF_SEL_SHIFT);\ +} +#define CP_STAT_SEL_REG_TOTAL_SIZE 8 +#define CP_STAT_SEL_REG(attr_sel, stallperf_sel) \ + ((((unsigned long)(attr_sel)) << CP_STAT_SEL_REG_ATTR_SEL_SHIFT) | \ + (((unsigned long)(stallperf_sel)) << CP_STAT_SEL_REG_STALLPERF_SEL_SHIFT)) + +/* +* cp_stallperf_sel enum +*/ +#define STALLPERF_ZERO 0x00000000 +#define STALLPERF_ONE 0x00000001 +#define ELEMQ_FULL 0x00000002 +#define MISSQ_FULL 0x00000003 +#define MEMREQ_FULL 0x00000004 +#define VC_STATCNT7 0x00000005 +#define VC_MISS_REP_FULL 0x00000006 +#define VC_STALL_STMBUFLOW 0x00000007 +#define VTX_CNT 0x00000008 +#define ALL_STALL 0x00000009 +#define CP_STALLPERF_SEL_UNUSED_10 0x0000000a +#define CP_STALLPERF_SEL_UNUSED_11 0x0000000b +#define CP_STALLPERF_SEL_UNUSED_12 0x0000000c +#define CP_STALLPERF_SEL_UNUSED_13 0x0000000d +#define CP_STALLPERF_SEL_UNUSED_14 0x0000000e +#define CP_STALLPERF_SEL_UNUSED_15 0x0000000f + +/* +* cp_array_addr value +*/ +#define ATTR_ARRAY_POS 0x0 +#define ATTR_ARRAY_NRM 0x1 +#define ATTR_ARRAY_COL0 0x2 +#define ATTR_ARRAY_COL1 0x3 +#define ATTR_ARRAY_TEX0 0x4 +#define ATTR_ARRAY_TEX1 0x5 +#define ATTR_ARRAY_TEX2 0x6 +#define ATTR_ARRAY_TEX3 0x7 +#define ATTR_ARRAY_TEX4 0x8 +#define ATTR_ARRAY_TEX5 0x9 +#define ATTR_ARRAY_TEX6 0xa +#define ATTR_ARRAY_TEX7 0xb +#define ATTR_ARRAY_XFINDREGA 0xc +#define ATTR_ARRAY_XFINDREGB 0xd +#define ATTR_ARRAY_XFINDREGC 0xe +#define ATTR_ARRAY_XFINDREGD 0xf + +/* +* cp_xf_loadregs struct +*/ +#define CP_XF_LOADREGS_ADDR_SIZE 16 +#define CP_XF_LOADREGS_ADDR_SHIFT 0 +#define CP_XF_LOADREGS_ADDR_MASK 0x0000ffff +#define CP_XF_LOADREGS_GET_ADDR(cp_xf_loadregs) \ + ((((unsigned long)(cp_xf_loadregs)) & CP_XF_LOADREGS_ADDR_MASK) >> CP_XF_LOADREGS_ADDR_SHIFT) +#define CP_XF_LOADREGS_SET_ADDR(cp_xf_loadregs, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_XF_LOADREGS_ADDR_SIZE)-1))); \ + cp_xf_loadregs = (((unsigned long)(cp_xf_loadregs)) & ~CP_XF_LOADREGS_ADDR_MASK) | (((unsigned long)(addr)) << CP_XF_LOADREGS_ADDR_SHIFT);\ +} +#define CP_XF_LOADREGS_CNT_SIZE 4 +#define CP_XF_LOADREGS_CNT_SHIFT 16 +#define CP_XF_LOADREGS_CNT_MASK 0x000f0000 +#define CP_XF_LOADREGS_GET_CNT(cp_xf_loadregs) \ + ((((unsigned long)(cp_xf_loadregs)) & CP_XF_LOADREGS_CNT_MASK) >> CP_XF_LOADREGS_CNT_SHIFT) +#define CP_XF_LOADREGS_SET_CNT(cp_xf_loadregs, cnt) { \ + FDL_ASSERT(!((cnt) & ~((1 << CP_XF_LOADREGS_CNT_SIZE)-1))); \ + cp_xf_loadregs = (((unsigned long)(cp_xf_loadregs)) & ~CP_XF_LOADREGS_CNT_MASK) | (((unsigned long)(cnt)) << CP_XF_LOADREGS_CNT_SHIFT);\ +} +#define CP_XF_LOADREGS_TOTAL_SIZE 20 +#define CP_XF_LOADREGS_UNUSED_SIZE 12 + +#define CP_XF_LOADREGS(addr, cnt) \ + ((((unsigned long)(addr)) << CP_XF_LOADREGS_ADDR_SHIFT) | \ + (((unsigned long)(cnt)) << CP_XF_LOADREGS_CNT_SHIFT)) + +/* +* cp_xf_loadindex struct +*/ +#define CP_XF_LOADINDEX_ADDR_SIZE 12 +#define CP_XF_LOADINDEX_ADDR_SHIFT 0 +#define CP_XF_LOADINDEX_ADDR_MASK 0x00000fff +#define CP_XF_LOADINDEX_GET_ADDR(cp_xf_loadindex) \ + ((((unsigned long)(cp_xf_loadindex)) & CP_XF_LOADINDEX_ADDR_MASK) >> CP_XF_LOADINDEX_ADDR_SHIFT) +#define CP_XF_LOADINDEX_SET_ADDR(cp_xf_loadindex, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_XF_LOADINDEX_ADDR_SIZE)-1))); \ + cp_xf_loadindex = (((unsigned long)(cp_xf_loadindex)) & ~CP_XF_LOADINDEX_ADDR_MASK) | (((unsigned long)(addr)) << CP_XF_LOADINDEX_ADDR_SHIFT);\ +} +#define CP_XF_LOADINDEX_CNT_SIZE 4 +#define CP_XF_LOADINDEX_CNT_SHIFT 12 +#define CP_XF_LOADINDEX_CNT_MASK 0x0000f000 +#define CP_XF_LOADINDEX_GET_CNT(cp_xf_loadindex) \ + ((((unsigned long)(cp_xf_loadindex)) & CP_XF_LOADINDEX_CNT_MASK) >> CP_XF_LOADINDEX_CNT_SHIFT) +#define CP_XF_LOADINDEX_SET_CNT(cp_xf_loadindex, cnt) { \ + FDL_ASSERT(!((cnt) & ~((1 << CP_XF_LOADINDEX_CNT_SIZE)-1))); \ + cp_xf_loadindex = (((unsigned long)(cp_xf_loadindex)) & ~CP_XF_LOADINDEX_CNT_MASK) | (((unsigned long)(cnt)) << CP_XF_LOADINDEX_CNT_SHIFT);\ +} +#define CP_XF_LOADINDEX_IDX_SIZE 16 +#define CP_XF_LOADINDEX_IDX_SHIFT 16 +#define CP_XF_LOADINDEX_IDX_MASK 0xffff0000 +#define CP_XF_LOADINDEX_GET_IDX(cp_xf_loadindex) \ + ((((unsigned long)(cp_xf_loadindex)) & CP_XF_LOADINDEX_IDX_MASK) >> CP_XF_LOADINDEX_IDX_SHIFT) +#define CP_XF_LOADINDEX_SET_IDX(cp_xf_loadindex, idx) { \ + FDL_ASSERT(!((idx) & ~((1 << CP_XF_LOADINDEX_IDX_SIZE)-1))); \ + cp_xf_loadindex = (((unsigned long)(cp_xf_loadindex)) & ~CP_XF_LOADINDEX_IDX_MASK) | (((unsigned long)(idx)) << CP_XF_LOADINDEX_IDX_SHIFT);\ +} +#define CP_XF_LOADINDEX_TOTAL_SIZE 32 +#define CP_XF_LOADINDEX(addr, cnt, idx) \ + ((((unsigned long)(addr)) << CP_XF_LOADINDEX_ADDR_SHIFT) | \ + (((unsigned long)(cnt)) << CP_XF_LOADINDEX_CNT_SHIFT) | \ + (((unsigned long)(idx)) << CP_XF_LOADINDEX_IDX_SHIFT)) + +/* +* cp_callobj_d1 struct +*/ +#define CP_CALLOBJ_D1_PAD0_SIZE 5 +#define CP_CALLOBJ_D1_PAD0_SHIFT 0 +#define CP_CALLOBJ_D1_PAD0_MASK 0x0000001f +#define CP_CALLOBJ_D1_GET_PAD0(cp_callobj_d1) \ + ((((unsigned long)(cp_callobj_d1)) & CP_CALLOBJ_D1_PAD0_MASK) >> CP_CALLOBJ_D1_PAD0_SHIFT) +#define CP_CALLOBJ_D1_SET_PAD0(cp_callobj_d1, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_CALLOBJ_D1_PAD0_SIZE)-1))); \ + cp_callobj_d1 = (((unsigned long)(cp_callobj_d1)) & ~CP_CALLOBJ_D1_PAD0_MASK) | (((unsigned long)(pad0)) << CP_CALLOBJ_D1_PAD0_SHIFT);\ +} +#define CP_CALLOBJ_D1_ADDR_SIZE 24 +#define CP_CALLOBJ_D1_ADDR_SHIFT 5 +#define CP_CALLOBJ_D1_ADDR_MASK 0x1fffffe0 +#define CP_CALLOBJ_D1_GET_ADDR(cp_callobj_d1) \ + ((((unsigned long)(cp_callobj_d1)) & CP_CALLOBJ_D1_ADDR_MASK) >> CP_CALLOBJ_D1_ADDR_SHIFT) +#define CP_CALLOBJ_D1_SET_ADDR(cp_callobj_d1, addr) { \ + FDL_ASSERT(!((addr) & ~((1 << CP_CALLOBJ_D1_ADDR_SIZE)-1))); \ + cp_callobj_d1 = (((unsigned long)(cp_callobj_d1)) & ~CP_CALLOBJ_D1_ADDR_MASK) | (((unsigned long)(addr)) << CP_CALLOBJ_D1_ADDR_SHIFT);\ +} +#define CP_CALLOBJ_D1_TOTAL_SIZE 29 +#define CP_CALLOBJ_D1_UNUSED_SIZE 3 + +#define CP_CALLOBJ_D1(addr) \ + ((((unsigned long)(addr)) << CP_CALLOBJ_D1_ADDR_SHIFT)) + +/* +* cp_callobj_d2 struct +*/ +#define CP_CALLOBJ_D2_PAD0_SIZE 5 +#define CP_CALLOBJ_D2_PAD0_SHIFT 0 +#define CP_CALLOBJ_D2_PAD0_MASK 0x0000001f +#define CP_CALLOBJ_D2_GET_PAD0(cp_callobj_d2) \ + ((((unsigned long)(cp_callobj_d2)) & CP_CALLOBJ_D2_PAD0_MASK) >> CP_CALLOBJ_D2_PAD0_SHIFT) +#define CP_CALLOBJ_D2_SET_PAD0(cp_callobj_d2, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << CP_CALLOBJ_D2_PAD0_SIZE)-1))); \ + cp_callobj_d2 = (((unsigned long)(cp_callobj_d2)) & ~CP_CALLOBJ_D2_PAD0_MASK) | (((unsigned long)(pad0)) << CP_CALLOBJ_D2_PAD0_SHIFT);\ +} +#define CP_CALLOBJ_D2_CNT_SIZE 24 +#define CP_CALLOBJ_D2_CNT_SHIFT 5 +#define CP_CALLOBJ_D2_CNT_MASK 0x1fffffe0 +#define CP_CALLOBJ_D2_GET_CNT(cp_callobj_d2) \ + ((((unsigned long)(cp_callobj_d2)) & CP_CALLOBJ_D2_CNT_MASK) >> CP_CALLOBJ_D2_CNT_SHIFT) +#define CP_CALLOBJ_D2_SET_CNT(cp_callobj_d2, cnt) { \ + FDL_ASSERT(!((cnt) & ~((1 << CP_CALLOBJ_D2_CNT_SIZE)-1))); \ + cp_callobj_d2 = (((unsigned long)(cp_callobj_d2)) & ~CP_CALLOBJ_D2_CNT_MASK) | (((unsigned long)(cnt)) << CP_CALLOBJ_D2_CNT_SHIFT);\ +} +#define CP_CALLOBJ_D2_TOTAL_SIZE 29 +#define CP_CALLOBJ_D2_UNUSED_SIZE 3 + +#define CP_CALLOBJ_D2(cnt) \ + ((((unsigned long)(cnt)) << CP_CALLOBJ_D2_CNT_SHIFT)) + + + +#define SC_CP_OPCODE_SET_INDEX(line, cp_opcode,index) \ + FAST_GPFLAGSET(line, cp_opcode,index,CP_OPCODE_INDEX) + +#define SC_CP_OPCODE_SET_CMD(line, cp_opcode,cmd) \ + FAST_GPFLAGSET(line, cp_opcode,cmd,CP_OPCODE_CMD) + +#define SC_CP_STREAM_REG_SET_INDEX(line, cp_stream_reg,index) \ + FAST_GPFLAGSET(line, cp_stream_reg,index,CP_STREAM_REG_INDEX) + +#define SC_CP_STREAM_REG_SET_ADDR(line, cp_stream_reg,addr) \ + FAST_GPFLAGSET(line, cp_stream_reg,addr,CP_STREAM_REG_ADDR) + +#define SC_CP_REG_STATUS_SET_OVFL(line, cp_reg_status,ovfl) \ + FAST_GPFLAGSET(line, cp_reg_status,ovfl,CP_REG_STATUS_OVFL) + +#define SC_CP_REG_STATUS_SET_UNFL(line, cp_reg_status,unfl) \ + FAST_GPFLAGSET(line, cp_reg_status,unfl,CP_REG_STATUS_UNFL) + +#define SC_CP_REG_STATUS_SET_FIFO_RDIDLE(line, cp_reg_status,fifo_rdidle) \ + FAST_GPFLAGSET(line, cp_reg_status,fifo_rdidle,CP_REG_STATUS_FIFO_RDIDLE) + +#define SC_CP_REG_STATUS_SET_CPIDLE(line, cp_reg_status,cpidle) \ + FAST_GPFLAGSET(line, cp_reg_status,cpidle,CP_REG_STATUS_CPIDLE) + +#define SC_CP_REG_STATUS_SET_FIFOBRK(line, cp_reg_status,fifobrk) \ + FAST_GPFLAGSET(line, cp_reg_status,fifobrk,CP_REG_STATUS_FIFOBRK) + +#define SC_CP_REG_ENABLE_SET_FIFORD(line, cp_reg_enable,fiford) \ + FAST_GPFLAGSET(line, cp_reg_enable,fiford,CP_REG_ENABLE_FIFORD) + +#define SC_CP_REG_ENABLE_SET_FIFOBRK(line, cp_reg_enable,fifobrk) \ + FAST_GPFLAGSET(line, cp_reg_enable,fifobrk,CP_REG_ENABLE_FIFOBRK) + +#define SC_CP_REG_ENABLE_SET_OVFLINT(line, cp_reg_enable,ovflint) \ + FAST_GPFLAGSET(line, cp_reg_enable,ovflint,CP_REG_ENABLE_OVFLINT) + +#define SC_CP_REG_ENABLE_SET_UNFLINT(line, cp_reg_enable,unflint) \ + FAST_GPFLAGSET(line, cp_reg_enable,unflint,CP_REG_ENABLE_UNFLINT) + +#define SC_CP_REG_ENABLE_SET_WRPTRINC(line, cp_reg_enable,wrptrinc) \ + FAST_GPFLAGSET(line, cp_reg_enable,wrptrinc,CP_REG_ENABLE_WRPTRINC) + +#define SC_CP_REG_ENABLE_SET_FIFOBRKINT(line, cp_reg_enable,fifobrkint) \ + FAST_GPFLAGSET(line, cp_reg_enable,fifobrkint,CP_REG_ENABLE_FIFOBRKINT) + +#define SC_CP_REG_CLR_SET_OVFLINT(line, cp_reg_clr,ovflint) \ + FAST_GPFLAGSET(line, cp_reg_clr,ovflint,CP_REG_CLR_OVFLINT) + +#define SC_CP_REG_CLR_SET_UNFLINT(line, cp_reg_clr,unflint) \ + FAST_GPFLAGSET(line, cp_reg_clr,unflint,CP_REG_CLR_UNFLINT) + +#define SC_CP_REG_CLR_SET_PERFCNT(line, cp_reg_clr,perfcnt) \ + FAST_GPFLAGSET(line, cp_reg_clr,perfcnt,CP_REG_CLR_PERFCNT) + +#define SC_CP_REG_MEMPERFSEL_SET_PERFSEL(line, cp_reg_memperfsel,perfsel) \ + FAST_GPFLAGSET(line, cp_reg_memperfsel,perfsel,CP_REG_MEMPERFSEL_PERFSEL) + +#define SC_CP_REG_FIFO_BASEL_SET_PAD0(line, cp_reg_fifo_basel,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_basel,pad0,CP_REG_FIFO_BASEL_PAD0) + +#define SC_CP_REG_FIFO_BASEL_SET_ADDR(line, cp_reg_fifo_basel,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_basel,addr,CP_REG_FIFO_BASEL_ADDR) + +#define SC_CP_REG_FIFO_BASEH_SET_ADDR(line, cp_reg_fifo_baseh,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_baseh,addr,CP_REG_FIFO_BASEH_ADDR) + +#define SC_CP_REG_FIFO_TOPL_SET_PAD0(line, cp_reg_fifo_topl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_topl,pad0,CP_REG_FIFO_TOPL_PAD0) + +#define SC_CP_REG_FIFO_TOPL_SET_ADDR(line, cp_reg_fifo_topl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_topl,addr,CP_REG_FIFO_TOPL_ADDR) + +#define SC_CP_REG_FIFO_TOPH_SET_ADDR(line, cp_reg_fifo_toph,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_toph,addr,CP_REG_FIFO_TOPH_ADDR) + +#define SC_CP_REG_FIFO_HICNTL_SET_PAD0(line, cp_reg_fifo_hicntl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_hicntl,pad0,CP_REG_FIFO_HICNTL_PAD0) + +#define SC_CP_REG_FIFO_HICNTL_SET_ADDR(line, cp_reg_fifo_hicntl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_hicntl,addr,CP_REG_FIFO_HICNTL_ADDR) + +#define SC_CP_REG_FIFO_HICNTH_SET_ADDR(line, cp_reg_fifo_hicnth,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_hicnth,addr,CP_REG_FIFO_HICNTH_ADDR) + +#define SC_CP_REG_FIFO_LOCNTL_SET_PAD0(line, cp_reg_fifo_locntl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_locntl,pad0,CP_REG_FIFO_LOCNTL_PAD0) + +#define SC_CP_REG_FIFO_LOCNTL_SET_ADDR(line, cp_reg_fifo_locntl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_locntl,addr,CP_REG_FIFO_LOCNTL_ADDR) + +#define SC_CP_REG_FIFO_LOCNTH_SET_ADDR(line, cp_reg_fifo_locnth,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_locnth,addr,CP_REG_FIFO_LOCNTH_ADDR) + +#define SC_CP_REG_FIFO_COUNTL_SET_PAD0(line, cp_reg_fifo_countl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_countl,pad0,CP_REG_FIFO_COUNTL_PAD0) + +#define SC_CP_REG_FIFO_COUNTL_SET_ADDR(line, cp_reg_fifo_countl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_countl,addr,CP_REG_FIFO_COUNTL_ADDR) + +#define SC_CP_REG_FIFO_COUNTH_SET_ADDR(line, cp_reg_fifo_counth,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_counth,addr,CP_REG_FIFO_COUNTH_ADDR) + +#define SC_CP_REG_FIFO_WPTRL_SET_PAD0(line, cp_reg_fifo_wptrl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_wptrl,pad0,CP_REG_FIFO_WPTRL_PAD0) + +#define SC_CP_REG_FIFO_WPTRL_SET_ADDR(line, cp_reg_fifo_wptrl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_wptrl,addr,CP_REG_FIFO_WPTRL_ADDR) + +#define SC_CP_REG_FIFO_WPTRH_SET_ADDR(line, cp_reg_fifo_wptrh,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_wptrh,addr,CP_REG_FIFO_WPTRH_ADDR) + +#define SC_CP_REG_FIFO_RPTRL_SET_PAD0(line, cp_reg_fifo_rptrl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_rptrl,pad0,CP_REG_FIFO_RPTRL_PAD0) + +#define SC_CP_REG_FIFO_RPTRL_SET_ADDR(line, cp_reg_fifo_rptrl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_rptrl,addr,CP_REG_FIFO_RPTRL_ADDR) + +#define SC_CP_REG_FIFO_RPTRH_SET_ADDR(line, cp_reg_fifo_rptrh,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_rptrh,addr,CP_REG_FIFO_RPTRH_ADDR) + +#define SC_CP_REG_FIFO_BRKL_SET_PAD0(line, cp_reg_fifo_brkl,pad0) \ + FAST_GPFLAGSET(line, cp_reg_fifo_brkl,pad0,CP_REG_FIFO_BRKL_PAD0) + +#define SC_CP_REG_FIFO_BRKL_SET_ADDR(line, cp_reg_fifo_brkl,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_brkl,addr,CP_REG_FIFO_BRKL_ADDR) + +#define SC_CP_REG_FIFO_BRKH_SET_ADDR(line, cp_reg_fifo_brkh,addr) \ + FAST_GPFLAGSET(line, cp_reg_fifo_brkh,addr,CP_REG_FIFO_BRKH_ADDR) + +#define SC_CP_VCD_REG_LO_SET_PMIDX(line, cp_vcd_reg_lo,pmidx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,pmidx,CP_VCD_REG_LO_PMIDX) + +#define SC_CP_VCD_REG_LO_SET_T0MIDX(line, cp_vcd_reg_lo,t0midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t0midx,CP_VCD_REG_LO_T0MIDX) + +#define SC_CP_VCD_REG_LO_SET_T1MIDX(line, cp_vcd_reg_lo,t1midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t1midx,CP_VCD_REG_LO_T1MIDX) + +#define SC_CP_VCD_REG_LO_SET_T2MIDX(line, cp_vcd_reg_lo,t2midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t2midx,CP_VCD_REG_LO_T2MIDX) + +#define SC_CP_VCD_REG_LO_SET_T3MIDX(line, cp_vcd_reg_lo,t3midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t3midx,CP_VCD_REG_LO_T3MIDX) + +#define SC_CP_VCD_REG_LO_SET_T4MIDX(line, cp_vcd_reg_lo,t4midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t4midx,CP_VCD_REG_LO_T4MIDX) + +#define SC_CP_VCD_REG_LO_SET_T5MIDX(line, cp_vcd_reg_lo,t5midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t5midx,CP_VCD_REG_LO_T5MIDX) + +#define SC_CP_VCD_REG_LO_SET_T6MIDX(line, cp_vcd_reg_lo,t6midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t6midx,CP_VCD_REG_LO_T6MIDX) + +#define SC_CP_VCD_REG_LO_SET_T7MIDX(line, cp_vcd_reg_lo,t7midx) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,t7midx,CP_VCD_REG_LO_T7MIDX) + +#define SC_CP_VCD_REG_LO_SET_POS(line, cp_vcd_reg_lo,pos) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,pos,CP_VCD_REG_LO_POS) + +#define SC_CP_VCD_REG_LO_SET_NRM(line, cp_vcd_reg_lo,nrm) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,nrm,CP_VCD_REG_LO_NRM) + +#define SC_CP_VCD_REG_LO_SET_COL0(line, cp_vcd_reg_lo,col0) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,col0,CP_VCD_REG_LO_COL0) + +#define SC_CP_VCD_REG_LO_SET_COL1(line, cp_vcd_reg_lo,col1) \ + FAST_GPFLAGSET(line, cp_vcd_reg_lo,col1,CP_VCD_REG_LO_COL1) + +#define SC_CP_VCD_REG_HI_SET_TEX0(line, cp_vcd_reg_hi,tex0) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex0,CP_VCD_REG_HI_TEX0) + +#define SC_CP_VCD_REG_HI_SET_TEX1(line, cp_vcd_reg_hi,tex1) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex1,CP_VCD_REG_HI_TEX1) + +#define SC_CP_VCD_REG_HI_SET_TEX2(line, cp_vcd_reg_hi,tex2) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex2,CP_VCD_REG_HI_TEX2) + +#define SC_CP_VCD_REG_HI_SET_TEX3(line, cp_vcd_reg_hi,tex3) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex3,CP_VCD_REG_HI_TEX3) + +#define SC_CP_VCD_REG_HI_SET_TEX4(line, cp_vcd_reg_hi,tex4) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex4,CP_VCD_REG_HI_TEX4) + +#define SC_CP_VCD_REG_HI_SET_TEX5(line, cp_vcd_reg_hi,tex5) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex5,CP_VCD_REG_HI_TEX5) + +#define SC_CP_VCD_REG_HI_SET_TEX6(line, cp_vcd_reg_hi,tex6) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex6,CP_VCD_REG_HI_TEX6) + +#define SC_CP_VCD_REG_HI_SET_TEX7(line, cp_vcd_reg_hi,tex7) \ + FAST_GPFLAGSET(line, cp_vcd_reg_hi,tex7,CP_VCD_REG_HI_TEX7) + +#define SC_CP_VAT_REG_A_SET_POSCNT(line, cp_vat_reg_a,posCnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,posCnt,CP_VAT_REG_A_POSCNT) + +#define SC_CP_VAT_REG_A_SET_POSFMT(line, cp_vat_reg_a,posFmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,posFmt,CP_VAT_REG_A_POSFMT) + +#define SC_CP_VAT_REG_A_SET_POSSHFT(line, cp_vat_reg_a,posShft) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,posShft,CP_VAT_REG_A_POSSHFT) + +#define SC_CP_VAT_REG_A_SET_NRMCNT(line, cp_vat_reg_a,nrmCnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,nrmCnt,CP_VAT_REG_A_NRMCNT) + +#define SC_CP_VAT_REG_A_SET_NRMFMT(line, cp_vat_reg_a,nrmFmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,nrmFmt,CP_VAT_REG_A_NRMFMT) + +#define SC_CP_VAT_REG_A_SET_COL0CNT(line, cp_vat_reg_a,Col0Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,Col0Cnt,CP_VAT_REG_A_COL0CNT) + +#define SC_CP_VAT_REG_A_SET_COL0FMT(line, cp_vat_reg_a,Col0Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,Col0Fmt,CP_VAT_REG_A_COL0FMT) + +#define SC_CP_VAT_REG_A_SET_COL1CNT(line, cp_vat_reg_a,Col1Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,Col1Cnt,CP_VAT_REG_A_COL1CNT) + +#define SC_CP_VAT_REG_A_SET_COL1FMT(line, cp_vat_reg_a,Col1Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,Col1Fmt,CP_VAT_REG_A_COL1FMT) + +#define SC_CP_VAT_REG_A_SET_TEX0CNT(line, cp_vat_reg_a,tex0Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,tex0Cnt,CP_VAT_REG_A_TEX0CNT) + +#define SC_CP_VAT_REG_A_SET_TEX0FMT(line, cp_vat_reg_a,tex0Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,tex0Fmt,CP_VAT_REG_A_TEX0FMT) + +#define SC_CP_VAT_REG_A_SET_TEX0SHFT(line, cp_vat_reg_a,tex0Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,tex0Shft,CP_VAT_REG_A_TEX0SHFT) + +#define SC_CP_VAT_REG_A_SET_BYTEDEQUANT(line, cp_vat_reg_a,byteDequant) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,byteDequant,CP_VAT_REG_A_BYTEDEQUANT) + +#define SC_CP_VAT_REG_A_SET_NORMALINDEX3(line, cp_vat_reg_a,normalIndex3) \ + FAST_GPFLAGSET(line, cp_vat_reg_a,normalIndex3,CP_VAT_REG_A_NORMALINDEX3) + +#define SC_CP_VAT_REG_B_SET_TEX1CNT(line, cp_vat_reg_b,tex1Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex1Cnt,CP_VAT_REG_B_TEX1CNT) + +#define SC_CP_VAT_REG_B_SET_TEX1FMT(line, cp_vat_reg_b,tex1Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex1Fmt,CP_VAT_REG_B_TEX1FMT) + +#define SC_CP_VAT_REG_B_SET_TEX1SHFT(line, cp_vat_reg_b,tex1Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex1Shft,CP_VAT_REG_B_TEX1SHFT) + +#define SC_CP_VAT_REG_B_SET_TEX2CNT(line, cp_vat_reg_b,tex2Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex2Cnt,CP_VAT_REG_B_TEX2CNT) + +#define SC_CP_VAT_REG_B_SET_TEX2FMT(line, cp_vat_reg_b,tex2Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex2Fmt,CP_VAT_REG_B_TEX2FMT) + +#define SC_CP_VAT_REG_B_SET_TEX2SHFT(line, cp_vat_reg_b,tex2Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex2Shft,CP_VAT_REG_B_TEX2SHFT) + +#define SC_CP_VAT_REG_B_SET_TEX3CNT(line, cp_vat_reg_b,tex3Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex3Cnt,CP_VAT_REG_B_TEX3CNT) + +#define SC_CP_VAT_REG_B_SET_TEX3FMT(line, cp_vat_reg_b,tex3Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex3Fmt,CP_VAT_REG_B_TEX3FMT) + +#define SC_CP_VAT_REG_B_SET_TEX3SHFT(line, cp_vat_reg_b,tex3Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex3Shft,CP_VAT_REG_B_TEX3SHFT) + +#define SC_CP_VAT_REG_B_SET_TEX4CNT(line, cp_vat_reg_b,tex4Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex4Cnt,CP_VAT_REG_B_TEX4CNT) + +#define SC_CP_VAT_REG_B_SET_TEX4FMT(line, cp_vat_reg_b,tex4Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,tex4Fmt,CP_VAT_REG_B_TEX4FMT) + +#define SC_CP_VAT_REG_B_SET_VCACHE_ENHANCE(line, cp_vat_reg_b,vcache_enhance) \ + FAST_GPFLAGSET(line, cp_vat_reg_b,vcache_enhance,CP_VAT_REG_B_VCACHE_ENHANCE) + +#define SC_CP_VAT_REG_C_SET_TEX4SHFT(line, cp_vat_reg_c,tex4Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex4Shft,CP_VAT_REG_C_TEX4SHFT) + +#define SC_CP_VAT_REG_C_SET_TEX5CNT(line, cp_vat_reg_c,tex5Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex5Cnt,CP_VAT_REG_C_TEX5CNT) + +#define SC_CP_VAT_REG_C_SET_TEX5FMT(line, cp_vat_reg_c,tex5Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex5Fmt,CP_VAT_REG_C_TEX5FMT) + +#define SC_CP_VAT_REG_C_SET_TEX5SHFT(line, cp_vat_reg_c,tex5Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex5Shft,CP_VAT_REG_C_TEX5SHFT) + +#define SC_CP_VAT_REG_C_SET_TEX6CNT(line, cp_vat_reg_c,tex6Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex6Cnt,CP_VAT_REG_C_TEX6CNT) + +#define SC_CP_VAT_REG_C_SET_TEX6FMT(line, cp_vat_reg_c,tex6Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex6Fmt,CP_VAT_REG_C_TEX6FMT) + +#define SC_CP_VAT_REG_C_SET_TEX6SHFT(line, cp_vat_reg_c,tex6Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex6Shft,CP_VAT_REG_C_TEX6SHFT) + +#define SC_CP_VAT_REG_C_SET_TEX7CNT(line, cp_vat_reg_c,tex7Cnt) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex7Cnt,CP_VAT_REG_C_TEX7CNT) + +#define SC_CP_VAT_REG_C_SET_TEX7FMT(line, cp_vat_reg_c,tex7Fmt) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex7Fmt,CP_VAT_REG_C_TEX7FMT) + +#define SC_CP_VAT_REG_C_SET_TEX7SHFT(line, cp_vat_reg_c,tex7Shft) \ + FAST_GPFLAGSET(line, cp_vat_reg_c,tex7Shft,CP_VAT_REG_C_TEX7SHFT) + +#define SC_CP_MATIDX_REG_A_SET_POSIDX(line, cp_matidx_reg_a,posIdx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_a,posIdx,CP_MATIDX_REG_A_POSIDX) + +#define SC_CP_MATIDX_REG_A_SET_TEX0IDX(line, cp_matidx_reg_a,tex0Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_a,tex0Idx,CP_MATIDX_REG_A_TEX0IDX) + +#define SC_CP_MATIDX_REG_A_SET_TEX1IDX(line, cp_matidx_reg_a,tex1Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_a,tex1Idx,CP_MATIDX_REG_A_TEX1IDX) + +#define SC_CP_MATIDX_REG_A_SET_TEX2IDX(line, cp_matidx_reg_a,tex2Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_a,tex2Idx,CP_MATIDX_REG_A_TEX2IDX) + +#define SC_CP_MATIDX_REG_A_SET_TEX3IDX(line, cp_matidx_reg_a,tex3Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_a,tex3Idx,CP_MATIDX_REG_A_TEX3IDX) + +#define SC_CP_MATIDX_REG_B_SET_TEX4IDX(line, cp_matidx_reg_b,tex4Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_b,tex4Idx,CP_MATIDX_REG_B_TEX4IDX) + +#define SC_CP_MATIDX_REG_B_SET_TEX5IDX(line, cp_matidx_reg_b,tex5Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_b,tex5Idx,CP_MATIDX_REG_B_TEX5IDX) + +#define SC_CP_MATIDX_REG_B_SET_TEX6IDX(line, cp_matidx_reg_b,tex6Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_b,tex6Idx,CP_MATIDX_REG_B_TEX6IDX) + +#define SC_CP_MATIDX_REG_B_SET_TEX7IDX(line, cp_matidx_reg_b,tex7Idx) \ + FAST_GPFLAGSET(line, cp_matidx_reg_b,tex7Idx,CP_MATIDX_REG_B_TEX7IDX) + +#define SC_CP_ARRAY_BASE_REG_SET_BASE(line, cp_array_base_reg,base) \ + FAST_GPFLAGSET(line, cp_array_base_reg,base,CP_ARRAY_BASE_REG_BASE) + +#define SC_CP_ARRAY_BASE_REG_SET_PAD0(line, cp_array_base_reg,pad0) \ + FAST_GPFLAGSET(line, cp_array_base_reg,pad0,CP_ARRAY_BASE_REG_PAD0) + +#define SC_CP_ARRAY_STRIDE_REG_SET_STRIDE(line, cp_array_stride_reg,stride) \ + FAST_GPFLAGSET(line, cp_array_stride_reg,stride,CP_ARRAY_STRIDE_REG_STRIDE) + +#define SC_CP_ARRAY_STRIDE_REG_SET_PAD0(line, cp_array_stride_reg,pad0) \ + FAST_GPFLAGSET(line, cp_array_stride_reg,pad0,CP_ARRAY_STRIDE_REG_PAD0) + +#define SC_CP_STAT_ENABLE_REG_SET_VC_STAT(line, cp_stat_enable_reg,vc_stat) \ + FAST_GPFLAGSET(line, cp_stat_enable_reg,vc_stat,CP_STAT_ENABLE_REG_VC_STAT) + +#define SC_CP_STAT_ENABLE_REG_SET_PAD0(line, cp_stat_enable_reg,pad0) \ + FAST_GPFLAGSET(line, cp_stat_enable_reg,pad0,CP_STAT_ENABLE_REG_PAD0) + +#define SC_CP_STAT_ENABLE_REG_SET_FRCLK(line, cp_stat_enable_reg,frclk) \ + FAST_GPFLAGSET(line, cp_stat_enable_reg,frclk,CP_STAT_ENABLE_REG_FRCLK) + +#define SC_CP_STAT_SEL_REG_SET_ATTR_SEL(line, cp_stat_sel_reg,attr_sel) \ + FAST_GPFLAGSET(line, cp_stat_sel_reg,attr_sel,CP_STAT_SEL_REG_ATTR_SEL) + +#define SC_CP_STAT_SEL_REG_SET_STALLPERF_SEL(line, cp_stat_sel_reg,stallperf_sel) \ + FAST_GPFLAGSET(line, cp_stat_sel_reg,stallperf_sel,CP_STAT_SEL_REG_STALLPERF_SEL) + +#define SC_CP_XF_LOADREGS_SET_ADDR(line, cp_xf_loadregs,addr) \ + FAST_GPFLAGSET(line, cp_xf_loadregs,addr,CP_XF_LOADREGS_ADDR) + +#define SC_CP_XF_LOADREGS_SET_CNT(line, cp_xf_loadregs,cnt) \ + FAST_GPFLAGSET(line, cp_xf_loadregs,cnt,CP_XF_LOADREGS_CNT) + +#define SC_CP_XF_LOADINDEX_SET_ADDR(line, cp_xf_loadindex,addr) \ + FAST_GPFLAGSET(line, cp_xf_loadindex,addr,CP_XF_LOADINDEX_ADDR) + +#define SC_CP_XF_LOADINDEX_SET_CNT(line, cp_xf_loadindex,cnt) \ + FAST_GPFLAGSET(line, cp_xf_loadindex,cnt,CP_XF_LOADINDEX_CNT) + +#define SC_CP_XF_LOADINDEX_SET_IDX(line, cp_xf_loadindex,idx) \ + FAST_GPFLAGSET(line, cp_xf_loadindex,idx,CP_XF_LOADINDEX_IDX) + +#define SC_CP_CALLOBJ_D1_SET_PAD0(line, cp_callobj_d1,pad0) \ + FAST_GPFLAGSET(line, cp_callobj_d1,pad0,CP_CALLOBJ_D1_PAD0) + +#define SC_CP_CALLOBJ_D1_SET_ADDR(line, cp_callobj_d1,addr) \ + FAST_GPFLAGSET(line, cp_callobj_d1,addr,CP_CALLOBJ_D1_ADDR) + +#define SC_CP_CALLOBJ_D2_SET_PAD0(line, cp_callobj_d2,pad0) \ + FAST_GPFLAGSET(line, cp_callobj_d2,pad0,CP_CALLOBJ_D2_PAD0) + +#define SC_CP_CALLOBJ_D2_SET_CNT(line, cp_callobj_d2,cnt) \ + FAST_GPFLAGSET(line, cp_callobj_d2,cnt,CP_CALLOBJ_D2_CNT) + +#endif /* __FDL_CP_REG_H__ */ diff --git a/include/revolution/private/gen_reg.h b/include/revolution/private/gen_reg.h new file mode 100644 index 0000000000..09aca016c0 --- /dev/null +++ b/include/revolution/private/gen_reg.h @@ -0,0 +1,163 @@ +#ifndef GEN_REG_H +#define GEN_REG_H + +#include <revolution/private/GXFDLShortcut.h> + +#define GEN_MODE_RID_SIZE 8 +#define GEN_MODE_RID_SHIFT 24 +#define GEN_MODE_RID_MASK 0xff000000 +#define GEN_MODE_GET_RID(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_RID_MASK) >> GEN_MODE_RID_SHIFT) + +#define GEN_MODE_NTEX_SIZE 4 +#define GEN_MODE_NTEX_SHIFT 0 +#define GEN_MODE_NTEX_MASK 0x0000000f +#define GEN_MODE_GET_NTEX(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_NTEX_MASK) >> GEN_MODE_NTEX_SHIFT) + +#define GEN_MODE_NTEX_SIZE 4 +#define GEN_MODE_NTEX_SHIFT 0 +#define GEN_MODE_NTEX_MASK 0x0000000f +#define GEN_MODE_GET_NTEX(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_NTEX_MASK) >> GEN_MODE_NTEX_SHIFT) + +#define GEN_MODE_NCOL_SIZE 3 +#define GEN_MODE_NCOL_SHIFT 4 +#define GEN_MODE_NCOL_MASK 0x00000070 +#define GEN_MODE_GET_NCOL(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_NCOL_MASK) >> GEN_MODE_NCOL_SHIFT) + +#define GEN_MODE_PAD0_SIZE 1 +#define GEN_MODE_PAD0_SHIFT 7 +#define GEN_MODE_PAD0_MASK 0x00000080 +#define GEN_MODE_GET_PAD0(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_PAD0_MASK) >> GEN_MODE_PAD0_SHIFT) + +#define GEN_MODE_FLAT_EN_SIZE 1 +#define GEN_MODE_FLAT_EN_SHIFT 8 +#define GEN_MODE_FLAT_EN_MASK 0x00000100 +#define GEN_MODE_GET_FLAT_EN(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_FLAT_EN_MASK) >> GEN_MODE_FLAT_EN_SHIFT) + +#define GEN_MODE_MS_EN_SIZE 1 +#define GEN_MODE_MS_EN_SHIFT 9 +#define GEN_MODE_MS_EN_MASK 0x00000200 +#define GEN_MODE_GET_MS_EN(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_MS_EN_MASK) >> GEN_MODE_MS_EN_SHIFT) + +#define GEN_MODE_NTEV_SIZE 4 +#define GEN_MODE_NTEV_SHIFT 10 +#define GEN_MODE_NTEV_MASK 0x00003c00 +#define GEN_MODE_GET_NTEV(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_NTEV_MASK) >> GEN_MODE_NTEV_SHIFT) + +#define GEN_MODE_REJECT_EN_SIZE 2 +#define GEN_MODE_REJECT_EN_SHIFT 14 +#define GEN_MODE_REJECT_EN_MASK 0x0000c000 +#define GEN_MODE_GET_REJECT_EN(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_REJECT_EN_MASK) >> GEN_MODE_REJECT_EN_SHIFT) + +#define GEN_MODE_NBMP_SIZE 3 +#define GEN_MODE_NBMP_SHIFT 16 +#define GEN_MODE_NBMP_MASK 0x00070000 +#define GEN_MODE_GET_NBMP(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_NBMP_MASK) >> GEN_MODE_NBMP_SHIFT) + +#define GEN_MODE_ZFREEZE_SIZE 1 +#define GEN_MODE_ZFREEZE_SHIFT 19 +#define GEN_MODE_ZFREEZE_MASK 0x00080000 +#define GEN_MODE_GET_ZFREEZE(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_ZFREEZE_MASK) >> GEN_MODE_ZFREEZE_SHIFT) + +#define GEN_MODE_PAD1_SIZE 4 +#define GEN_MODE_PAD1_SHIFT 20 +#define GEN_MODE_PAD1_MASK 0x00f00000 +#define GEN_MODE_GET_PAD1(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_PAD1_MASK) >> GEN_MODE_PAD1_SHIFT) + +#define GEN_MODE_RID_SIZE 8 +#define GEN_MODE_RID_SHIFT 24 +#define GEN_MODE_RID_MASK 0xff000000 +#define GEN_MODE_GET_RID(gen_mode) \ + ((((unsigned long)(gen_mode)) & GEN_MODE_RID_MASK) >> GEN_MODE_RID_SHIFT) + + +#define SC_GEN_MODE_SET_NTEX(line, gen_mode,ntex) \ + FAST_GPFLAGSET(line, gen_mode,ntex,GEN_MODE_NTEX) + +#define SC_GEN_MODE_SET_NCOL(line, gen_mode,ncol) \ + FAST_GPFLAGSET(line, gen_mode,ncol,GEN_MODE_NCOL) + +#define SC_GEN_MODE_SET_PAD0(line, gen_mode,pad0) \ + FAST_GPFLAGSET(line, gen_mode,pad0,GEN_MODE_PAD0) + +#define SC_GEN_MODE_SET_FLAT_EN(line, gen_mode,flat_en) \ + FAST_GPFLAGSET(line, gen_mode,flat_en,GEN_MODE_FLAT_EN) + +#define SC_GEN_MODE_SET_MS_EN(line, gen_mode,ms_en) \ + FAST_GPFLAGSET(line, gen_mode,ms_en,GEN_MODE_MS_EN) + +#define SC_GEN_MODE_SET_NTEV(line, gen_mode,ntev) \ + FAST_GPFLAGSET(line, gen_mode,ntev,GEN_MODE_NTEV) + +#define SC_GEN_MODE_SET_REJECT_EN(line, gen_mode,reject_en) \ + FAST_GPFLAGSET(line, gen_mode,reject_en,GEN_MODE_REJECT_EN) + +#define SC_GEN_MODE_SET_NBMP(line, gen_mode,nbmp) \ + FAST_GPFLAGSET(line, gen_mode,nbmp,GEN_MODE_NBMP) + +#define SC_GEN_MODE_SET_ZFREEZE(line, gen_mode,zfreeze) \ + FAST_GPFLAGSET(line, gen_mode,zfreeze,GEN_MODE_ZFREEZE) + +#define SC_GEN_MODE_SET_PAD1(line, gen_mode,pad1) \ + FAST_GPFLAGSET(line, gen_mode,pad1,GEN_MODE_PAD1) + +#define SC_GEN_MODE_SET_RID(line, gen_mode,rid) \ + FAST_GPFLAGSET(line, gen_mode,rid,GEN_MODE_RID) + +#define SC_GEN_MSLOC_SET_XS0(line, gen_msloc,xs0) \ + FAST_GPFLAGSET(line, gen_msloc,xs0,GEN_MSLOC_XS0) + +#define SC_GEN_MSLOC_SET_YS0(line, gen_msloc,ys0) \ + FAST_GPFLAGSET(line, gen_msloc,ys0,GEN_MSLOC_YS0) + +#define SC_GEN_MSLOC_SET_XS1(line, gen_msloc,xs1) \ + FAST_GPFLAGSET(line, gen_msloc,xs1,GEN_MSLOC_XS1) + +#define SC_GEN_MSLOC_SET_YS1(line, gen_msloc,ys1) \ + FAST_GPFLAGSET(line, gen_msloc,ys1,GEN_MSLOC_YS1) + +#define SC_GEN_MSLOC_SET_XS2(line, gen_msloc,xs2) \ + FAST_GPFLAGSET(line, gen_msloc,xs2,GEN_MSLOC_XS2) + +#define SC_GEN_MSLOC_SET_YS2(line, gen_msloc,ys2) \ + FAST_GPFLAGSET(line, gen_msloc,ys2,GEN_MSLOC_YS2) + +#define SC_GEN_MSLOC_SET_RID(line, gen_msloc,rid) \ + FAST_GPFLAGSET(line, gen_msloc,rid,GEN_MSLOC_RID) + +#define SC_GEN_COLOR_SET_ALPHA(line, gen_color,alpha) \ + FAST_GPFLAGSET(line, gen_color,alpha,GEN_COLOR_ALPHA) + +#define SC_GEN_COLOR_SET_BLUE(line, gen_color,blue) \ + FAST_GPFLAGSET(line, gen_color,blue,GEN_COLOR_BLUE) + +#define SC_GEN_COLOR_SET_GREEN(line, gen_color,green) \ + FAST_GPFLAGSET(line, gen_color,green,GEN_COLOR_GREEN) + +#define SC_GEN_COLOR_SET_RED(line, gen_color,red) \ + FAST_GPFLAGSET(line, gen_color,red,GEN_COLOR_RED) + +#define SC_GEN_Z24_COLOR_SET_BLUE(line, gen_z24_color,blue) \ + FAST_GPFLAGSET(line, gen_z24_color,blue,GEN_Z24_COLOR_BLUE) + +#define SC_GEN_Z24_COLOR_SET_GREEN(line, gen_z24_color,green) \ + FAST_GPFLAGSET(line, gen_z24_color,green,GEN_Z24_COLOR_GREEN) + +#define SC_GEN_Z24_COLOR_SET_RED(line, gen_z24_color,red) \ + FAST_GPFLAGSET(line, gen_z24_color,red,GEN_Z24_COLOR_RED) + +#define SC_GEN_Z24_COLOR_SET_PAD0(line, gen_z24_color,pad0) \ + FAST_GPFLAGSET(line, gen_z24_color,pad0,GEN_Z24_COLOR_PAD0) + +#endif // GEN_REG_H diff --git a/include/revolution/private/pe_reg.h b/include/revolution/private/pe_reg.h new file mode 100644 index 0000000000..837948a38c --- /dev/null +++ b/include/revolution/private/pe_reg.h @@ -0,0 +1,1160 @@ +#ifndef PE_REG_H +#define PE_REG_H + +#include <revolution/private/GXFDLShortcut.h> + +#define PE_REFRESH_RID_SIZE 8 +#define PE_REFRESH_RID_SHIFT 24 +#define PE_REFRESH_RID_MASK 0xff000000 +#define PE_REFRESH_GET_RID(pe_refresh) \ + ((((unsigned long)(pe_refresh)) & PE_REFRESH_RID_MASK) >> PE_REFRESH_RID_SHIFT) + +#define PE_REFRESH_ENABLE_SIZE 1 +#define PE_REFRESH_ENABLE_SHIFT 9 +#define PE_REFRESH_ENABLE_MASK 0x00000200 +#define PE_REFRESH_GET_ENABLE(pe_refresh) \ + ((((unsigned long)(pe_refresh)) & PE_REFRESH_ENABLE_MASK) >> PE_REFRESH_ENABLE_SHIFT) + +#define PE_REFRESH_INTERVAL_SIZE 9 +#define PE_REFRESH_INTERVAL_SHIFT 0 +#define PE_REFRESH_INTERVAL_MASK 0x000001ff +#define PE_REFRESH_GET_INTERVAL(pe_refresh) \ + ((((unsigned long)(pe_refresh)) & PE_REFRESH_INTERVAL_MASK) >> PE_REFRESH_INTERVAL_SHIFT) + +#define PE_REFRESH_TOTAL_SIZE 32 +#define PE_REFRESH(interval, enable, rid) \ + ((((unsigned long)(interval)) << PE_REFRESH_INTERVAL_SHIFT) | \ + (((unsigned long)(enable)) << PE_REFRESH_ENABLE_SHIFT) | \ + (((unsigned long)(rid)) << PE_REFRESH_RID_SHIFT)) + +#define PE_CHICKEN_PIWR_SIZE 1 +#define PE_CHICKEN_PIWR_SHIFT 0 +#define PE_CHICKEN_PIWR_MASK 0x00000001 +#define PE_CHICKEN_GET_PIWR(pe_chicken) \ + ((((unsigned long)(pe_chicken)) & PE_CHICKEN_PIWR_MASK) >> PE_CHICKEN_PIWR_SHIFT) + +#define PE_CHICKEN_TXCPY_FMT_SIZE 1 +#define PE_CHICKEN_TXCPY_FMT_SHIFT 1 +#define PE_CHICKEN_TXCPY_FMT_MASK 0x00000002 +#define PE_CHICKEN_GET_TXCPY_FMT(pe_chicken) \ + ((((unsigned long)(pe_chicken)) & PE_CHICKEN_TXCPY_FMT_MASK) >> PE_CHICKEN_TXCPY_FMT_SHIFT) + +#define PE_CHICKEN_TXCPY_CCV_SIZE 1 +#define PE_CHICKEN_TXCPY_CCV_SHIFT 2 +#define PE_CHICKEN_TXCPY_CCV_MASK 0x00000004 +#define PE_CHICKEN_GET_TXCPY_CCV(pe_chicken) \ + ((((unsigned long)(pe_chicken)) & PE_CHICKEN_TXCPY_CCV_MASK) >> PE_CHICKEN_TXCPY_CCV_SHIFT) + +#define PE_CHICKEN_BLENDOP_SIZE 1 +#define PE_CHICKEN_BLENDOP_SHIFT 3 +#define PE_CHICKEN_BLENDOP_MASK 0x00000008 +#define PE_CHICKEN_GET_BLENDOP(pe_chicken) \ + ((((unsigned long)(pe_chicken)) & PE_CHICKEN_BLENDOP_MASK) >> PE_CHICKEN_BLENDOP_SHIFT) + +#define PE_CHICKEN_RID_SIZE 8 +#define PE_CHICKEN_RID_SHIFT 24 +#define PE_CHICKEN_RID_MASK 0xff000000 +#define PE_CHICKEN_GET_RID(pe_chicken) \ + ((((unsigned long)(pe_chicken)) & PE_CHICKEN_RID_MASK) >> PE_CHICKEN_RID_SHIFT) + +#define PE_CMODE0_RID_SIZE 8 +#define PE_CMODE0_RID_SHIFT 24 +#define PE_CMODE0_RID_MASK 0xff000000 +#define PE_CMODE0_GET_RID(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_RID_MASK) >> PE_CMODE0_RID_SHIFT) + +#define PE_CMODE1_RID_SIZE 8 +#define PE_CMODE1_RID_SHIFT 24 +#define PE_CMODE1_RID_MASK 0xff000000 +#define PE_CMODE1_GET_RID(pe_cmode1) \ + ((((unsigned long)(pe_cmode1)) & PE_CMODE1_RID_MASK) >> PE_CMODE1_RID_SHIFT) + +#define PE_ZMODE_RID_SIZE 8 +#define PE_ZMODE_RID_SHIFT 24 +#define PE_ZMODE_RID_MASK 0xff000000 +#define PE_ZMODE_GET_RID(pe_zmode) \ + ((((unsigned long)(pe_zmode)) & PE_ZMODE_RID_MASK) >> PE_ZMODE_RID_SHIFT) + +#define PE_CONTROL_RID_SIZE 8 +#define PE_CONTROL_RID_SHIFT 24 +#define PE_CONTROL_RID_MASK 0xff000000 +#define PE_CONTROL_GET_RID(pe_control) \ + ((((unsigned long)(pe_control)) & PE_CONTROL_RID_MASK) >> PE_CONTROL_RID_SHIFT) + +#define PE_COPY_CMD_GAMMA_SIZE 2 +#define PE_COPY_CMD_GAMMA_SHIFT 7 +#define PE_COPY_CMD_GAMMA_MASK 0x00000180 +#define PE_COPY_CMD_GET_GAMMA(pe_copy_cmd) \ + ((((unsigned long)(pe_copy_cmd)) & PE_COPY_CMD_GAMMA_MASK) >> PE_COPY_CMD_GAMMA_SHIFT) + +#define PE_TOKEN_TOKEN_SIZE 16 +#define PE_TOKEN_TOKEN_SHIFT 0 +#define PE_TOKEN_TOKEN_MASK 0x0000ffff +#define PE_TOKEN_GET_TOKEN(pe_token) \ + ((((unsigned long)(pe_token)) & PE_TOKEN_TOKEN_MASK) >> PE_TOKEN_TOKEN_SHIFT) +#define PE_TOKEN_SET_TOKEN(pe_token, token) { \ + FDL_ASSERT(!((token) & ~((1 << PE_TOKEN_TOKEN_SIZE)-1))); \ + pe_token = (((unsigned long)(pe_token)) & ~PE_TOKEN_TOKEN_MASK) | (((unsigned long)(token)) << PE_TOKEN_TOKEN_SHIFT);\ +} + +#define PE_TOKEN_RID_SIZE 8 +#define PE_TOKEN_RID_SHIFT 24 +#define PE_TOKEN_RID_MASK 0xff000000 +#define PE_TOKEN_GET_RID(pe_token) \ + ((((unsigned long)(pe_token)) & PE_TOKEN_RID_MASK) >> PE_TOKEN_RID_SHIFT) +#define PE_TOKEN_SET_RID(pe_token, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_TOKEN_RID_SIZE)-1))); \ + pe_token = (((unsigned long)(pe_token)) & ~PE_TOKEN_RID_MASK) | (((unsigned long)(rid)) << PE_TOKEN_RID_SHIFT);\ +} + +#define PE_TOKEN_INT_TOKEN_SIZE 16 +#define PE_TOKEN_INT_TOKEN_SHIFT 0 +#define PE_TOKEN_INT_TOKEN_MASK 0x0000ffff +#define PE_TOKEN_INT_GET_TOKEN(pe_token_int) \ + ((((unsigned long)(pe_token_int)) & PE_TOKEN_INT_TOKEN_MASK) >> PE_TOKEN_INT_TOKEN_SHIFT) +#define PE_TOKEN_INT_SET_TOKEN(pe_token_int, token) { \ + FDL_ASSERT(!((token) & ~((1 << PE_TOKEN_INT_TOKEN_SIZE)-1))); \ + pe_token_int = (((unsigned long)(pe_token_int)) & ~PE_TOKEN_INT_TOKEN_MASK) | (((unsigned long)(token)) << PE_TOKEN_INT_TOKEN_SHIFT);\ +} + +#define PE_TOKEN_INT_RID_SIZE 8 +#define PE_TOKEN_INT_RID_SHIFT 24 +#define PE_TOKEN_INT_RID_MASK 0xff000000 +#define PE_TOKEN_INT_GET_RID(pe_token_int) \ + ((((unsigned long)(pe_token_int)) & PE_TOKEN_INT_RID_MASK) >> PE_TOKEN_INT_RID_SHIFT) +#define PE_TOKEN_INT_SET_RID(pe_token_int, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_TOKEN_INT_RID_SIZE)-1))); \ + pe_token_int = (((unsigned long)(pe_token_int)) & ~PE_TOKEN_INT_RID_MASK) | (((unsigned long)(rid)) << PE_TOKEN_INT_RID_SHIFT);\ +} +#define PE_TOKEN_INT_TOTAL_SIZE 32 +#define PE_TOKEN_INT(token, rid) \ + ((((unsigned long)(token)) << PE_TOKEN_INT_TOKEN_SHIFT) | \ + (((unsigned long)(rid)) << PE_TOKEN_INT_RID_SHIFT)) + +#define PE_FINISH_DST_SIZE 2 +#define PE_FINISH_DST_SHIFT 0 +#define PE_FINISH_DST_MASK 0x00000003 +#define PE_FINISH_GET_DST(pe_finish) \ + ((((unsigned long)(pe_finish)) & PE_FINISH_DST_MASK) >> PE_FINISH_DST_SHIFT) +#define PE_FINISH_SET_DST(pe_finish, dst) { \ + FDL_ASSERT(!((dst) & ~((1 << PE_FINISH_DST_SIZE)-1))); \ + pe_finish = (((unsigned long)(pe_finish)) & ~PE_FINISH_DST_MASK) | (((unsigned long)(dst)) << PE_FINISH_DST_SHIFT);\ +} +#define PE_FINISH_PAD0_SIZE 22 +#define PE_FINISH_PAD0_SHIFT 2 +#define PE_FINISH_PAD0_MASK 0x00fffffc +#define PE_FINISH_GET_PAD0(pe_finish) \ + ((((unsigned long)(pe_finish)) & PE_FINISH_PAD0_MASK) >> PE_FINISH_PAD0_SHIFT) +#define PE_FINISH_SET_PAD0(pe_finish, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << PE_FINISH_PAD0_SIZE)-1))); \ + pe_finish = (((unsigned long)(pe_finish)) & ~PE_FINISH_PAD0_MASK) | (((unsigned long)(pad0)) << PE_FINISH_PAD0_SHIFT);\ +} +#define PE_FINISH_RID_SIZE 8 +#define PE_FINISH_RID_SHIFT 24 +#define PE_FINISH_RID_MASK 0xff000000 +#define PE_FINISH_GET_RID(pe_finish) \ + ((((unsigned long)(pe_finish)) & PE_FINISH_RID_MASK) >> PE_FINISH_RID_SHIFT) +#define PE_FINISH_SET_RID(pe_finish, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_FINISH_RID_SIZE)-1))); \ + pe_finish = (((unsigned long)(pe_finish)) & ~PE_FINISH_RID_MASK) | (((unsigned long)(rid)) << PE_FINISH_RID_SHIFT);\ +} +#define PE_FINISH_TOTAL_SIZE 32 +#define PE_FINISH(dst, rid) \ + ((((unsigned long)(dst)) << PE_FINISH_DST_SHIFT) | \ + (((unsigned long)(rid)) << PE_FINISH_RID_SHIFT)) + +#define PE_PI_CTL_AFMT_SIZE 2 +#define PE_PI_CTL_AFMT_SHIFT 0 +#define PE_PI_CTL_AFMT_MASK 0x00000003 +#define PE_PI_CTL_GET_AFMT(pe_pi_ctl) \ + ((((unsigned long)(pe_pi_ctl)) & PE_PI_CTL_AFMT_MASK) >> PE_PI_CTL_AFMT_SHIFT) +#define PE_PI_CTL_SET_AFMT(pe_pi_ctl, afmt) { \ + FDL_ASSERT(!((afmt) & ~((1 << PE_PI_CTL_AFMT_SIZE)-1))); \ + pe_pi_ctl = (((unsigned long)(pe_pi_ctl)) & ~PE_PI_CTL_AFMT_MASK) | (((unsigned long)(afmt)) << PE_PI_CTL_AFMT_SHIFT);\ +} +#define PE_PI_CTL_ZFMT_SIZE 1 +#define PE_PI_CTL_ZFMT_SHIFT 2 +#define PE_PI_CTL_ZFMT_MASK 0x00000004 +#define PE_PI_CTL_GET_ZFMT(pe_pi_ctl) \ + ((((unsigned long)(pe_pi_ctl)) & PE_PI_CTL_ZFMT_MASK) >> PE_PI_CTL_ZFMT_SHIFT) +#define PE_PI_CTL_SET_ZFMT(pe_pi_ctl, zfmt) { \ + FDL_ASSERT(!((zfmt) & ~((1 << PE_PI_CTL_ZFMT_SIZE)-1))); \ + pe_pi_ctl = (((unsigned long)(pe_pi_ctl)) & ~PE_PI_CTL_ZFMT_MASK) | (((unsigned long)(zfmt)) << PE_PI_CTL_ZFMT_SHIFT);\ +} +#define PE_PI_CTL_PAD0_SIZE 21 +#define PE_PI_CTL_PAD0_SHIFT 3 +#define PE_PI_CTL_PAD0_MASK 0x00fffff8 +#define PE_PI_CTL_GET_PAD0(pe_pi_ctl) \ + ((((unsigned long)(pe_pi_ctl)) & PE_PI_CTL_PAD0_MASK) >> PE_PI_CTL_PAD0_SHIFT) +#define PE_PI_CTL_SET_PAD0(pe_pi_ctl, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << PE_PI_CTL_PAD0_SIZE)-1))); \ + pe_pi_ctl = (((unsigned long)(pe_pi_ctl)) & ~PE_PI_CTL_PAD0_MASK) | (((unsigned long)(pad0)) << PE_PI_CTL_PAD0_SHIFT);\ +} +#define PE_PI_CTL_RID_SIZE 8 +#define PE_PI_CTL_RID_SHIFT 24 +#define PE_PI_CTL_RID_MASK 0xff000000 +#define PE_PI_CTL_GET_RID(pe_pi_ctl) \ + ((((unsigned long)(pe_pi_ctl)) & PE_PI_CTL_RID_MASK) >> PE_PI_CTL_RID_SHIFT) +#define PE_PI_CTL_SET_RID(pe_pi_ctl, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_PI_CTL_RID_SIZE)-1))); \ + pe_pi_ctl = (((unsigned long)(pe_pi_ctl)) & ~PE_PI_CTL_RID_MASK) | (((unsigned long)(rid)) << PE_PI_CTL_RID_SHIFT);\ +} +#define PE_PI_CTL_TOTAL_SIZE 32 +#define PE_PI_CTL(afmt, zfmt, rid) \ + ((((unsigned long)(afmt)) << PE_PI_CTL_AFMT_SHIFT) | \ + (((unsigned long)(zfmt)) << PE_PI_CTL_ZFMT_SHIFT) | \ + (((unsigned long)(rid)) << PE_PI_CTL_RID_SHIFT)) + +#define PE_CMODE0_BLEND_ENABLE_SIZE 1 +#define PE_CMODE0_BLEND_ENABLE_SHIFT 0 +#define PE_CMODE0_BLEND_ENABLE_MASK 0x00000001 +#define PE_CMODE0_GET_BLEND_ENABLE(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_BLEND_ENABLE_MASK) >> PE_CMODE0_BLEND_ENABLE_SHIFT) +#define PE_CMODE0_SET_BLEND_ENABLE(pe_cmode0, blend_enable) { \ + FDL_ASSERT(!((blend_enable) & ~((1 << PE_CMODE0_BLEND_ENABLE_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_BLEND_ENABLE_MASK) | (((unsigned long)(blend_enable)) << PE_CMODE0_BLEND_ENABLE_SHIFT);\ +} +#define PE_CMODE0_LOGICOP_ENABLE_SIZE 1 +#define PE_CMODE0_LOGICOP_ENABLE_SHIFT 1 +#define PE_CMODE0_LOGICOP_ENABLE_MASK 0x00000002 +#define PE_CMODE0_GET_LOGICOP_ENABLE(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_LOGICOP_ENABLE_MASK) >> PE_CMODE0_LOGICOP_ENABLE_SHIFT) +#define PE_CMODE0_SET_LOGICOP_ENABLE(pe_cmode0, logicop_enable) { \ + FDL_ASSERT(!((logicop_enable) & ~((1 << PE_CMODE0_LOGICOP_ENABLE_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_LOGICOP_ENABLE_MASK) | (((unsigned long)(logicop_enable)) << PE_CMODE0_LOGICOP_ENABLE_SHIFT);\ +} +#define PE_CMODE0_DITHER_ENABLE_SIZE 1 +#define PE_CMODE0_DITHER_ENABLE_SHIFT 2 +#define PE_CMODE0_DITHER_ENABLE_MASK 0x00000004 +#define PE_CMODE0_GET_DITHER_ENABLE(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_DITHER_ENABLE_MASK) >> PE_CMODE0_DITHER_ENABLE_SHIFT) +#define PE_CMODE0_SET_DITHER_ENABLE(pe_cmode0, dither_enable) { \ + FDL_ASSERT(!((dither_enable) & ~((1 << PE_CMODE0_DITHER_ENABLE_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_DITHER_ENABLE_MASK) | (((unsigned long)(dither_enable)) << PE_CMODE0_DITHER_ENABLE_SHIFT);\ +} +#define PE_CMODE0_COLOR_MASK_SIZE 1 +#define PE_CMODE0_COLOR_MASK_SHIFT 3 +#define PE_CMODE0_COLOR_MASK_MASK 0x00000008 +#define PE_CMODE0_GET_COLOR_MASK(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_COLOR_MASK_MASK) >> PE_CMODE0_COLOR_MASK_SHIFT) +#define PE_CMODE0_SET_COLOR_MASK(pe_cmode0, color_mask) { \ + FDL_ASSERT(!((color_mask) & ~((1 << PE_CMODE0_COLOR_MASK_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_COLOR_MASK_MASK) | (((unsigned long)(color_mask)) << PE_CMODE0_COLOR_MASK_SHIFT);\ +} +#define PE_CMODE0_ALPHA_MASK_SIZE 1 +#define PE_CMODE0_ALPHA_MASK_SHIFT 4 +#define PE_CMODE0_ALPHA_MASK_MASK 0x00000010 +#define PE_CMODE0_GET_ALPHA_MASK(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_ALPHA_MASK_MASK) >> PE_CMODE0_ALPHA_MASK_SHIFT) +#define PE_CMODE0_SET_ALPHA_MASK(pe_cmode0, alpha_mask) { \ + FDL_ASSERT(!((alpha_mask) & ~((1 << PE_CMODE0_ALPHA_MASK_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_ALPHA_MASK_MASK) | (((unsigned long)(alpha_mask)) << PE_CMODE0_ALPHA_MASK_SHIFT);\ +} +#define PE_CMODE0_DFACTOR_SIZE 3 +#define PE_CMODE0_DFACTOR_SHIFT 5 +#define PE_CMODE0_DFACTOR_MASK 0x000000e0 +#define PE_CMODE0_GET_DFACTOR(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_DFACTOR_MASK) >> PE_CMODE0_DFACTOR_SHIFT) +#define PE_CMODE0_SET_DFACTOR(pe_cmode0, dfactor) { \ + FDL_ASSERT(!((dfactor) & ~((1 << PE_CMODE0_DFACTOR_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_DFACTOR_MASK) | (((unsigned long)(dfactor)) << PE_CMODE0_DFACTOR_SHIFT);\ +} +#define PE_CMODE0_SFACTOR_SIZE 3 +#define PE_CMODE0_SFACTOR_SHIFT 8 +#define PE_CMODE0_SFACTOR_MASK 0x00000700 +#define PE_CMODE0_GET_SFACTOR(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_SFACTOR_MASK) >> PE_CMODE0_SFACTOR_SHIFT) +#define PE_CMODE0_SET_SFACTOR(pe_cmode0, sfactor) { \ + FDL_ASSERT(!((sfactor) & ~((1 << PE_CMODE0_SFACTOR_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_SFACTOR_MASK) | (((unsigned long)(sfactor)) << PE_CMODE0_SFACTOR_SHIFT);\ +} +#define PE_CMODE0_BLENDOP_SIZE 1 +#define PE_CMODE0_BLENDOP_SHIFT 11 +#define PE_CMODE0_BLENDOP_MASK 0x00000800 +#define PE_CMODE0_GET_BLENDOP(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_BLENDOP_MASK) >> PE_CMODE0_BLENDOP_SHIFT) +#define PE_CMODE0_SET_BLENDOP(pe_cmode0, blendop) { \ + FDL_ASSERT(!((blendop) & ~((1 << PE_CMODE0_BLENDOP_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_BLENDOP_MASK) | (((unsigned long)(blendop)) << PE_CMODE0_BLENDOP_SHIFT);\ +} +#define PE_CMODE0_LOGICOP_SIZE 4 +#define PE_CMODE0_LOGICOP_SHIFT 12 +#define PE_CMODE0_LOGICOP_MASK 0x0000f000 +#define PE_CMODE0_GET_LOGICOP(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_LOGICOP_MASK) >> PE_CMODE0_LOGICOP_SHIFT) +#define PE_CMODE0_SET_LOGICOP(pe_cmode0, logicop) { \ + FDL_ASSERT(!((logicop) & ~((1 << PE_CMODE0_LOGICOP_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_LOGICOP_MASK) | (((unsigned long)(logicop)) << PE_CMODE0_LOGICOP_SHIFT);\ +} +#define PE_CMODE0_PAD0_SIZE 8 +#define PE_CMODE0_PAD0_SHIFT 16 +#define PE_CMODE0_PAD0_MASK 0x00ff0000 +#define PE_CMODE0_GET_PAD0(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_PAD0_MASK) >> PE_CMODE0_PAD0_SHIFT) +#define PE_CMODE0_SET_PAD0(pe_cmode0, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << PE_CMODE0_PAD0_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_PAD0_MASK) | (((unsigned long)(pad0)) << PE_CMODE0_PAD0_SHIFT);\ +} +#define PE_CMODE0_RID_SIZE 8 +#define PE_CMODE0_RID_SHIFT 24 +#define PE_CMODE0_RID_MASK 0xff000000 +#define PE_CMODE0_GET_RID(pe_cmode0) \ + ((((unsigned long)(pe_cmode0)) & PE_CMODE0_RID_MASK) >> PE_CMODE0_RID_SHIFT) +#define PE_CMODE0_SET_RID(pe_cmode0, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_CMODE0_RID_SIZE)-1))); \ + pe_cmode0 = (((unsigned long)(pe_cmode0)) & ~PE_CMODE0_RID_MASK) | (((unsigned long)(rid)) << PE_CMODE0_RID_SHIFT);\ +} +#define PE_CMODE0_TOTAL_SIZE 32 +#define PE_CMODE0(blend_enable, logicop_enable, dither_enable, color_mask, alpha_mask, dfactor, sfactor, blendop, logicop, rid) \ + ((((unsigned long)(blend_enable)) << PE_CMODE0_BLEND_ENABLE_SHIFT) | \ + (((unsigned long)(logicop_enable)) << PE_CMODE0_LOGICOP_ENABLE_SHIFT) | \ + (((unsigned long)(dither_enable)) << PE_CMODE0_DITHER_ENABLE_SHIFT) | \ + (((unsigned long)(color_mask)) << PE_CMODE0_COLOR_MASK_SHIFT) | \ + (((unsigned long)(alpha_mask)) << PE_CMODE0_ALPHA_MASK_SHIFT) | \ + (((unsigned long)(dfactor)) << PE_CMODE0_DFACTOR_SHIFT) | \ + (((unsigned long)(sfactor)) << PE_CMODE0_SFACTOR_SHIFT) | \ + (((unsigned long)(blendop)) << PE_CMODE0_BLENDOP_SHIFT) | \ + (((unsigned long)(logicop)) << PE_CMODE0_LOGICOP_SHIFT) | \ + (((unsigned long)(rid)) << PE_CMODE0_RID_SHIFT)) + +#define PE_CMODE1_CONSTANT_ALPHA_SIZE 8 +#define PE_CMODE1_CONSTANT_ALPHA_SHIFT 0 +#define PE_CMODE1_CONSTANT_ALPHA_MASK 0x000000ff +#define PE_CMODE1_GET_CONSTANT_ALPHA(pe_cmode1) \ + ((((unsigned long)(pe_cmode1)) & PE_CMODE1_CONSTANT_ALPHA_MASK) >> PE_CMODE1_CONSTANT_ALPHA_SHIFT) +#define PE_CMODE1_SET_CONSTANT_ALPHA(pe_cmode1, constant_alpha) { \ + FDL_ASSERT(!((constant_alpha) & ~((1 << PE_CMODE1_CONSTANT_ALPHA_SIZE)-1))); \ + pe_cmode1 = (((unsigned long)(pe_cmode1)) & ~PE_CMODE1_CONSTANT_ALPHA_MASK) | (((unsigned long)(constant_alpha)) << PE_CMODE1_CONSTANT_ALPHA_SHIFT);\ +} +#define PE_CMODE1_CONSTANT_ALPHA_ENABLE_SIZE 1 +#define PE_CMODE1_CONSTANT_ALPHA_ENABLE_SHIFT 8 +#define PE_CMODE1_CONSTANT_ALPHA_ENABLE_MASK 0x00000100 +#define PE_CMODE1_GET_CONSTANT_ALPHA_ENABLE(pe_cmode1) \ + ((((unsigned long)(pe_cmode1)) & PE_CMODE1_CONSTANT_ALPHA_ENABLE_MASK) >> PE_CMODE1_CONSTANT_ALPHA_ENABLE_SHIFT) +#define PE_CMODE1_SET_CONSTANT_ALPHA_ENABLE(pe_cmode1, constant_alpha_enable) { \ + FDL_ASSERT(!((constant_alpha_enable) & ~((1 << PE_CMODE1_CONSTANT_ALPHA_ENABLE_SIZE)-1))); \ + pe_cmode1 = (((unsigned long)(pe_cmode1)) & ~PE_CMODE1_CONSTANT_ALPHA_ENABLE_MASK) | (((unsigned long)(constant_alpha_enable)) << PE_CMODE1_CONSTANT_ALPHA_ENABLE_SHIFT);\ +} +#define PE_CMODE1_YUV_SIZE 2 +#define PE_CMODE1_YUV_SHIFT 9 +#define PE_CMODE1_YUV_MASK 0x00000600 +#define PE_CMODE1_GET_YUV(pe_cmode1) \ + ((((unsigned long)(pe_cmode1)) & PE_CMODE1_YUV_MASK) >> PE_CMODE1_YUV_SHIFT) +#define PE_CMODE1_SET_YUV(pe_cmode1, yuv) { \ + FDL_ASSERT(!((yuv) & ~((1 << PE_CMODE1_YUV_SIZE)-1))); \ + pe_cmode1 = (((unsigned long)(pe_cmode1)) & ~PE_CMODE1_YUV_MASK) | (((unsigned long)(yuv)) << PE_CMODE1_YUV_SHIFT);\ +} +#define PE_CMODE1_PAD0_SIZE 13 +#define PE_CMODE1_PAD0_SHIFT 11 +#define PE_CMODE1_PAD0_MASK 0x00fff800 +#define PE_CMODE1_GET_PAD0(pe_cmode1) \ + ((((unsigned long)(pe_cmode1)) & PE_CMODE1_PAD0_MASK) >> PE_CMODE1_PAD0_SHIFT) +#define PE_CMODE1_SET_PAD0(pe_cmode1, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << PE_CMODE1_PAD0_SIZE)-1))); \ + pe_cmode1 = (((unsigned long)(pe_cmode1)) & ~PE_CMODE1_PAD0_MASK) | (((unsigned long)(pad0)) << PE_CMODE1_PAD0_SHIFT);\ +} +#define PE_CMODE1_RID_SIZE 8 +#define PE_CMODE1_RID_SHIFT 24 +#define PE_CMODE1_RID_MASK 0xff000000 +#define PE_CMODE1_GET_RID(pe_cmode1) \ + ((((unsigned long)(pe_cmode1)) & PE_CMODE1_RID_MASK) >> PE_CMODE1_RID_SHIFT) +#define PE_CMODE1_SET_RID(pe_cmode1, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_CMODE1_RID_SIZE)-1))); \ + pe_cmode1 = (((unsigned long)(pe_cmode1)) & ~PE_CMODE1_RID_MASK) | (((unsigned long)(rid)) << PE_CMODE1_RID_SHIFT);\ +} +#define PE_CMODE1_TOTAL_SIZE 32 +#define PE_CMODE1(constant_alpha, constant_alpha_enable, yuv, rid) \ + ((((unsigned long)(constant_alpha)) << PE_CMODE1_CONSTANT_ALPHA_SHIFT) | \ + (((unsigned long)(constant_alpha_enable)) << PE_CMODE1_CONSTANT_ALPHA_ENABLE_SHIFT) | \ + (((unsigned long)(yuv)) << PE_CMODE1_YUV_SHIFT) | \ + (((unsigned long)(rid)) << PE_CMODE1_RID_SHIFT)) + +#define PE_ZMODE_ENABLE_SIZE 1 +#define PE_ZMODE_ENABLE_SHIFT 0 +#define PE_ZMODE_ENABLE_MASK 0x00000001 +#define PE_ZMODE_GET_ENABLE(pe_zmode) \ + ((((unsigned long)(pe_zmode)) & PE_ZMODE_ENABLE_MASK) >> PE_ZMODE_ENABLE_SHIFT) +#define PE_ZMODE_SET_ENABLE(pe_zmode, enable) { \ + FDL_ASSERT(!((enable) & ~((1 << PE_ZMODE_ENABLE_SIZE)-1))); \ + pe_zmode = (((unsigned long)(pe_zmode)) & ~PE_ZMODE_ENABLE_MASK) | (((unsigned long)(enable)) << PE_ZMODE_ENABLE_SHIFT);\ +} +#define PE_ZMODE_FUNC_SIZE 3 +#define PE_ZMODE_FUNC_SHIFT 1 +#define PE_ZMODE_FUNC_MASK 0x0000000e +#define PE_ZMODE_GET_FUNC(pe_zmode) \ + ((((unsigned long)(pe_zmode)) & PE_ZMODE_FUNC_MASK) >> PE_ZMODE_FUNC_SHIFT) +#define PE_ZMODE_SET_FUNC(pe_zmode, func) { \ + FDL_ASSERT(!((func) & ~((1 << PE_ZMODE_FUNC_SIZE)-1))); \ + pe_zmode = (((unsigned long)(pe_zmode)) & ~PE_ZMODE_FUNC_MASK) | (((unsigned long)(func)) << PE_ZMODE_FUNC_SHIFT);\ +} +#define PE_ZMODE_MASK_SIZE 1 +#define PE_ZMODE_MASK_SHIFT 4 +#define PE_ZMODE_MASK_MASK 0x00000010 +#define PE_ZMODE_GET_MASK(pe_zmode) \ + ((((unsigned long)(pe_zmode)) & PE_ZMODE_MASK_MASK) >> PE_ZMODE_MASK_SHIFT) +#define PE_ZMODE_SET_MASK(pe_zmode, mask) { \ + FDL_ASSERT(!((mask) & ~((1 << PE_ZMODE_MASK_SIZE)-1))); \ + pe_zmode = (((unsigned long)(pe_zmode)) & ~PE_ZMODE_MASK_MASK) | (((unsigned long)(mask)) << PE_ZMODE_MASK_SHIFT);\ +} +#define PE_ZMODE_PAD0_SIZE 19 +#define PE_ZMODE_PAD0_SHIFT 5 +#define PE_ZMODE_PAD0_MASK 0x00ffffe0 +#define PE_ZMODE_GET_PAD0(pe_zmode) \ + ((((unsigned long)(pe_zmode)) & PE_ZMODE_PAD0_MASK) >> PE_ZMODE_PAD0_SHIFT) +#define PE_ZMODE_SET_PAD0(pe_zmode, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << PE_ZMODE_PAD0_SIZE)-1))); \ + pe_zmode = (((unsigned long)(pe_zmode)) & ~PE_ZMODE_PAD0_MASK) | (((unsigned long)(pad0)) << PE_ZMODE_PAD0_SHIFT);\ +} +#define PE_ZMODE_RID_SIZE 8 +#define PE_ZMODE_RID_SHIFT 24 +#define PE_ZMODE_RID_MASK 0xff000000 +#define PE_ZMODE_GET_RID(pe_zmode) \ + ((((unsigned long)(pe_zmode)) & PE_ZMODE_RID_MASK) >> PE_ZMODE_RID_SHIFT) +#define PE_ZMODE_SET_RID(pe_zmode, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << PE_ZMODE_RID_SIZE)-1))); \ + pe_zmode = (((unsigned long)(pe_zmode)) & ~PE_ZMODE_RID_MASK) | (((unsigned long)(rid)) << PE_ZMODE_RID_SHIFT);\ +} +#define PE_ZMODE_TOTAL_SIZE 32 +#define PE_ZMODE(enable, func, mask, rid) \ + ((((unsigned long)(enable)) << PE_ZMODE_ENABLE_SHIFT) | \ + (((unsigned long)(func)) << PE_ZMODE_FUNC_SHIFT) | \ + (((unsigned long)(mask)) << PE_ZMODE_MASK_SHIFT) | \ + (((unsigned long)(rid)) << PE_ZMODE_RID_SHIFT)) + +#define PE_PI_EFB_ADDR_PAD0_SIZE 2 +#define PE_PI_EFB_ADDR_PAD0_SHIFT 0 +#define PE_PI_EFB_ADDR_PAD0_MASK 0x00000003 +#define PE_PI_EFB_ADDR_GET_PAD0(pe_pi_efb_addr) \ + ((((unsigned long)(pe_pi_efb_addr)) & PE_PI_EFB_ADDR_PAD0_MASK) >> PE_PI_EFB_ADDR_PAD0_SHIFT) +#define PE_PI_EFB_ADDR_SET_PAD0(pe_pi_efb_addr, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << PE_PI_EFB_ADDR_PAD0_SIZE)-1))); \ + pe_pi_efb_addr = (((unsigned long)(pe_pi_efb_addr)) & ~PE_PI_EFB_ADDR_PAD0_MASK) | (((unsigned long)(pad0)) << PE_PI_EFB_ADDR_PAD0_SHIFT);\ +} +#define PE_PI_EFB_ADDR_X_SIZE 10 +#define PE_PI_EFB_ADDR_X_SHIFT 2 +#define PE_PI_EFB_ADDR_X_MASK 0x00000ffc +#define PE_PI_EFB_ADDR_GET_X(pe_pi_efb_addr) \ + ((((unsigned long)(pe_pi_efb_addr)) & PE_PI_EFB_ADDR_X_MASK) >> PE_PI_EFB_ADDR_X_SHIFT) +#define PE_PI_EFB_ADDR_SET_X(pe_pi_efb_addr, x) { \ + FDL_ASSERT(!((x) & ~((1 << PE_PI_EFB_ADDR_X_SIZE)-1))); \ + pe_pi_efb_addr = (((unsigned long)(pe_pi_efb_addr)) & ~PE_PI_EFB_ADDR_X_MASK) | (((unsigned long)(x)) << PE_PI_EFB_ADDR_X_SHIFT);\ +} +#define PE_PI_EFB_ADDR_Y_SIZE 10 +#define PE_PI_EFB_ADDR_Y_SHIFT 12 +#define PE_PI_EFB_ADDR_Y_MASK 0x003ff000 +#define PE_PI_EFB_ADDR_GET_Y(pe_pi_efb_addr) \ + ((((unsigned long)(pe_pi_efb_addr)) & PE_PI_EFB_ADDR_Y_MASK) >> PE_PI_EFB_ADDR_Y_SHIFT) +#define PE_PI_EFB_ADDR_SET_Y(pe_pi_efb_addr, y) { \ + FDL_ASSERT(!((y) & ~((1 << PE_PI_EFB_ADDR_Y_SIZE)-1))); \ + pe_pi_efb_addr = (((unsigned long)(pe_pi_efb_addr)) & ~PE_PI_EFB_ADDR_Y_MASK) | (((unsigned long)(y)) << PE_PI_EFB_ADDR_Y_SHIFT);\ +} +#define PE_PI_EFB_ADDR_TYPE_SIZE 2 +#define PE_PI_EFB_ADDR_TYPE_SHIFT 22 +#define PE_PI_EFB_ADDR_TYPE_MASK 0x00c00000 +#define PE_PI_EFB_ADDR_GET_TYPE(pe_pi_efb_addr) \ + ((((unsigned long)(pe_pi_efb_addr)) & PE_PI_EFB_ADDR_TYPE_MASK) >> PE_PI_EFB_ADDR_TYPE_SHIFT) +#define PE_PI_EFB_ADDR_SET_TYPE(pe_pi_efb_addr, type) { \ + FDL_ASSERT(!((type) & ~((1 << PE_PI_EFB_ADDR_TYPE_SIZE)-1))); \ + pe_pi_efb_addr = (((unsigned long)(pe_pi_efb_addr)) & ~PE_PI_EFB_ADDR_TYPE_MASK) | (((unsigned long)(type)) << PE_PI_EFB_ADDR_TYPE_SHIFT);\ +} +#define PE_PI_EFB_ADDR_TOTAL_SIZE 24 +#define PE_PI_EFB_ADDR(x, y, type) \ + ((((unsigned long)(x)) << PE_PI_EFB_ADDR_X_SHIFT) | \ + (((unsigned long)(y)) << PE_PI_EFB_ADDR_Y_SHIFT) | \ + (((unsigned long)(type)) << PE_PI_EFB_ADDR_TYPE_SHIFT)) + +#define PE_INTRCTL_INT0EN_SIZE 1 +#define PE_INTRCTL_INT0EN_SHIFT 0 +#define PE_INTRCTL_INT0EN_MASK 0x00000001 +#define PE_INTRCTL_GET_INT0EN(pe_intrctl) \ + ((((unsigned long)(pe_intrctl)) & PE_INTRCTL_INT0EN_MASK) >> PE_INTRCTL_INT0EN_SHIFT) +#define PE_INTRCTL_SET_INT0EN(pe_intrctl, int0en) { \ + FDL_ASSERT(!((int0en) & ~((1 << PE_INTRCTL_INT0EN_SIZE)-1))); \ + pe_intrctl = (((unsigned long)(pe_intrctl)) & ~PE_INTRCTL_INT0EN_MASK) | (((unsigned long)(int0en)) << PE_INTRCTL_INT0EN_SHIFT);\ +} +#define PE_INTRCTL_INT1EN_SIZE 1 +#define PE_INTRCTL_INT1EN_SHIFT 1 +#define PE_INTRCTL_INT1EN_MASK 0x00000002 +#define PE_INTRCTL_GET_INT1EN(pe_intrctl) \ + ((((unsigned long)(pe_intrctl)) & PE_INTRCTL_INT1EN_MASK) >> PE_INTRCTL_INT1EN_SHIFT) +#define PE_INTRCTL_SET_INT1EN(pe_intrctl, int1en) { \ + FDL_ASSERT(!((int1en) & ~((1 << PE_INTRCTL_INT1EN_SIZE)-1))); \ + pe_intrctl = (((unsigned long)(pe_intrctl)) & ~PE_INTRCTL_INT1EN_MASK) | (((unsigned long)(int1en)) << PE_INTRCTL_INT1EN_SHIFT);\ +} +#define PE_INTRCTL_INT0CLR_SIZE 1 +#define PE_INTRCTL_INT0CLR_SHIFT 2 +#define PE_INTRCTL_INT0CLR_MASK 0x00000004 +#define PE_INTRCTL_GET_INT0CLR(pe_intrctl) \ + ((((unsigned long)(pe_intrctl)) & PE_INTRCTL_INT0CLR_MASK) >> PE_INTRCTL_INT0CLR_SHIFT) +#define PE_INTRCTL_SET_INT0CLR(pe_intrctl, int0clr) { \ + FDL_ASSERT(!((int0clr) & ~((1 << PE_INTRCTL_INT0CLR_SIZE)-1))); \ + pe_intrctl = (((unsigned long)(pe_intrctl)) & ~PE_INTRCTL_INT0CLR_MASK) | (((unsigned long)(int0clr)) << PE_INTRCTL_INT0CLR_SHIFT);\ +} +#define PE_INTRCTL_INT1CLR_SIZE 1 +#define PE_INTRCTL_INT1CLR_SHIFT 3 +#define PE_INTRCTL_INT1CLR_MASK 0x00000008 +#define PE_INTRCTL_GET_INT1CLR(pe_intrctl) \ + ((((unsigned long)(pe_intrctl)) & PE_INTRCTL_INT1CLR_MASK) >> PE_INTRCTL_INT1CLR_SHIFT) +#define PE_INTRCTL_SET_INT1CLR(pe_intrctl, int1clr) { \ + FDL_ASSERT(!((int1clr) & ~((1 << PE_INTRCTL_INT1CLR_SIZE)-1))); \ + pe_intrctl = (((unsigned long)(pe_intrctl)) & ~PE_INTRCTL_INT1CLR_MASK) | (((unsigned long)(int1clr)) << PE_INTRCTL_INT1CLR_SHIFT);\ +} +#define PE_INTRCTL_TOTAL_SIZE 4 +#define PE_INTRCTL(int0en, int1en, int0clr, int1clr) \ + ((((unsigned long)(int0en)) << PE_INTRCTL_INT0EN_SHIFT) | \ + (((unsigned long)(int1en)) << PE_INTRCTL_INT1EN_SHIFT) | \ + (((unsigned long)(int0clr)) << PE_INTRCTL_INT0CLR_SHIFT) | \ + (((unsigned long)(int1clr)) << PE_INTRCTL_INT1CLR_SHIFT)) + +#define SC_PE_ZMODE_SET_ENABLE(line, pe_zmode,enable) \ + FAST_GPFLAGSET(line, pe_zmode,enable,PE_ZMODE_ENABLE) + +#define SC_PE_ZMODE_SET_FUNC(line, pe_zmode,func) \ + FAST_GPFLAGSET(line, pe_zmode,func,PE_ZMODE_FUNC) + +#define SC_PE_ZMODE_SET_MASK(line, pe_zmode,mask) \ + FAST_GPFLAGSET(line, pe_zmode,mask,PE_ZMODE_MASK) + +#define SC_PE_ZMODE_SET_PAD0(line, pe_zmode,pad0) \ + FAST_GPFLAGSET(line, pe_zmode,pad0,PE_ZMODE_PAD0) + +#define SC_PE_ZMODE_SET_RID(line, pe_zmode,rid) \ + FAST_GPFLAGSET(line, pe_zmode,rid,PE_ZMODE_RID) + +#define SC_PE_CMODE0_SET_BLEND_ENABLE(line, pe_cmode0,blend_enable) \ + FAST_GPFLAGSET(line, pe_cmode0,blend_enable,PE_CMODE0_BLEND_ENABLE) + +#define SC_PE_CMODE0_SET_LOGICOP_ENABLE(line, pe_cmode0,logicop_enable) \ + FAST_GPFLAGSET(line, pe_cmode0,logicop_enable,PE_CMODE0_LOGICOP_ENABLE) + +#define SC_PE_CMODE0_SET_DITHER_ENABLE(line, pe_cmode0,dither_enable) \ + FAST_GPFLAGSET(line, pe_cmode0,dither_enable,PE_CMODE0_DITHER_ENABLE) + +#define SC_PE_CMODE0_SET_COLOR_MASK(line, pe_cmode0,color_mask) \ + FAST_GPFLAGSET(line, pe_cmode0,color_mask,PE_CMODE0_COLOR_MASK) + +#define SC_PE_CMODE0_SET_ALPHA_MASK(line, pe_cmode0,alpha_mask) \ + FAST_GPFLAGSET(line, pe_cmode0,alpha_mask,PE_CMODE0_ALPHA_MASK) + +#define SC_PE_CMODE0_SET_DFACTOR(line, pe_cmode0,dfactor) \ + FAST_GPFLAGSET(line, pe_cmode0,dfactor,PE_CMODE0_DFACTOR) + +#define SC_PE_CMODE0_SET_SFACTOR(line, pe_cmode0,sfactor) \ + FAST_GPFLAGSET(line, pe_cmode0,sfactor,PE_CMODE0_SFACTOR) + +#define SC_PE_CMODE0_SET_BLENDOP(line, pe_cmode0,blendop) \ + FAST_GPFLAGSET(line, pe_cmode0,blendop,PE_CMODE0_BLENDOP) + +#define SC_PE_CMODE0_SET_LOGICOP(line, pe_cmode0,logicop) \ + FAST_GPFLAGSET(line, pe_cmode0,logicop,PE_CMODE0_LOGICOP) + +#define SC_PE_CMODE0_SET_PAD0(line, pe_cmode0,pad0) \ + FAST_GPFLAGSET(line, pe_cmode0,pad0,PE_CMODE0_PAD0) + +#define SC_PE_CMODE0_SET_RID(line, pe_cmode0,rid) \ + FAST_GPFLAGSET(line, pe_cmode0,rid,PE_CMODE0_RID) + +#define SC_PE_CMODE1_SET_CONSTANT_ALPHA(line, pe_cmode1,constant_alpha) \ + FAST_GPFLAGSET(line, pe_cmode1,constant_alpha,PE_CMODE1_CONSTANT_ALPHA) + +#define SC_PE_CMODE1_SET_CONSTANT_ALPHA_ENABLE(line, pe_cmode1,constant_alpha_enable) \ + FAST_GPFLAGSET(line, pe_cmode1,constant_alpha_enable,PE_CMODE1_CONSTANT_ALPHA_ENABLE) + +#define SC_PE_CMODE1_SET_YUV(line, pe_cmode1,yuv) \ + FAST_GPFLAGSET(line, pe_cmode1,yuv,PE_CMODE1_YUV) + +#define SC_PE_CMODE1_SET_PAD0(line, pe_cmode1,pad0) \ + FAST_GPFLAGSET(line, pe_cmode1,pad0,PE_CMODE1_PAD0) + +#define SC_PE_CMODE1_SET_RID(line, pe_cmode1,rid) \ + FAST_GPFLAGSET(line, pe_cmode1,rid,PE_CMODE1_RID) + +#define SC_PE_CONTROL_SET_PIXTYPE(line, pe_control,pixtype) \ + FAST_GPFLAGSET(line, pe_control,pixtype,PE_CONTROL_PIXTYPE) + +#define SC_PE_CONTROL_SET_ZCMODE(line, pe_control,zcmode) \ + FAST_GPFLAGSET(line, pe_control,zcmode,PE_CONTROL_ZCMODE) + +#define SC_PE_CONTROL_SET_ZTOP(line, pe_control,ztop) \ + FAST_GPFLAGSET(line, pe_control,ztop,PE_CONTROL_ZTOP) + +#define SC_PE_CONTROL_SET_PAD0(line, pe_control,pad0) \ + FAST_GPFLAGSET(line, pe_control,pad0,PE_CONTROL_PAD0) + +#define SC_PE_CONTROL_SET_RID(line, pe_control,rid) \ + FAST_GPFLAGSET(line, pe_control,rid,PE_CONTROL_RID) + +#define SC_PE_FIELD_MASK_SET_EVEN(line, pe_field_mask,even) \ + FAST_GPFLAGSET(line, pe_field_mask,even,PE_FIELD_MASK_EVEN) + +#define SC_PE_FIELD_MASK_SET_ODD(line, pe_field_mask,odd) \ + FAST_GPFLAGSET(line, pe_field_mask,odd,PE_FIELD_MASK_ODD) + +#define SC_PE_FIELD_MASK_SET_PAD0(line, pe_field_mask,pad0) \ + FAST_GPFLAGSET(line, pe_field_mask,pad0,PE_FIELD_MASK_PAD0) + +#define SC_PE_FIELD_MASK_SET_RID(line, pe_field_mask,rid) \ + FAST_GPFLAGSET(line, pe_field_mask,rid,PE_FIELD_MASK_RID) + +#define SC_PE_FINISH_SET_DST(line, pe_finish,dst) \ + FAST_GPFLAGSET(line, pe_finish,dst,PE_FINISH_DST) + +#define SC_PE_FINISH_SET_PAD0(line, pe_finish,pad0) \ + FAST_GPFLAGSET(line, pe_finish,pad0,PE_FINISH_PAD0) + +#define SC_PE_FINISH_SET_RID(line, pe_finish,rid) \ + FAST_GPFLAGSET(line, pe_finish,rid,PE_FINISH_RID) + +#define SC_PE_REFRESH_SET_INTERVAL(line, pe_refresh,interval) \ + FAST_GPFLAGSET(line, pe_refresh,interval,PE_REFRESH_INTERVAL) + +#define SC_PE_REFRESH_SET_ENABLE(line, pe_refresh,enable) \ + FAST_GPFLAGSET(line, pe_refresh,enable,PE_REFRESH_ENABLE) + +#define SC_PE_REFRESH_SET_PAD0(line, pe_refresh,pad0) \ + FAST_GPFLAGSET(line, pe_refresh,pad0,PE_REFRESH_PAD0) + +#define SC_PE_REFRESH_SET_RID(line, pe_refresh,rid) \ + FAST_GPFLAGSET(line, pe_refresh,rid,PE_REFRESH_RID) + +#define SC_PE_TOKEN_SET_TOKEN(line, pe_token,token) \ + FAST_GPFLAGSET(line, pe_token,token,PE_TOKEN_TOKEN) + +#define SC_PE_TOKEN_SET_PAD0(line, pe_token,pad0) \ + FAST_GPFLAGSET(line, pe_token,pad0,PE_TOKEN_PAD0) + +#define SC_PE_TOKEN_SET_RID(line, pe_token,rid) \ + FAST_GPFLAGSET(line, pe_token,rid,PE_TOKEN_RID) + +#define SC_PE_TOKEN_INT_SET_TOKEN(line, pe_token_int,token) \ + FAST_GPFLAGSET(line, pe_token_int,token,PE_TOKEN_INT_TOKEN) + +#define SC_PE_TOKEN_INT_SET_PAD0(line, pe_token_int,pad0) \ + FAST_GPFLAGSET(line, pe_token_int,pad0,PE_TOKEN_INT_PAD0) + +#define SC_PE_TOKEN_INT_SET_RID(line, pe_token_int,rid) \ + FAST_GPFLAGSET(line, pe_token_int,rid,PE_TOKEN_INT_RID) + +#define SC_PE_COPY_SRC_ADDR_SET_X(line, pe_copy_src_addr,x) \ + FAST_GPFLAGSET(line, pe_copy_src_addr,x,PE_COPY_SRC_ADDR_X) + +#define SC_PE_COPY_SRC_ADDR_SET_Y(line, pe_copy_src_addr,y) \ + FAST_GPFLAGSET(line, pe_copy_src_addr,y,PE_COPY_SRC_ADDR_Y) + +#define SC_PE_COPY_SRC_ADDR_SET_PAD0(line, pe_copy_src_addr,pad0) \ + FAST_GPFLAGSET(line, pe_copy_src_addr,pad0,PE_COPY_SRC_ADDR_PAD0) + +#define SC_PE_COPY_SRC_ADDR_SET_RID(line, pe_copy_src_addr,rid) \ + FAST_GPFLAGSET(line, pe_copy_src_addr,rid,PE_COPY_SRC_ADDR_RID) + +#define SC_PE_COPY_SRC_SIZE_SET_X(line, pe_copy_src_size,x) \ + FAST_GPFLAGSET(line, pe_copy_src_size,x,PE_COPY_SRC_SIZE_X) + +#define SC_PE_COPY_SRC_SIZE_SET_Y(line, pe_copy_src_size,y) \ + FAST_GPFLAGSET(line, pe_copy_src_size,y,PE_COPY_SRC_SIZE_Y) + +#define SC_PE_COPY_SRC_SIZE_SET_PAD0(line, pe_copy_src_size,pad0) \ + FAST_GPFLAGSET(line, pe_copy_src_size,pad0,PE_COPY_SRC_SIZE_PAD0) + +#define SC_PE_COPY_SRC_SIZE_SET_RID(line, pe_copy_src_size,rid) \ + FAST_GPFLAGSET(line, pe_copy_src_size,rid,PE_COPY_SRC_SIZE_RID) + +#define SC_PE_COPY_DST_BASE_SET_BASE(line, pe_copy_dst_base,base) \ + FAST_GPFLAGSET(line, pe_copy_dst_base,base,PE_COPY_DST_BASE_BASE) + +#define SC_PE_COPY_DST_BASE_SET_PAD0(line, pe_copy_dst_base,pad0) \ + FAST_GPFLAGSET(line, pe_copy_dst_base,pad0,PE_COPY_DST_BASE_PAD0) + +#define SC_PE_COPY_DST_BASE_SET_RID(line, pe_copy_dst_base,rid) \ + FAST_GPFLAGSET(line, pe_copy_dst_base,rid,PE_COPY_DST_BASE_RID) + +#define SC_PE_COPY_DST_STRIDE_SET_STRIDE(line, pe_copy_dst_stride,stride) \ + FAST_GPFLAGSET(line, pe_copy_dst_stride,stride,PE_COPY_DST_STRIDE_STRIDE) + +#define SC_PE_COPY_DST_STRIDE_SET_PAD0(line, pe_copy_dst_stride,pad0) \ + FAST_GPFLAGSET(line, pe_copy_dst_stride,pad0,PE_COPY_DST_STRIDE_PAD0) + +#define SC_PE_COPY_DST_STRIDE_SET_RID(line, pe_copy_dst_stride,rid) \ + FAST_GPFLAGSET(line, pe_copy_dst_stride,rid,PE_COPY_DST_STRIDE_RID) + +#define SC_PE_COPY_SCALE_SET_SCALE(line, pe_copy_scale,scale) \ + FAST_GPFLAGSET(line, pe_copy_scale,scale,PE_COPY_SCALE_SCALE) + +#define SC_PE_COPY_SCALE_SET_PAD0(line, pe_copy_scale,pad0) \ + FAST_GPFLAGSET(line, pe_copy_scale,pad0,PE_COPY_SCALE_PAD0) + +#define SC_PE_COPY_SCALE_SET_RID(line, pe_copy_scale,rid) \ + FAST_GPFLAGSET(line, pe_copy_scale,rid,PE_COPY_SCALE_RID) + +#define SC_PE_COPY_CLEAR_COLOR_AR_SET_RED(line, pe_copy_clear_color_ar,red) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_ar,red,PE_COPY_CLEAR_COLOR_AR_RED) + +#define SC_PE_COPY_CLEAR_COLOR_AR_SET_ALPHA(line, pe_copy_clear_color_ar,alpha) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_ar,alpha,PE_COPY_CLEAR_COLOR_AR_ALPHA) + +#define SC_PE_COPY_CLEAR_COLOR_AR_SET_PAD0(line, pe_copy_clear_color_ar,pad0) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_ar,pad0,PE_COPY_CLEAR_COLOR_AR_PAD0) + +#define SC_PE_COPY_CLEAR_COLOR_AR_SET_RID(line, pe_copy_clear_color_ar,rid) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_ar,rid,PE_COPY_CLEAR_COLOR_AR_RID) + +#define SC_PE_COPY_CLEAR_COLOR_GB_SET_BLUE(line, pe_copy_clear_color_gb,blue) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_gb,blue,PE_COPY_CLEAR_COLOR_GB_BLUE) + +#define SC_PE_COPY_CLEAR_COLOR_GB_SET_GREEN(line, pe_copy_clear_color_gb,green) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_gb,green,PE_COPY_CLEAR_COLOR_GB_GREEN) + +#define SC_PE_COPY_CLEAR_COLOR_GB_SET_PAD0(line, pe_copy_clear_color_gb,pad0) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_gb,pad0,PE_COPY_CLEAR_COLOR_GB_PAD0) + +#define SC_PE_COPY_CLEAR_COLOR_GB_SET_RID(line, pe_copy_clear_color_gb,rid) \ + FAST_GPFLAGSET(line, pe_copy_clear_color_gb,rid,PE_COPY_CLEAR_COLOR_GB_RID) + +#define SC_PE_COPY_CLEAR_Z_SET_DATA(line, pe_copy_clear_z,data) \ + FAST_GPFLAGSET(line, pe_copy_clear_z,data,PE_COPY_CLEAR_Z_DATA) + +#define SC_PE_COPY_CLEAR_Z_SET_RID(line, pe_copy_clear_z,rid) \ + FAST_GPFLAGSET(line, pe_copy_clear_z,rid,PE_COPY_CLEAR_Z_RID) + +#define SC_PE_COPY_CMD_SET_CLAMP_TOP(line, pe_copy_cmd,clamp_top) \ + FAST_GPFLAGSET(line, pe_copy_cmd,clamp_top,PE_COPY_CMD_CLAMP_TOP) + +#define SC_PE_COPY_CMD_SET_CLAMP_BOTTOM(line, pe_copy_cmd,clamp_bottom) \ + FAST_GPFLAGSET(line, pe_copy_cmd,clamp_bottom,PE_COPY_CMD_CLAMP_BOTTOM) + +#define SC_PE_COPY_CMD_SET_PAD0(line, pe_copy_cmd,pad0) \ + FAST_GPFLAGSET(line, pe_copy_cmd,pad0,PE_COPY_CMD_PAD0) + +#define SC_PE_COPY_CMD_SET_TEX_FORMATH(line, pe_copy_cmd,tex_formatH) \ + FAST_GPFLAGSET(line, pe_copy_cmd,tex_formatH,PE_COPY_CMD_TEX_FORMATH) + +#define SC_PE_COPY_CMD_SET_TEX_FORMAT(line, pe_copy_cmd,tex_format) \ + FAST_GPFLAGSET(line, pe_copy_cmd,tex_format,PE_COPY_CMD_TEX_FORMAT) + +#define SC_PE_COPY_CMD_SET_GAMMA(line, pe_copy_cmd,gamma) \ + FAST_GPFLAGSET(line, pe_copy_cmd,gamma,PE_COPY_CMD_GAMMA) + +#define SC_PE_COPY_CMD_SET_MIP_MAP_FILTER(line, pe_copy_cmd,mip_map_filter) \ + FAST_GPFLAGSET(line, pe_copy_cmd,mip_map_filter,PE_COPY_CMD_MIP_MAP_FILTER) + +#define SC_PE_COPY_CMD_SET_VERTICAL_SCALE(line, pe_copy_cmd,vertical_scale) \ + FAST_GPFLAGSET(line, pe_copy_cmd,vertical_scale,PE_COPY_CMD_VERTICAL_SCALE) + +#define SC_PE_COPY_CMD_SET_CLEAR(line, pe_copy_cmd,clear) \ + FAST_GPFLAGSET(line, pe_copy_cmd,clear,PE_COPY_CMD_CLEAR) + +#define SC_PE_COPY_CMD_SET_INTERLACED(line, pe_copy_cmd,interlaced) \ + FAST_GPFLAGSET(line, pe_copy_cmd,interlaced,PE_COPY_CMD_INTERLACED) + +#define SC_PE_COPY_CMD_SET_OPCODE(line, pe_copy_cmd,opcode) \ + FAST_GPFLAGSET(line, pe_copy_cmd,opcode,PE_COPY_CMD_OPCODE) + +#define SC_PE_COPY_CMD_SET_CCV(line, pe_copy_cmd,ccv) \ + FAST_GPFLAGSET(line, pe_copy_cmd,ccv,PE_COPY_CMD_CCV) + +#define SC_PE_COPY_CMD_SET_PAD1(line, pe_copy_cmd,pad1) \ + FAST_GPFLAGSET(line, pe_copy_cmd,pad1,PE_COPY_CMD_PAD1) + +#define SC_PE_COPY_CMD_SET_RID(line, pe_copy_cmd,rid) \ + FAST_GPFLAGSET(line, pe_copy_cmd,rid,PE_COPY_CMD_RID) + +#define SC_PE_COPY_VFILTER0_SET_COEFF0(line, pe_copy_vfilter0,coeff0) \ + FAST_GPFLAGSET(line, pe_copy_vfilter0,coeff0,PE_COPY_VFILTER0_COEFF0) + +#define SC_PE_COPY_VFILTER0_SET_COEFF1(line, pe_copy_vfilter0,coeff1) \ + FAST_GPFLAGSET(line, pe_copy_vfilter0,coeff1,PE_COPY_VFILTER0_COEFF1) + +#define SC_PE_COPY_VFILTER0_SET_COEFF2(line, pe_copy_vfilter0,coeff2) \ + FAST_GPFLAGSET(line, pe_copy_vfilter0,coeff2,PE_COPY_VFILTER0_COEFF2) + +#define SC_PE_COPY_VFILTER0_SET_COEFF3(line, pe_copy_vfilter0,coeff3) \ + FAST_GPFLAGSET(line, pe_copy_vfilter0,coeff3,PE_COPY_VFILTER0_COEFF3) + +#define SC_PE_COPY_VFILTER0_SET_RID(line, pe_copy_vfilter0,rid) \ + FAST_GPFLAGSET(line, pe_copy_vfilter0,rid,PE_COPY_VFILTER0_RID) + +#define SC_PE_COPY_VFILTER1_SET_COEFF4(line, pe_copy_vfilter1,coeff4) \ + FAST_GPFLAGSET(line, pe_copy_vfilter1,coeff4,PE_COPY_VFILTER1_COEFF4) + +#define SC_PE_COPY_VFILTER1_SET_COEFF5(line, pe_copy_vfilter1,coeff5) \ + FAST_GPFLAGSET(line, pe_copy_vfilter1,coeff5,PE_COPY_VFILTER1_COEFF5) + +#define SC_PE_COPY_VFILTER1_SET_COEFF6(line, pe_copy_vfilter1,coeff6) \ + FAST_GPFLAGSET(line, pe_copy_vfilter1,coeff6,PE_COPY_VFILTER1_COEFF6) + +#define SC_PE_COPY_VFILTER1_SET_PAD0(line, pe_copy_vfilter1,pad0) \ + FAST_GPFLAGSET(line, pe_copy_vfilter1,pad0,PE_COPY_VFILTER1_PAD0) + +#define SC_PE_COPY_VFILTER1_SET_RID(line, pe_copy_vfilter1,rid) \ + FAST_GPFLAGSET(line, pe_copy_vfilter1,rid,PE_COPY_VFILTER1_RID) + +#define SC_PE_XBOUND_SET_LEFT(line, pe_xbound,left) \ + FAST_GPFLAGSET(line, pe_xbound,left,PE_XBOUND_LEFT) + +#define SC_PE_XBOUND_SET_RIGHT(line, pe_xbound,right) \ + FAST_GPFLAGSET(line, pe_xbound,right,PE_XBOUND_RIGHT) + +#define SC_PE_XBOUND_SET_PAD0(line, pe_xbound,pad0) \ + FAST_GPFLAGSET(line, pe_xbound,pad0,PE_XBOUND_PAD0) + +#define SC_PE_XBOUND_SET_RID(line, pe_xbound,rid) \ + FAST_GPFLAGSET(line, pe_xbound,rid,PE_XBOUND_RID) + +#define SC_PE_YBOUND_SET_TOP(line, pe_ybound,top) \ + FAST_GPFLAGSET(line, pe_ybound,top,PE_YBOUND_TOP) + +#define SC_PE_YBOUND_SET_BOTTOM(line, pe_ybound,bottom) \ + FAST_GPFLAGSET(line, pe_ybound,bottom,PE_YBOUND_BOTTOM) + +#define SC_PE_YBOUND_SET_PAD0(line, pe_ybound,pad0) \ + FAST_GPFLAGSET(line, pe_ybound,pad0,PE_YBOUND_PAD0) + +#define SC_PE_YBOUND_SET_RID(line, pe_ybound,rid) \ + FAST_GPFLAGSET(line, pe_ybound,rid,PE_YBOUND_RID) + +#define SC_PE_PERFMODE_SET_CNTR0(line, pe_perfmode,cntr0) \ + FAST_GPFLAGSET(line, pe_perfmode,cntr0,PE_PERFMODE_CNTR0) + +#define SC_PE_PERFMODE_SET_CNTR1(line, pe_perfmode,cntr1) \ + FAST_GPFLAGSET(line, pe_perfmode,cntr1,PE_PERFMODE_CNTR1) + +#define SC_PE_PERFMODE_SET_CNTR2(line, pe_perfmode,cntr2) \ + FAST_GPFLAGSET(line, pe_perfmode,cntr2,PE_PERFMODE_CNTR2) + +#define SC_PE_PERFMODE_SET_CNTR3(line, pe_perfmode,cntr3) \ + FAST_GPFLAGSET(line, pe_perfmode,cntr3,PE_PERFMODE_CNTR3) + +#define SC_PE_PERFMODE_SET_CNTR4(line, pe_perfmode,cntr4) \ + FAST_GPFLAGSET(line, pe_perfmode,cntr4,PE_PERFMODE_CNTR4) + +#define SC_PE_PERFMODE_SET_CNTR5(line, pe_perfmode,cntr5) \ + FAST_GPFLAGSET(line, pe_perfmode,cntr5,PE_PERFMODE_CNTR5) + +#define SC_PE_PERFMODE_SET_PAD0(line, pe_perfmode,pad0) \ + FAST_GPFLAGSET(line, pe_perfmode,pad0,PE_PERFMODE_PAD0) + +#define SC_PE_PERFMODE_SET_RID(line, pe_perfmode,rid) \ + FAST_GPFLAGSET(line, pe_perfmode,rid,PE_PERFMODE_RID) + +#define SC_PE_CHICKEN_SET_PIWR(line, pe_chicken,piwr) \ + FAST_GPFLAGSET(line, pe_chicken,piwr,PE_CHICKEN_PIWR) + +#define SC_PE_CHICKEN_SET_TXCPY_FMT(line, pe_chicken,txcpy_fmt) \ + FAST_GPFLAGSET(line, pe_chicken,txcpy_fmt,PE_CHICKEN_TXCPY_FMT) + +#define SC_PE_CHICKEN_SET_TXCPY_CCV(line, pe_chicken,txcpy_ccv) \ + FAST_GPFLAGSET(line, pe_chicken,txcpy_ccv,PE_CHICKEN_TXCPY_CCV) + +#define SC_PE_CHICKEN_SET_BLENDOP(line, pe_chicken,blendop) \ + FAST_GPFLAGSET(line, pe_chicken,blendop,PE_CHICKEN_BLENDOP) + +#define SC_PE_CHICKEN_SET_PAD0(line, pe_chicken,pad0) \ + FAST_GPFLAGSET(line, pe_chicken,pad0,PE_CHICKEN_PAD0) + +#define SC_PE_CHICKEN_SET_RID(line, pe_chicken,rid) \ + FAST_GPFLAGSET(line, pe_chicken,rid,PE_CHICKEN_RID) + +#define SC_PE_QUAD_OFFSET_SET_X(line, pe_quad_offset,x) \ + FAST_GPFLAGSET(line, pe_quad_offset,x,PE_QUAD_OFFSET_X) + +#define SC_PE_QUAD_OFFSET_SET_Y(line, pe_quad_offset,y) \ + FAST_GPFLAGSET(line, pe_quad_offset,y,PE_QUAD_OFFSET_Y) + +#define SC_PE_QUAD_OFFSET_SET_PAD0(line, pe_quad_offset,pad0) \ + FAST_GPFLAGSET(line, pe_quad_offset,pad0,PE_QUAD_OFFSET_PAD0) + +#define SC_PE_QUAD_OFFSET_SET_RID(line, pe_quad_offset,rid) \ + FAST_GPFLAGSET(line, pe_quad_offset,rid,PE_QUAD_OFFSET_RID) + +#define SC_PE_COLOR_RGB8_SET_BLUE(line, pe_color_rgb8,blue) \ + FAST_GPFLAGSET(line, pe_color_rgb8,blue,PE_COLOR_RGB8_BLUE) + +#define SC_PE_COLOR_RGB8_SET_GREEN(line, pe_color_rgb8,green) \ + FAST_GPFLAGSET(line, pe_color_rgb8,green,PE_COLOR_RGB8_GREEN) + +#define SC_PE_COLOR_RGB8_SET_RED(line, pe_color_rgb8,red) \ + FAST_GPFLAGSET(line, pe_color_rgb8,red,PE_COLOR_RGB8_RED) + +#define SC_PE_COLOR_RGB8_SET_PAD0(line, pe_color_rgb8,pad0) \ + FAST_GPFLAGSET(line, pe_color_rgb8,pad0,PE_COLOR_RGB8_PAD0) + +#define SC_PE_COLOR_RGBA6_SET_ALPHA(line, pe_color_rgba6,alpha) \ + FAST_GPFLAGSET(line, pe_color_rgba6,alpha,PE_COLOR_RGBA6_ALPHA) + +#define SC_PE_COLOR_RGBA6_SET_BLUE(line, pe_color_rgba6,blue) \ + FAST_GPFLAGSET(line, pe_color_rgba6,blue,PE_COLOR_RGBA6_BLUE) + +#define SC_PE_COLOR_RGBA6_SET_GREEN(line, pe_color_rgba6,green) \ + FAST_GPFLAGSET(line, pe_color_rgba6,green,PE_COLOR_RGBA6_GREEN) + +#define SC_PE_COLOR_RGBA6_SET_RED(line, pe_color_rgba6,red) \ + FAST_GPFLAGSET(line, pe_color_rgba6,red,PE_COLOR_RGBA6_RED) + +#define SC_PE_COLOR_RGBA6_SET_PAD0(line, pe_color_rgba6,pad0) \ + FAST_GPFLAGSET(line, pe_color_rgba6,pad0,PE_COLOR_RGBA6_PAD0) + +#define SC_PE_COLOR_RGBAA_SET_BLUE(line, pe_color_rgbaa,blue) \ + FAST_GPFLAGSET(line, pe_color_rgbaa,blue,PE_COLOR_RGBAA_BLUE) + +#define SC_PE_COLOR_RGBAA_SET_GREEN(line, pe_color_rgbaa,green) \ + FAST_GPFLAGSET(line, pe_color_rgbaa,green,PE_COLOR_RGBAA_GREEN) + +#define SC_PE_COLOR_RGBAA_SET_RED(line, pe_color_rgbaa,red) \ + FAST_GPFLAGSET(line, pe_color_rgbaa,red,PE_COLOR_RGBAA_RED) + +#define SC_PE_TEX_COPY_I4_SET_I1(line, pe_tex_copy_i4,i1) \ + FAST_GPFLAGSET(line, pe_tex_copy_i4,i1,PE_TEX_COPY_I4_I1) + +#define SC_PE_TEX_COPY_I4_SET_I0(line, pe_tex_copy_i4,i0) \ + FAST_GPFLAGSET(line, pe_tex_copy_i4,i0,PE_TEX_COPY_I4_I0) + +#define SC_PE_TEX_COPY_IA4_SET_I(line, pe_tex_copy_ia4,i) \ + FAST_GPFLAGSET(line, pe_tex_copy_ia4,i,PE_TEX_COPY_IA4_I) + +#define SC_PE_TEX_COPY_IA4_SET_ALPHA(line, pe_tex_copy_ia4,alpha) \ + FAST_GPFLAGSET(line, pe_tex_copy_ia4,alpha,PE_TEX_COPY_IA4_ALPHA) + +#define SC_PE_TEX_COPY_IA8_SET_I(line, pe_tex_copy_ia8,i) \ + FAST_GPFLAGSET(line, pe_tex_copy_ia8,i,PE_TEX_COPY_IA8_I) + +#define SC_PE_TEX_COPY_IA8_SET_ALPHA(line, pe_tex_copy_ia8,alpha) \ + FAST_GPFLAGSET(line, pe_tex_copy_ia8,alpha,PE_TEX_COPY_IA8_ALPHA) + +#define SC_PE_TEX_COPY_R5G6B5_SET_BLUE(line, pe_tex_copy_r5g6b5,blue) \ + FAST_GPFLAGSET(line, pe_tex_copy_r5g6b5,blue,PE_TEX_COPY_R5G6B5_BLUE) + +#define SC_PE_TEX_COPY_R5G6B5_SET_GREEN(line, pe_tex_copy_r5g6b5,green) \ + FAST_GPFLAGSET(line, pe_tex_copy_r5g6b5,green,PE_TEX_COPY_R5G6B5_GREEN) + +#define SC_PE_TEX_COPY_R5G6B5_SET_RED(line, pe_tex_copy_r5g6b5,red) \ + FAST_GPFLAGSET(line, pe_tex_copy_r5g6b5,red,PE_TEX_COPY_R5G6B5_RED) + +#define SC_PE_TEX_COPY_RGB5_SET_BLUE(line, pe_tex_copy_rgb5,blue) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb5,blue,PE_TEX_COPY_RGB5_BLUE) + +#define SC_PE_TEX_COPY_RGB5_SET_GREEN(line, pe_tex_copy_rgb5,green) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb5,green,PE_TEX_COPY_RGB5_GREEN) + +#define SC_PE_TEX_COPY_RGB5_SET_RED(line, pe_tex_copy_rgb5,red) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb5,red,PE_TEX_COPY_RGB5_RED) + +#define SC_PE_TEX_COPY_RGB5_SET_FORMAT(line, pe_tex_copy_rgb5,format) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb5,format,PE_TEX_COPY_RGB5_FORMAT) + +#define SC_PE_TEX_COPY_RGB4A3_SET_BLUE(line, pe_tex_copy_rgb4a3,blue) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb4a3,blue,PE_TEX_COPY_RGB4A3_BLUE) + +#define SC_PE_TEX_COPY_RGB4A3_SET_GREEN(line, pe_tex_copy_rgb4a3,green) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb4a3,green,PE_TEX_COPY_RGB4A3_GREEN) + +#define SC_PE_TEX_COPY_RGB4A3_SET_RED(line, pe_tex_copy_rgb4a3,red) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb4a3,red,PE_TEX_COPY_RGB4A3_RED) + +#define SC_PE_TEX_COPY_RGB4A3_SET_ALPHA(line, pe_tex_copy_rgb4a3,alpha) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb4a3,alpha,PE_TEX_COPY_RGB4A3_ALPHA) + +#define SC_PE_TEX_COPY_RGB4A3_SET_FORMAT(line, pe_tex_copy_rgb4a3,format) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgb4a3,format,PE_TEX_COPY_RGB4A3_FORMAT) + +#define SC_PE_TEX_COPY_RGBA8_SET_RED(line, pe_tex_copy_rgba8,red) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgba8,red,PE_TEX_COPY_RGBA8_RED) + +#define SC_PE_TEX_COPY_RGBA8_SET_ALPHA(line, pe_tex_copy_rgba8,alpha) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgba8,alpha,PE_TEX_COPY_RGBA8_ALPHA) + +#define SC_PE_TEX_COPY_RGBA8_SET_BLUE(line, pe_tex_copy_rgba8,blue) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgba8,blue,PE_TEX_COPY_RGBA8_BLUE) + +#define SC_PE_TEX_COPY_RGBA8_SET_GREEN(line, pe_tex_copy_rgba8,green) \ + FAST_GPFLAGSET(line, pe_tex_copy_rgba8,green,PE_TEX_COPY_RGBA8_GREEN) + +#define SC_PE_MASK_SET_M0(line, pe_mask,m0) \ + FAST_GPFLAGSET(line, pe_mask,m0,PE_MASK_M0) + +#define SC_PE_MASK_SET_M1(line, pe_mask,m1) \ + FAST_GPFLAGSET(line, pe_mask,m1,PE_MASK_M1) + +#define SC_PE_MASK_SET_M2(line, pe_mask,m2) \ + FAST_GPFLAGSET(line, pe_mask,m2,PE_MASK_M2) + +#define SC_PE_MASK_SET_M3(line, pe_mask,m3) \ + FAST_GPFLAGSET(line, pe_mask,m3,PE_MASK_M3) + +#define SC_PE_MISC_SET_V0(line, pe_misc,v0) \ + FAST_GPFLAGSET(line, pe_misc,v0,PE_MISC_V0) + +#define SC_PE_MISC_SET_V1(line, pe_misc,v1) \ + FAST_GPFLAGSET(line, pe_misc,v1,PE_MISC_V1) + +#define SC_PE_MISC_SET_V2(line, pe_misc,v2) \ + FAST_GPFLAGSET(line, pe_misc,v2,PE_MISC_V2) + +#define SC_PE_MISC_SET_V3(line, pe_misc,v3) \ + FAST_GPFLAGSET(line, pe_misc,v3,PE_MISC_V3) + +#define SC_PE_MISC_SET_ST(line, pe_misc,st) \ + FAST_GPFLAGSET(line, pe_misc,st,PE_MISC_ST) + +#define SC_PE_MISC_SET_SB(line, pe_misc,sb) \ + FAST_GPFLAGSET(line, pe_misc,sb,PE_MISC_SB) + +#define SC_PE_MISC_SET_SL(line, pe_misc,sl) \ + FAST_GPFLAGSET(line, pe_misc,sl,PE_MISC_SL) + +#define SC_PE_MISC_SET_SR(line, pe_misc,sr) \ + FAST_GPFLAGSET(line, pe_misc,sr,PE_MISC_SR) + +#define SC_PE_MISC_SET_TT(line, pe_misc,tt) \ + FAST_GPFLAGSET(line, pe_misc,tt,PE_MISC_TT) + +#define SC_PE_MISC_SET_TB(line, pe_misc,tb) \ + FAST_GPFLAGSET(line, pe_misc,tb,PE_MISC_TB) + +#define SC_PE_MISC_SET_TL(line, pe_misc,tl) \ + FAST_GPFLAGSET(line, pe_misc,tl,PE_MISC_TL) + +#define SC_PE_MISC_SET_TR(line, pe_misc,tr) \ + FAST_GPFLAGSET(line, pe_misc,tr,PE_MISC_TR) + +#define SC_PE_MISC_SET_TM(line, pe_misc,tm) \ + FAST_GPFLAGSET(line, pe_misc,tm,PE_MISC_TM) + +#define SC_PE_MISC_SET_TP(line, pe_misc,tp) \ + FAST_GPFLAGSET(line, pe_misc,tp,PE_MISC_TP) + +#define SC_PE_MISC_SET_SV(line, pe_misc,sv) \ + FAST_GPFLAGSET(line, pe_misc,sv,PE_MISC_SV) + +#define SC_PE_TAG_SET_CYCLE(line, pe_tag,cycle) \ + FAST_GPFLAGSET(line, pe_tag,cycle,PE_TAG_CYCLE) + +#define SC_PE_TAG_SET_YEC(line, pe_tag,yec) \ + FAST_GPFLAGSET(line, pe_tag,yec,PE_TAG_YEC) + +#define SC_PE_TAG_SET_YOC(line, pe_tag,yoc) \ + FAST_GPFLAGSET(line, pe_tag,yoc,PE_TAG_YOC) + +#define SC_PE_TAG_SET_XOC(line, pe_tag,xoc) \ + FAST_GPFLAGSET(line, pe_tag,xoc,PE_TAG_XOC) + +#define SC_PE_TAG_SET_CLR(line, pe_tag,clr) \ + FAST_GPFLAGSET(line, pe_tag,clr,PE_TAG_CLR) + +#define SC_PE_CMD_SET_VALID(line, pe_cmd,valid) \ + FAST_GPFLAGSET(line, pe_cmd,valid,PE_CMD_VALID) + +#define SC_PE_CMD_SET_OP(line, pe_cmd,op) \ + FAST_GPFLAGSET(line, pe_cmd,op,PE_CMD_OP) + +#define SC_PE_CMD_SET_BANKA(line, pe_cmd,bankA) \ + FAST_GPFLAGSET(line, pe_cmd,bankA,PE_CMD_BANKA) + +#define SC_PE_CMD_SET_BANKB(line, pe_cmd,bankB) \ + FAST_GPFLAGSET(line, pe_cmd,bankB,PE_CMD_BANKB) + +#define SC_PE_INTRCTL_SET_INT0EN(line, pe_intrctl,int0en) \ + FAST_GPFLAGSET(line, pe_intrctl,int0en,PE_INTRCTL_INT0EN) + +#define SC_PE_INTRCTL_SET_INT1EN(line, pe_intrctl,int1en) \ + FAST_GPFLAGSET(line, pe_intrctl,int1en,PE_INTRCTL_INT1EN) + +#define SC_PE_INTRCTL_SET_INT0CLR(line, pe_intrctl,int0clr) \ + FAST_GPFLAGSET(line, pe_intrctl,int0clr,PE_INTRCTL_INT0CLR) + +#define SC_PE_INTRCTL_SET_INT1CLR(line, pe_intrctl,int1clr) \ + FAST_GPFLAGSET(line, pe_intrctl,int1clr,PE_INTRCTL_INT1CLR) + +#define SC_PE_PI_EFB_ADDR_SET_PAD0(line, pe_pi_efb_addr,pad0) \ + FAST_GPFLAGSET(line, pe_pi_efb_addr,pad0,PE_PI_EFB_ADDR_PAD0) + +#define SC_PE_PI_EFB_ADDR_SET_X(line, pe_pi_efb_addr,x) \ + FAST_GPFLAGSET(line, pe_pi_efb_addr,x,PE_PI_EFB_ADDR_X) + +#define SC_PE_PI_EFB_ADDR_SET_Y(line, pe_pi_efb_addr,y) \ + FAST_GPFLAGSET(line, pe_pi_efb_addr,y,PE_PI_EFB_ADDR_Y) + +#define SC_PE_PI_EFB_ADDR_SET_TYPE(line, pe_pi_efb_addr,type) \ + FAST_GPFLAGSET(line, pe_pi_efb_addr,type,PE_PI_EFB_ADDR_TYPE) + +#define SC_PE_PI_ZMODE_SET_ZEN(line, pe_pi_zmode,zen) \ + FAST_GPFLAGSET(line, pe_pi_zmode,zen,PE_PI_ZMODE_ZEN) + +#define SC_PE_PI_ZMODE_SET_ZFUNC(line, pe_pi_zmode,zfunc) \ + FAST_GPFLAGSET(line, pe_pi_zmode,zfunc,PE_PI_ZMODE_ZFUNC) + +#define SC_PE_PI_ZMODE_SET_MASK(line, pe_pi_zmode,mask) \ + FAST_GPFLAGSET(line, pe_pi_zmode,mask,PE_PI_ZMODE_MASK) + +#define SC_PE_PI_ZMODE_SET_PAD0(line, pe_pi_zmode,pad0) \ + FAST_GPFLAGSET(line, pe_pi_zmode,pad0,PE_PI_ZMODE_PAD0) + +#define SC_PE_PI_ZMODE_SET_RID(line, pe_pi_zmode,rid) \ + FAST_GPFLAGSET(line, pe_pi_zmode,rid,PE_PI_ZMODE_RID) + +#define SC_PE_PI_CMODE0_SET_BEN(line, pe_pi_cmode0,ben) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,ben,PE_PI_CMODE0_BEN) + +#define SC_PE_PI_CMODE0_SET_LEN(line, pe_pi_cmode0,len) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,len,PE_PI_CMODE0_LEN) + +#define SC_PE_PI_CMODE0_SET_DEN(line, pe_pi_cmode0,den) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,den,PE_PI_CMODE0_DEN) + +#define SC_PE_PI_CMODE0_SET_CMSK(line, pe_pi_cmode0,cmsk) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,cmsk,PE_PI_CMODE0_CMSK) + +#define SC_PE_PI_CMODE0_SET_AMSK(line, pe_pi_cmode0,amsk) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,amsk,PE_PI_CMODE0_AMSK) + +#define SC_PE_PI_CMODE0_SET_DFACTOR(line, pe_pi_cmode0,dfactor) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,dfactor,PE_PI_CMODE0_DFACTOR) + +#define SC_PE_PI_CMODE0_SET_SFACTOR(line, pe_pi_cmode0,sfactor) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,sfactor,PE_PI_CMODE0_SFACTOR) + +#define SC_PE_PI_CMODE0_SET_LOGICOP(line, pe_pi_cmode0,logicop) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,logicop,PE_PI_CMODE0_LOGICOP) + +#define SC_PE_PI_CMODE0_SET_PAD0(line, pe_pi_cmode0,pad0) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,pad0,PE_PI_CMODE0_PAD0) + +#define SC_PE_PI_CMODE0_SET_RID(line, pe_pi_cmode0,rid) \ + FAST_GPFLAGSET(line, pe_pi_cmode0,rid,PE_PI_CMODE0_RID) + +#define SC_PE_PI_CMODE1_SET_CONSTALPHA(line, pe_pi_cmode1,constAlpha) \ + FAST_GPFLAGSET(line, pe_pi_cmode1,constAlpha,PE_PI_CMODE1_CONSTALPHA) + +#define SC_PE_PI_CMODE1_SET_EN(line, pe_pi_cmode1,en) \ + FAST_GPFLAGSET(line, pe_pi_cmode1,en,PE_PI_CMODE1_EN) + +#define SC_PE_PI_CMODE1_SET_PAD0(line, pe_pi_cmode1,pad0) \ + FAST_GPFLAGSET(line, pe_pi_cmode1,pad0,PE_PI_CMODE1_PAD0) + +#define SC_PE_PI_CMODE1_SET_RID(line, pe_pi_cmode1,rid) \ + FAST_GPFLAGSET(line, pe_pi_cmode1,rid,PE_PI_CMODE1_RID) + +#define SC_PE_PI_ALPHA_THRESHOLD_SET_ALPHA_THRESHOLD(line, pe_pi_alpha_threshold,alpha_threshold) \ + FAST_GPFLAGSET(line, pe_pi_alpha_threshold,alpha_threshold,PE_PI_ALPHA_THRESHOLD_ALPHA_THRESHOLD) + +#define SC_PE_PI_ALPHA_THRESHOLD_SET_AFUNCTION(line, pe_pi_alpha_threshold,afunction) \ + FAST_GPFLAGSET(line, pe_pi_alpha_threshold,afunction,PE_PI_ALPHA_THRESHOLD_AFUNCTION) + +#define SC_PE_PI_ALPHA_THRESHOLD_SET_PAD0(line, pe_pi_alpha_threshold,pad0) \ + FAST_GPFLAGSET(line, pe_pi_alpha_threshold,pad0,PE_PI_ALPHA_THRESHOLD_PAD0) + +#define SC_PE_PI_ALPHA_THRESHOLD_SET_RID(line, pe_pi_alpha_threshold,rid) \ + FAST_GPFLAGSET(line, pe_pi_alpha_threshold,rid,PE_PI_ALPHA_THRESHOLD_RID) + +#define SC_PE_PI_CTL_SET_AFMT(line, pe_pi_ctl,afmt) \ + FAST_GPFLAGSET(line, pe_pi_ctl,afmt,PE_PI_CTL_AFMT) + +#define SC_PE_PI_CTL_SET_ZFMT(line, pe_pi_ctl,zfmt) \ + FAST_GPFLAGSET(line, pe_pi_ctl,zfmt,PE_PI_CTL_ZFMT) + +#define SC_PE_PI_CTL_SET_PAD0(line, pe_pi_ctl,pad0) \ + FAST_GPFLAGSET(line, pe_pi_ctl,pad0,PE_PI_CTL_PAD0) + +#define SC_PE_PI_CTL_SET_RID(line, pe_pi_ctl,rid) \ + FAST_GPFLAGSET(line, pe_pi_ctl,rid,PE_PI_CTL_RID) + +#endif // PE_REG_H diff --git a/include/revolution/private/pi_reg.h b/include/revolution/private/pi_reg.h new file mode 100644 index 0000000000..37fe2c401a --- /dev/null +++ b/include/revolution/private/pi_reg.h @@ -0,0 +1,73 @@ +#ifndef PI_REG_H +#define PI_REG_H + +#include <revolution/private/GXFDLShortcut.h> + +#define PI_REG_INTSR 0x000 +#define PI_REG_INTMSK 0x004 +#define PI_REG_CPBAS 0x00C +#define PI_REG_CPTOP 0x010 +#define PI_REG_CPWRT 0x014 +#define PI_REG_CPABT 0x018 +#define PI_REG_PIESR 0x01C +#define PI_REG_PIEAR 0x020 +#define PI_REG_CONFIG 0x024 +#define PI_REG_DURAR 0x028 +#define PI_REG_CHIPID 0x02C +#define PI_REG_STRGTH 0x030 +#define PI_REG_CPUDBB 0x034 + +#define PI_REGSP_CP 0x0C000000 +#define PI_REGSP_PE 0x0C001000 +#define PI_REGSP_VI 0x0C002000 +#define PI_REGSP_PI 0x0C003000 +#define PI_REGSP_MEM 0x0C004000 +#define PI_REGSP_DSP 0x0C005000 +#define PI_REGSP_IO 0x0C006000 +#define PI_GFXSP 0x0C008000 + +#define PI_CPWRT_REG_CPWRT_SIZE 24 +#define PI_CPWRT_REG_CPWRT_SHIFT 5 +#define PI_CPWRT_REG_CPWRT_MASK 0x1fffffe0 +#define PI_CPWRT_REG_GET_CPWRT(pi_cpwrt_reg) \ + ((((unsigned long)(pi_cpwrt_reg)) & PI_CPWRT_REG_CPWRT_MASK) >> PI_CPWRT_REG_CPWRT_SHIFT) + +#define XF_PERF0_F_PERF_B_SIZE 5 +#define XF_PERF0_F_PERF_B_SHIFT 5 +#define XF_PERF0_F_PERF_B_MASK 0x000003e0 +#define XF_PERF0_F_GET_PERF_B(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_B_MASK) >> XF_PERF0_F_PERF_B_SHIFT) + +#define XF_PERF0_F_PERF_C_SIZE 5 +#define XF_PERF0_F_PERF_C_SHIFT 10 +#define XF_PERF0_F_PERF_C_MASK 0x00007c00 +#define XF_PERF0_F_GET_PERF_C(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_C_MASK) >> XF_PERF0_F_PERF_C_SHIFT) + +#define XF_PERF0_F_PERF_D_SIZE 5 +#define XF_PERF0_F_PERF_D_SHIFT 15 +#define XF_PERF0_F_PERF_D_MASK 0x000f8000 +#define XF_PERF0_F_GET_PERF_D(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_D_MASK) >> XF_PERF0_F_PERF_D_SHIFT) + +#define XF_PERF0_F_PERF_A_SIZE 5 +#define XF_PERF0_F_PERF_A_SHIFT 0 +#define XF_PERF0_F_PERF_A_MASK 0x0000001f +#define XF_PERF0_F_GET_PERF_A(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_A_MASK) >> XF_PERF0_F_PERF_A_SHIFT) + +#define PI_CPWRT_REG_CPWRAP_SIZE 1 +#define PI_CPWRT_REG_CPWRAP_SHIFT 29 +#define PI_CPWRT_REG_CPWRAP_MASK 0x20000000 +#define PI_CPWRT_REG_GET_CPWRAP(pi_cpwrt_reg) \ + ((((unsigned long)(pi_cpwrt_reg)) & PI_CPWRT_REG_CPWRAP_MASK) >> PI_CPWRT_REG_CPWRAP_SHIFT) + + +#define SC_PI_CPWRT_REG_SET_CPWRT(line, pi_cpwrt_reg,cpwrt) \ + FAST_GPFLAGSET(line, pi_cpwrt_reg,cpwrt,PI_CPWRT_REG_CPWRT) + +#define SC_PI_CPWRT_REG_SET_CPWRAP(line, pi_cpwrt_reg,cpwrap) \ + FAST_GPFLAGSET(line, pi_cpwrt_reg,cpwrap,PI_CPWRT_REG_CPWRAP) + + +#endif // PI_REG_H diff --git a/include/revolution/private/ras_reg.h b/include/revolution/private/ras_reg.h new file mode 100644 index 0000000000..58d56e86a8 --- /dev/null +++ b/include/revolution/private/ras_reg.h @@ -0,0 +1,232 @@ +#ifndef RAS_REG +#define RAS_REG + +#define RAS1_TREF_RID_SIZE 8 +#define RAS1_TREF_RID_SHIFT 24 +#define RAS1_TREF_RID_MASK 0xff000000 +#define RAS1_TREF_GET_RID(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_RID_MASK) >> RAS1_TREF_RID_SHIFT) + +#define RAS1_IREF_RID_SIZE 8 +#define RAS1_IREF_RID_SHIFT 24 +#define RAS1_IREF_RID_MASK 0xff000000 +#define RAS1_IREF_GET_RID(ras1_iref) \ + ((((unsigned long)(ras1_iref)) & RAS1_IREF_RID_MASK) >> RAS1_IREF_RID_SHIFT) + +#define RAS_PERF_SELA_SIZE 5 +#define RAS_PERF_SELA_SHIFT 0 +#define RAS_PERF_SELA_MASK 0x0000001f +#define RAS_PERF_GET_SELA(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_SELA_MASK) >> RAS_PERF_SELA_SHIFT) + +#define RAS_PERF_SELB_SIZE 5 +#define RAS_PERF_SELB_SHIFT 5 +#define RAS_PERF_SELB_MASK 0x000003e0 +#define RAS_PERF_GET_SELB(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_SELB_MASK) >> RAS_PERF_SELB_SHIFT) + +#define RAS_PERF_NTEV_SIZE 5 +#define RAS_PERF_NTEV_SHIFT 10 +#define RAS_PERF_NTEV_MASK 0x00007c00 +#define RAS_PERF_GET_NTEV(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_NTEV_MASK) >> RAS_PERF_NTEV_SHIFT) + +#define RAS_PERF_NBMP_SIZE 3 +#define RAS_PERF_NBMP_SHIFT 15 +#define RAS_PERF_NBMP_MASK 0x00038000 +#define RAS_PERF_GET_NBMP(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_NBMP_MASK) >> RAS_PERF_NBMP_SHIFT) + +#define RAS_PERF_NBR_SIZE 3 +#define RAS_PERF_NBR_SHIFT 18 +#define RAS_PERF_NBR_MASK 0x001c0000 +#define RAS_PERF_GET_NBR(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_NBR_MASK) >> RAS_PERF_NBR_SHIFT) + +#define RAS_PERF_PAD0_SIZE 3 +#define RAS_PERF_PAD0_SHIFT 21 +#define RAS_PERF_PAD0_MASK 0x00e00000 +#define RAS_PERF_GET_PAD0(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_PAD0_MASK) >> RAS_PERF_PAD0_SHIFT) +#define RAS_PERF_RID_SIZE 8 +#define RAS_PERF_RID_SHIFT 24 +#define RAS_PERF_RID_MASK 0xff000000 +#define RAS_PERF_GET_RID(ras_perf) \ + ((((unsigned long)(ras_perf)) & RAS_PERF_RID_MASK) >> RAS_PERF_RID_SHIFT) + +#define RAS_PERF_TOTAL_SIZE 32 +#define RAS_PERF(selA, selB, ntev, nbmp, nbr, rid) \ + ((((unsigned long)(selA)) << RAS_PERF_SELA_SHIFT) | \ + (((unsigned long)(selB)) << RAS_PERF_SELB_SHIFT) | \ + (((unsigned long)(ntev)) << RAS_PERF_NTEV_SHIFT) | \ + (((unsigned long)(nbmp)) << RAS_PERF_NBMP_SHIFT) | \ + (((unsigned long)(nbr)) << RAS_PERF_NBR_SHIFT) | \ + (((unsigned long)(rid)) << RAS_PERF_RID_SHIFT)) + +#define RAS1_TREF_TI0_SIZE 3 +#define RAS1_TREF_TI0_SHIFT 0 +#define RAS1_TREF_TI0_MASK 0x00000007 +#define RAS1_TREF_GET_TI0(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_TI0_MASK) >> RAS1_TREF_TI0_SHIFT) + +#define RAS1_TREF_TC0_SIZE 3 +#define RAS1_TREF_TC0_SHIFT 3 +#define RAS1_TREF_TC0_MASK 0x00000038 +#define RAS1_TREF_GET_TC0(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_TC0_MASK) >> RAS1_TREF_TC0_SHIFT) + +#define RAS1_TREF_TE0_SIZE 1 +#define RAS1_TREF_TE0_SHIFT 6 +#define RAS1_TREF_TE0_MASK 0x00000040 +#define RAS1_TREF_GET_TE0(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_TE0_MASK) >> RAS1_TREF_TE0_SHIFT) + +#define RAS1_TREF_CC0_SIZE 3 +#define RAS1_TREF_CC0_SHIFT 7 +#define RAS1_TREF_CC0_MASK 0x00000380 +#define RAS1_TREF_GET_CC0(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_CC0_MASK) >> RAS1_TREF_CC0_SHIFT) + +#define RAS1_TREF_PAD0_SIZE 2 +#define RAS1_TREF_PAD0_SHIFT 10 +#define RAS1_TREF_PAD0_MASK 0x00000c00 +#define RAS1_TREF_GET_PAD0(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_PAD0_MASK) >> RAS1_TREF_PAD0_SHIFT) + +#define RAS1_TREF_TI1_SIZE 3 +#define RAS1_TREF_TI1_SHIFT 12 +#define RAS1_TREF_TI1_MASK 0x00007000 +#define RAS1_TREF_GET_TI1(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_TI1_MASK) >> RAS1_TREF_TI1_SHIFT) + +#define RAS1_TREF_TC1_SIZE 3 +#define RAS1_TREF_TC1_SHIFT 15 +#define RAS1_TREF_TC1_MASK 0x00038000 +#define RAS1_TREF_GET_TC1(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_TC1_MASK) >> RAS1_TREF_TC1_SHIFT) + +#define RAS1_TREF_TE1_SIZE 1 +#define RAS1_TREF_TE1_SHIFT 18 +#define RAS1_TREF_TE1_MASK 0x00040000 +#define RAS1_TREF_GET_TE1(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_TE1_MASK) >> RAS1_TREF_TE1_SHIFT) + +#define RAS1_TREF_CC1_SIZE 3 +#define RAS1_TREF_CC1_SHIFT 19 +#define RAS1_TREF_CC1_MASK 0x00380000 +#define RAS1_TREF_GET_CC1(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_CC1_MASK) >> RAS1_TREF_CC1_SHIFT) + +#define RAS1_TREF_PAD1_SIZE 2 +#define RAS1_TREF_PAD1_SHIFT 22 +#define RAS1_TREF_PAD1_MASK 0x00c00000 +#define RAS1_TREF_GET_PAD1(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_PAD1_MASK) >> RAS1_TREF_PAD1_SHIFT) + +#define RAS1_TREF_RID_SIZE 8 +#define RAS1_TREF_RID_SHIFT 24 +#define RAS1_TREF_RID_MASK 0xff000000 +#define RAS1_TREF_GET_RID(ras1_tref) \ + ((((unsigned long)(ras1_tref)) & RAS1_TREF_RID_MASK) >> RAS1_TREF_RID_SHIFT) + +#define SC_RAS1_SS_SET_SS0(line, ras1_ss,ss0) \ + FAST_GPFLAGSET(line, ras1_ss,ss0,RAS1_SS_SS0) + +#define SC_RAS1_SS_SET_TS0(line, ras1_ss,ts0) \ + FAST_GPFLAGSET(line, ras1_ss,ts0,RAS1_SS_TS0) + +#define SC_RAS1_SS_SET_SS1(line, ras1_ss,ss1) \ + FAST_GPFLAGSET(line, ras1_ss,ss1,RAS1_SS_SS1) + +#define SC_RAS1_SS_SET_TS1(line, ras1_ss,ts1) \ + FAST_GPFLAGSET(line, ras1_ss,ts1,RAS1_SS_TS1) + +#define SC_RAS1_SS_SET_PAD0(line, ras1_ss,pad0) \ + FAST_GPFLAGSET(line, ras1_ss,pad0,RAS1_SS_PAD0) + +#define SC_RAS1_SS_SET_RID(line, ras1_ss,rid) \ + FAST_GPFLAGSET(line, ras1_ss,rid,RAS1_SS_RID) + +#define SC_RAS1_IREF_SET_BI0(line, ras1_iref,bi0) \ + FAST_GPFLAGSET(line, ras1_iref,bi0,RAS1_IREF_BI0) + +#define SC_RAS1_IREF_SET_BC0(line, ras1_iref,bc0) \ + FAST_GPFLAGSET(line, ras1_iref,bc0,RAS1_IREF_BC0) + +#define SC_RAS1_IREF_SET_BI1(line, ras1_iref,bi1) \ + FAST_GPFLAGSET(line, ras1_iref,bi1,RAS1_IREF_BI1) + +#define SC_RAS1_IREF_SET_BC1(line, ras1_iref,bc1) \ + FAST_GPFLAGSET(line, ras1_iref,bc1,RAS1_IREF_BC1) + +#define SC_RAS1_IREF_SET_BI2(line, ras1_iref,bi2) \ + FAST_GPFLAGSET(line, ras1_iref,bi2,RAS1_IREF_BI2) + +#define SC_RAS1_IREF_SET_BC2(line, ras1_iref,bc2) \ + FAST_GPFLAGSET(line, ras1_iref,bc2,RAS1_IREF_BC2) + +#define SC_RAS1_IREF_SET_BI3(line, ras1_iref,bi3) \ + FAST_GPFLAGSET(line, ras1_iref,bi3,RAS1_IREF_BI3) + +#define SC_RAS1_IREF_SET_BC3(line, ras1_iref,bc3) \ + FAST_GPFLAGSET(line, ras1_iref,bc3,RAS1_IREF_BC3) + +#define SC_RAS1_IREF_SET_RID(line, ras1_iref,rid) \ + FAST_GPFLAGSET(line, ras1_iref,rid,RAS1_IREF_RID) + +#define SC_RAS1_TREF_SET_TI0(line, ras1_tref,ti0) \ + FAST_GPFLAGSET(line, ras1_tref,ti0,RAS1_TREF_TI0) + +#define SC_RAS1_TREF_SET_TC0(line, ras1_tref,tc0) \ + FAST_GPFLAGSET(line, ras1_tref,tc0,RAS1_TREF_TC0) + +#define SC_RAS1_TREF_SET_TE0(line, ras1_tref,te0) \ + FAST_GPFLAGSET(line, ras1_tref,te0,RAS1_TREF_TE0) + +#define SC_RAS1_TREF_SET_CC0(line, ras1_tref,cc0) \ + FAST_GPFLAGSET(line, ras1_tref,cc0,RAS1_TREF_CC0) + +#define SC_RAS1_TREF_SET_PAD0(line, ras1_tref,pad0) \ + FAST_GPFLAGSET(line, ras1_tref,pad0,RAS1_TREF_PAD0) + +#define SC_RAS1_TREF_SET_TI1(line, ras1_tref,ti1) \ + FAST_GPFLAGSET(line, ras1_tref,ti1,RAS1_TREF_TI1) + +#define SC_RAS1_TREF_SET_TC1(line, ras1_tref,tc1) \ + FAST_GPFLAGSET(line, ras1_tref,tc1,RAS1_TREF_TC1) + +#define SC_RAS1_TREF_SET_TE1(line, ras1_tref,te1) \ + FAST_GPFLAGSET(line, ras1_tref,te1,RAS1_TREF_TE1) + +#define SC_RAS1_TREF_SET_CC1(line, ras1_tref,cc1) \ + FAST_GPFLAGSET(line, ras1_tref,cc1,RAS1_TREF_CC1) + +#define SC_RAS1_TREF_SET_PAD1(line, ras1_tref,pad1) \ + FAST_GPFLAGSET(line, ras1_tref,pad1,RAS1_TREF_PAD1) + +#define SC_RAS1_TREF_SET_RID(line, ras1_tref,rid) \ + FAST_GPFLAGSET(line, ras1_tref,rid,RAS1_TREF_RID) + +#define SC_RAS_PERF_SET_SELA(line, ras_perf,selA) \ + FAST_GPFLAGSET(line, ras_perf,selA,RAS_PERF_SELA) + +#define SC_RAS_PERF_SET_SELB(line, ras_perf,selB) \ + FAST_GPFLAGSET(line, ras_perf,selB,RAS_PERF_SELB) + +#define SC_RAS_PERF_SET_NTEV(line, ras_perf,ntev) \ + FAST_GPFLAGSET(line, ras_perf,ntev,RAS_PERF_NTEV) + +#define SC_RAS_PERF_SET_NBMP(line, ras_perf,nbmp) \ + FAST_GPFLAGSET(line, ras_perf,nbmp,RAS_PERF_NBMP) + +#define SC_RAS_PERF_SET_NBR(line, ras_perf,nbr) \ + FAST_GPFLAGSET(line, ras_perf,nbr,RAS_PERF_NBR) + +#define SC_RAS_PERF_SET_PAD0(line, ras_perf,pad0) \ + FAST_GPFLAGSET(line, ras_perf,pad0,RAS_PERF_PAD0) + +#define SC_RAS_PERF_SET_RID(line, ras_perf,rid) \ + FAST_GPFLAGSET(line, ras_perf,rid,RAS_PERF_RID) + + +#endif // RAS_REG diff --git a/include/revolution/private/su_reg.h b/include/revolution/private/su_reg.h new file mode 100644 index 0000000000..afe7c7ca3b --- /dev/null +++ b/include/revolution/private/su_reg.h @@ -0,0 +1,387 @@ +#ifndef SU_REG_H +#define SU_REG_H + +#define SU_LPSIZE_RID_SIZE 8 +#define SU_LPSIZE_RID_SHIFT 24 +#define SU_LPSIZE_RID_MASK 0xff000000 +#define SU_LPSIZE_GET_RID(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_RID_MASK) >> SU_LPSIZE_RID_SHIFT) + + +#define SU_TS0_RID_SIZE 8 +#define SU_TS0_RID_SHIFT 24 +#define SU_TS0_RID_MASK 0xff000000 +#define SU_TS0_GET_RID(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_RID_MASK) >> SU_TS0_RID_SHIFT) + +#define SU_TS1_RID_SIZE 8 +#define SU_TS1_RID_SHIFT 24 +#define SU_TS1_RID_MASK 0xff000000 +#define SU_TS1_GET_RID(su_ts1) \ + ((((unsigned long)(su_ts1)) & SU_TS1_RID_MASK) >> SU_TS1_RID_SHIFT) + +#define SU_SCIS0_RID_SIZE 8 +#define SU_SCIS0_RID_SHIFT 24 +#define SU_SCIS0_RID_MASK 0xff000000 +#define SU_SCIS0_GET_RID(su_scis0) \ + ((((unsigned long)(su_scis0)) & SU_SCIS0_RID_MASK) >> SU_SCIS0_RID_SHIFT) + +#define SU_PERF_SELA_SIZE 3 +#define SU_PERF_SELA_SHIFT 0 +#define SU_PERF_SELA_MASK 0x00000007 +#define SU_PERF_GET_SELA(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_SELA_MASK) >> SU_PERF_SELA_SHIFT) + +#define SU_SCIS1_RID_SIZE 8 +#define SU_SCIS1_RID_SHIFT 24 +#define SU_SCIS1_RID_MASK 0xff000000 +#define SU_SCIS1_GET_RID(su_scis1) \ + ((((unsigned long)(su_scis1)) & SU_SCIS1_RID_MASK) >> SU_SCIS1_RID_SHIFT) + +#define SU_PERF_NTEX_SIZE 4 +#define SU_PERF_NTEX_SHIFT 6 +#define SU_PERF_NTEX_MASK 0x000003c0 +#define SU_PERF_GET_NTEX(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_NTEX_MASK) >> SU_PERF_NTEX_SHIFT) + +#define SU_PERF_NCOL_SIZE 2 +#define SU_PERF_NCOL_SHIFT 10 +#define SU_PERF_NCOL_MASK 0x00000c00 +#define SU_PERF_GET_NCOL(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_NCOL_MASK) >> SU_PERF_NCOL_SHIFT) + +#define SU_PERF_SELB_SIZE 3 +#define SU_PERF_SELB_SHIFT 3 +#define SU_PERF_SELB_MASK 0x00000038 +#define SU_PERF_GET_SELB(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_SELB_MASK) >> SU_PERF_SELB_SHIFT) + +#define SU_PERF_REJF_SIZE 2 +#define SU_PERF_REJF_SHIFT 12 +#define SU_PERF_REJF_MASK 0x00003000 +#define SU_PERF_GET_REJF(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_REJF_MASK) >> SU_PERF_REJF_SHIFT) + +#define SU_PERF_REJS_SIZE 2 +#define SU_PERF_REJS_SHIFT 14 +#define SU_PERF_REJS_MASK 0x0000c000 +#define SU_PERF_GET_REJS(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_REJS_MASK) >> SU_PERF_REJS_SHIFT) + +#define SU_PERF_CMD_SIZE 2 +#define SU_PERF_CMD_SHIFT 16 +#define SU_PERF_CMD_MASK 0x00030000 +#define SU_PERF_GET_CMD(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_CMD_MASK) >> SU_PERF_CMD_SHIFT) + +#define SU_PERF_PAD0_SIZE 2 +#define SU_PERF_PAD0_SHIFT 18 +#define SU_PERF_PAD0_MASK 0x000c0000 +#define SU_PERF_GET_PAD0(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_PAD0_MASK) >> SU_PERF_PAD0_SHIFT) + +#define SU_PERF_EN_SIZE 2 +#define SU_PERF_EN_SHIFT 20 +#define SU_PERF_EN_MASK 0x00300000 +#define SU_PERF_GET_EN(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_EN_MASK) >> SU_PERF_EN_SHIFT) + +#define SU_PERF_PWR_EN_SIZE 2 +#define SU_PERF_PWR_EN_SHIFT 22 +#define SU_PERF_PWR_EN_MASK 0x00c00000 +#define SU_PERF_GET_PWR_EN(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_PWR_EN_MASK) >> SU_PERF_PWR_EN_SHIFT) + +#define SU_PERF_RID_SIZE 8 +#define SU_PERF_RID_SHIFT 24 +#define SU_PERF_RID_MASK 0xff000000 +#define SU_PERF_GET_RID(su_perf) \ + ((((unsigned long)(su_perf)) & SU_PERF_RID_MASK) >> SU_PERF_RID_SHIFT) + +#define SU_PERF_TOTAL_SIZE 32 +#define SU_PERF(selA, selB, ntex, ncol, rejf, rejs, cmd, en, pwr_en, rid) \ + ((((unsigned long)(selA)) << SU_PERF_SELA_SHIFT) | \ + (((unsigned long)(selB)) << SU_PERF_SELB_SHIFT) | \ + (((unsigned long)(ntex)) << SU_PERF_NTEX_SHIFT) | \ + (((unsigned long)(ncol)) << SU_PERF_NCOL_SHIFT) | \ + (((unsigned long)(rejf)) << SU_PERF_REJF_SHIFT) | \ + (((unsigned long)(rejs)) << SU_PERF_REJS_SHIFT) | \ + (((unsigned long)(cmd)) << SU_PERF_CMD_SHIFT) | \ + (((unsigned long)(en)) << SU_PERF_EN_SHIFT) | \ + (((unsigned long)(pwr_en)) << SU_PERF_PWR_EN_SHIFT) | \ + (((unsigned long)(rid)) << SU_PERF_RID_SHIFT)) + +#define SU_LPSIZE_LSIZE_SIZE 8 +#define SU_LPSIZE_LSIZE_SHIFT 0 +#define SU_LPSIZE_LSIZE_MASK 0x000000ff +#define SU_LPSIZE_GET_LSIZE(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_LSIZE_MASK) >> SU_LPSIZE_LSIZE_SHIFT) + +#define SU_LPSIZE_PSIZE_SIZE 8 +#define SU_LPSIZE_PSIZE_SHIFT 8 +#define SU_LPSIZE_PSIZE_MASK 0x0000ff00 +#define SU_LPSIZE_GET_PSIZE(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_PSIZE_MASK) >> SU_LPSIZE_PSIZE_SHIFT) + +#define SU_LPSIZE_LTOFF_SIZE 3 +#define SU_LPSIZE_LTOFF_SHIFT 16 +#define SU_LPSIZE_LTOFF_MASK 0x00070000 +#define SU_LPSIZE_GET_LTOFF(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_LTOFF_MASK) >> SU_LPSIZE_LTOFF_SHIFT) + +#define SU_LPSIZE_PTOFF_SIZE 3 +#define SU_LPSIZE_PTOFF_SHIFT 19 +#define SU_LPSIZE_PTOFF_MASK 0x00380000 +#define SU_LPSIZE_GET_PTOFF(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_PTOFF_MASK) >> SU_LPSIZE_PTOFF_SHIFT) + +#define SU_LPSIZE_FIELDMODE_SIZE 1 +#define SU_LPSIZE_FIELDMODE_SHIFT 22 +#define SU_LPSIZE_FIELDMODE_MASK 0x00400000 +#define SU_LPSIZE_GET_FIELDMODE(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_FIELDMODE_MASK) >> SU_LPSIZE_FIELDMODE_SHIFT) + +#define SU_LPSIZE_PAD0_SIZE 1 +#define SU_LPSIZE_PAD0_SHIFT 23 +#define SU_LPSIZE_PAD0_MASK 0x00800000 +#define SU_LPSIZE_GET_PAD0(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_PAD0_MASK) >> SU_LPSIZE_PAD0_SHIFT) + +#define SU_LPSIZE_RID_SIZE 8 +#define SU_LPSIZE_RID_SHIFT 24 +#define SU_LPSIZE_RID_MASK 0xff000000 +#define SU_LPSIZE_GET_RID(su_lpsize) \ + ((((unsigned long)(su_lpsize)) & SU_LPSIZE_RID_MASK) >> SU_LPSIZE_RID_SHIFT) + +#define SU_TS0_SSIZE_SIZE 16 +#define SU_TS0_SSIZE_SHIFT 0 +#define SU_TS0_SSIZE_MASK 0x0000ffff +#define SU_TS0_GET_SSIZE(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_SSIZE_MASK) >> SU_TS0_SSIZE_SHIFT) + +#define SU_TS0_BS_SIZE 1 +#define SU_TS0_BS_SHIFT 16 +#define SU_TS0_BS_MASK 0x00010000 +#define SU_TS0_GET_BS(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_BS_MASK) >> SU_TS0_BS_SHIFT) + +#define SU_TS0_WS_SIZE 1 +#define SU_TS0_WS_SHIFT 17 +#define SU_TS0_WS_MASK 0x00020000 +#define SU_TS0_GET_WS(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_WS_MASK) >> SU_TS0_WS_SHIFT) + +#define SU_TS0_LF_SIZE 1 +#define SU_TS0_LF_SHIFT 18 +#define SU_TS0_LF_MASK 0x00040000 +#define SU_TS0_GET_LF(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_LF_MASK) >> SU_TS0_LF_SHIFT) + +#define SU_TS0_PF_SIZE 1 +#define SU_TS0_PF_SHIFT 19 +#define SU_TS0_PF_MASK 0x00080000 +#define SU_TS0_GET_PF(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_PF_MASK) >> SU_TS0_PF_SHIFT) + +#define SU_TS0_PAD0_SIZE 4 +#define SU_TS0_PAD0_SHIFT 20 +#define SU_TS0_PAD0_MASK 0x00f00000 +#define SU_TS0_GET_PAD0(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_PAD0_MASK) >> SU_TS0_PAD0_SHIFT) + +#define SU_TS0_RID_SIZE 8 +#define SU_TS0_RID_SHIFT 24 +#define SU_TS0_RID_MASK 0xff000000 +#define SU_TS0_GET_RID(su_ts0) \ + ((((unsigned long)(su_ts0)) & SU_TS0_RID_MASK) >> SU_TS0_RID_SHIFT) + +#define SU_SSMASK_SSMASK_SIZE 24 +#define SU_SSMASK_SSMASK_SHIFT 0 +#define SU_SSMASK_SSMASK_MASK 0x00ffffff +#define SU_SSMASK_GET_SSMASK(su_ssmask) \ + ((((unsigned long)(su_ssmask)) & SU_SSMASK_SSMASK_MASK) >> SU_SSMASK_SSMASK_SHIFT) + +#define SU_SSMASK_RID_SIZE 8 +#define SU_SSMASK_RID_SHIFT 24 +#define SU_SSMASK_RID_MASK 0xff000000 +#define SU_SSMASK_GET_RID(su_ssmask) \ + ((((unsigned long)(su_ssmask)) & SU_SSMASK_RID_MASK) >> SU_SSMASK_RID_SHIFT) + +#define SU_SSMASK_TOTAL_SIZE 32 +#define SU_SSMASK(ssmask, rid) \ + ((((unsigned long)(ssmask)) << SU_SSMASK_SSMASK_SHIFT) | \ + (((unsigned long)(rid)) << SU_SSMASK_RID_SHIFT)) + +#define SU_SCIS0_SY0_SIZE 11 +#define SU_SCIS0_SY0_SHIFT 0 +#define SU_SCIS0_SY0_MASK 0x000007ff +#define SU_SCIS0_GET_SY0(su_scis0) \ + ((((unsigned long)(su_scis0)) & SU_SCIS0_SY0_MASK) >> SU_SCIS0_SY0_SHIFT) +#define SU_SCIS0_SET_SY0(su_scis0, sy0) { \ + su_scis0 = (((unsigned long)(su_scis0)) & ~SU_SCIS0_SY0_MASK) | (((unsigned long)(sy0)) << SU_SCIS0_SY0_SHIFT);\ +} + +#define SU_SCIS0_SX0_SIZE 11 +#define SU_SCIS0_SX0_SHIFT 12 +#define SU_SCIS0_SX0_MASK 0x007ff000 +#define SU_SCIS0_GET_SX0(su_scis0) \ + ((((unsigned long)(su_scis0)) & SU_SCIS0_SX0_MASK) >> SU_SCIS0_SX0_SHIFT) +#define SU_SCIS0_SET_SX0(su_scis0, sx0) { \ + su_scis0 = (((unsigned long)(su_scis0)) & ~SU_SCIS0_SX0_MASK) | (((unsigned long)(sx0)) << SU_SCIS0_SX0_SHIFT);\ +} + +#define SU_SCIS0_PAD1_SIZE 1 +#define SU_SCIS0_PAD1_SHIFT 23 +#define SU_SCIS0_PAD1_MASK 0x00800000 +#define SU_SCIS0_GET_PAD1(su_scis0) \ + ((((unsigned long)(su_scis0)) & SU_SCIS0_PAD1_MASK) >> SU_SCIS0_PAD1_SHIFT) +#define SU_SCIS0_SET_PAD1(su_scis0, pad1) { \ + su_scis0 = (((unsigned long)(su_scis0)) & ~SU_SCIS0_PAD1_MASK) | (((unsigned long)(pad1)) << SU_SCIS0_PAD1_SHIFT);\ +} + +#define SU_SCIS1_SY1_SIZE 11 +#define SU_SCIS1_SY1_SHIFT 0 +#define SU_SCIS1_SY1_MASK 0x000007ff +#define SU_SCIS1_GET_SY1(su_scis1) \ + ((((unsigned long)(su_scis1)) & SU_SCIS1_SY1_MASK) >> SU_SCIS1_SY1_SHIFT) +#define SU_SCIS1_SET_SY1(su_scis1, sy1) { \ + su_scis1 = (((unsigned long)(su_scis1)) & ~SU_SCIS1_SY1_MASK) | (((unsigned long)(sy1)) << SU_SCIS1_SY1_SHIFT);\ +} + +#define SU_SCIS1_SX1_SIZE 11 +#define SU_SCIS1_SX1_SHIFT 12 +#define SU_SCIS1_SX1_MASK 0x007ff000 +#define SU_SCIS1_GET_SX1(su_scis1) \ + ((((unsigned long)(su_scis1)) & SU_SCIS1_SX1_MASK) >> SU_SCIS1_SX1_SHIFT) +#define SU_SCIS1_SET_SX1(su_scis1, sx1) { \ + su_scis1 = (((unsigned long)(su_scis1)) & ~SU_SCIS1_SX1_MASK) | (((unsigned long)(sx1)) << SU_SCIS1_SX1_SHIFT);\ +} + +#define SC_SU_SCIS0_SET_SY0(line, su_scis0,sy0) \ + FAST_GPFLAGSET(line, su_scis0,sy0,SU_SCIS0_SY0) + +#define SC_SU_SCIS0_SET_PAD0(line, su_scis0,pad0) \ + FAST_GPFLAGSET(line, su_scis0,pad0,SU_SCIS0_PAD0) + +#define SC_SU_SCIS0_SET_SX0(line, su_scis0,sx0) \ + FAST_GPFLAGSET(line, su_scis0,sx0,SU_SCIS0_SX0) + +#define SC_SU_SCIS0_SET_PAD1(line, su_scis0,pad1) \ + FAST_GPFLAGSET(line, su_scis0,pad1,SU_SCIS0_PAD1) + +#define SC_SU_SCIS0_SET_RID(line, su_scis0,rid) \ + FAST_GPFLAGSET(line, su_scis0,rid,SU_SCIS0_RID) + +#define SC_SU_SCIS1_SET_SY1(line, su_scis1,sy1) \ + FAST_GPFLAGSET(line, su_scis1,sy1,SU_SCIS1_SY1) + +#define SC_SU_SCIS1_SET_PAD0(line, su_scis1,pad0) \ + FAST_GPFLAGSET(line, su_scis1,pad0,SU_SCIS1_PAD0) + +#define SC_SU_SCIS1_SET_SX1(line, su_scis1,sx1) \ + FAST_GPFLAGSET(line, su_scis1,sx1,SU_SCIS1_SX1) + +#define SC_SU_SCIS1_SET_PAD1(line, su_scis1,pad1) \ + FAST_GPFLAGSET(line, su_scis1,pad1,SU_SCIS1_PAD1) + +#define SC_SU_SCIS1_SET_RID(line, su_scis1,rid) \ + FAST_GPFLAGSET(line, su_scis1,rid,SU_SCIS1_RID) + +#define SC_SU_LPSIZE_SET_LSIZE(line, su_lpsize,lsize) \ + FAST_GPFLAGSET(line, su_lpsize,lsize,SU_LPSIZE_LSIZE) + +#define SC_SU_LPSIZE_SET_PSIZE(line, su_lpsize,psize) \ + FAST_GPFLAGSET(line, su_lpsize,psize,SU_LPSIZE_PSIZE) + +#define SC_SU_LPSIZE_SET_LTOFF(line, su_lpsize,ltoff) \ + FAST_GPFLAGSET(line, su_lpsize,ltoff,SU_LPSIZE_LTOFF) + +#define SC_SU_LPSIZE_SET_PTOFF(line, su_lpsize,ptoff) \ + FAST_GPFLAGSET(line, su_lpsize,ptoff,SU_LPSIZE_PTOFF) + +#define SC_SU_LPSIZE_SET_FIELDMODE(line, su_lpsize,fieldmode) \ + FAST_GPFLAGSET(line, su_lpsize,fieldmode,SU_LPSIZE_FIELDMODE) + +#define SC_SU_LPSIZE_SET_PAD0(line, su_lpsize,pad0) \ + FAST_GPFLAGSET(line, su_lpsize,pad0,SU_LPSIZE_PAD0) + +#define SC_SU_LPSIZE_SET_RID(line, su_lpsize,rid) \ + FAST_GPFLAGSET(line, su_lpsize,rid,SU_LPSIZE_RID) + +#define SC_SU_TS0_SET_SSIZE(line, su_ts0,ssize) \ + FAST_GPFLAGSET(line, su_ts0,ssize,SU_TS0_SSIZE) + +#define SC_SU_TS0_SET_BS(line, su_ts0,bs) \ + FAST_GPFLAGSET(line, su_ts0,bs,SU_TS0_BS) + +#define SC_SU_TS0_SET_WS(line, su_ts0,ws) \ + FAST_GPFLAGSET(line, su_ts0,ws,SU_TS0_WS) + +#define SC_SU_TS0_SET_LF(line, su_ts0,lf) \ + FAST_GPFLAGSET(line, su_ts0,lf,SU_TS0_LF) + +#define SC_SU_TS0_SET_PF(line, su_ts0,pf) \ + FAST_GPFLAGSET(line, su_ts0,pf,SU_TS0_PF) + +#define SC_SU_TS0_SET_PAD0(line, su_ts0,pad0) \ + FAST_GPFLAGSET(line, su_ts0,pad0,SU_TS0_PAD0) + +#define SC_SU_TS0_SET_RID(line, su_ts0,rid) \ + FAST_GPFLAGSET(line, su_ts0,rid,SU_TS0_RID) + +#define SC_SU_TS1_SET_TSIZE(line, su_ts1,tsize) \ + FAST_GPFLAGSET(line, su_ts1,tsize,SU_TS1_TSIZE) + +#define SC_SU_TS1_SET_BT(line, su_ts1,bt) \ + FAST_GPFLAGSET(line, su_ts1,bt,SU_TS1_BT) + +#define SC_SU_TS1_SET_WT(line, su_ts1,wt) \ + FAST_GPFLAGSET(line, su_ts1,wt,SU_TS1_WT) + +#define SC_SU_TS1_SET_PAD0(line, su_ts1,pad0) \ + FAST_GPFLAGSET(line, su_ts1,pad0,SU_TS1_PAD0) + +#define SC_SU_TS1_SET_RID(line, su_ts1,rid) \ + FAST_GPFLAGSET(line, su_ts1,rid,SU_TS1_RID) + +#define SC_SU_PERF_SET_SELA(line, su_perf,selA) \ + FAST_GPFLAGSET(line, su_perf,selA,SU_PERF_SELA) + +#define SC_SU_PERF_SET_SELB(line, su_perf,selB) \ + FAST_GPFLAGSET(line, su_perf,selB,SU_PERF_SELB) + +#define SC_SU_PERF_SET_NTEX(line, su_perf,ntex) \ + FAST_GPFLAGSET(line, su_perf,ntex,SU_PERF_NTEX) + +#define SC_SU_PERF_SET_NCOL(line, su_perf,ncol) \ + FAST_GPFLAGSET(line, su_perf,ncol,SU_PERF_NCOL) + +#define SC_SU_PERF_SET_REJF(line, su_perf,rejf) \ + FAST_GPFLAGSET(line, su_perf,rejf,SU_PERF_REJF) + +#define SC_SU_PERF_SET_REJS(line, su_perf,rejs) \ + FAST_GPFLAGSET(line, su_perf,rejs,SU_PERF_REJS) + +#define SC_SU_PERF_SET_CMD(line, su_perf,cmd) \ + FAST_GPFLAGSET(line, su_perf,cmd,SU_PERF_CMD) + +#define SC_SU_PERF_SET_PAD0(line, su_perf,pad0) \ + FAST_GPFLAGSET(line, su_perf,pad0,SU_PERF_PAD0) + +#define SC_SU_PERF_SET_EN(line, su_perf,en) \ + FAST_GPFLAGSET(line, su_perf,en,SU_PERF_EN) + +#define SC_SU_PERF_SET_PWR_EN(line, su_perf,pwr_en) \ + FAST_GPFLAGSET(line, su_perf,pwr_en,SU_PERF_PWR_EN) + +#define SC_SU_PERF_SET_RID(line, su_perf,rid) \ + FAST_GPFLAGSET(line, su_perf,rid,SU_PERF_RID) + +#define SC_SU_SSMASK_SET_SSMASK(line, su_ssmask,ssmask) \ + FAST_GPFLAGSET(line, su_ssmask,ssmask,SU_SSMASK_SSMASK) + +#define SC_SU_SSMASK_SET_RID(line, su_ssmask,rid) \ + FAST_GPFLAGSET(line, su_ssmask,rid,SU_SSMASK_RID) + + +#endif // SU_REG_H diff --git a/include/revolution/private/tev_reg.h b/include/revolution/private/tev_reg.h new file mode 100644 index 0000000000..22898e798b --- /dev/null +++ b/include/revolution/private/tev_reg.h @@ -0,0 +1,729 @@ +#ifndef TEV_REG_H +#define TEV_REG_H + +#define TEV_COLOR_ENV_RID_SIZE 8 +#define TEV_COLOR_ENV_RID_SHIFT 24 +#define TEV_COLOR_ENV_RID_MASK 0xff000000 +#define TEV_COLOR_ENV_GET_RID(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_RID_MASK) >> TEV_COLOR_ENV_RID_SHIFT) + +#define TEV_ALPHA_ENV_RID_SIZE 8 +#define TEV_ALPHA_ENV_RID_SHIFT 24 +#define TEV_ALPHA_ENV_RID_MASK 0xff000000 +#define TEV_ALPHA_ENV_GET_RID(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_RID_MASK) >> TEV_ALPHA_ENV_RID_SHIFT) + +#define TEV_KSEL_RID_SIZE 8 +#define TEV_KSEL_RID_SHIFT 24 +#define TEV_KSEL_RID_MASK 0xff000000 +#define TEV_KSEL_GET_RID(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_RID_MASK) >> TEV_KSEL_RID_SHIFT) + +#define TEV_ALPHA_ENV_SELD_SIZE 3 +#define TEV_ALPHA_ENV_SELD_SHIFT 4 +#define TEV_ALPHA_ENV_SELD_MASK 0x00000070 +#define TEV_ALPHA_ENV_GET_SELD(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELD_MASK) >> TEV_ALPHA_ENV_SELD_SHIFT) + +#define TEV_ALPHA_ENV_SELC_SIZE 3 +#define TEV_ALPHA_ENV_SELC_SHIFT 7 +#define TEV_ALPHA_ENV_SELC_MASK 0x00000380 +#define TEV_ALPHA_ENV_GET_SELC(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELC_MASK) >> TEV_ALPHA_ENV_SELC_SHIFT) + +#define TEV_ALPHA_ENV_SELB_SIZE 3 +#define TEV_ALPHA_ENV_SELB_SHIFT 10 +#define TEV_ALPHA_ENV_SELB_MASK 0x00001c00 +#define TEV_ALPHA_ENV_GET_SELB(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELB_MASK) >> TEV_ALPHA_ENV_SELB_SHIFT) + +#define TEV_ALPHA_ENV_SELA_SIZE 3 +#define TEV_ALPHA_ENV_SELA_SHIFT 13 +#define TEV_ALPHA_ENV_SELA_MASK 0x0000e000 +#define TEV_ALPHA_ENV_GET_SELA(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELA_MASK) >> TEV_ALPHA_ENV_SELA_SHIFT) + +#define TEV_COLOR_ENV_SELD_SIZE 4 +#define TEV_COLOR_ENV_SELD_SHIFT 0 +#define TEV_COLOR_ENV_SELD_MASK 0x0000000f +#define TEV_COLOR_ENV_GET_SELD(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_SELD_MASK) >> TEV_COLOR_ENV_SELD_SHIFT) + +#define TEV_COLOR_ENV_SELC_SIZE 4 +#define TEV_COLOR_ENV_SELC_SHIFT 4 +#define TEV_COLOR_ENV_SELC_MASK 0x000000f0 +#define TEV_COLOR_ENV_GET_SELC(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_SELC_MASK) >> TEV_COLOR_ENV_SELC_SHIFT) + +#define TEV_COLOR_ENV_SELB_SIZE 4 +#define TEV_COLOR_ENV_SELB_SHIFT 8 +#define TEV_COLOR_ENV_SELB_MASK 0x00000f00 +#define TEV_COLOR_ENV_GET_SELB(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_SELB_MASK) >> TEV_COLOR_ENV_SELB_SHIFT) + +#define TEV_COLOR_ENV_SELA_SIZE 4 +#define TEV_COLOR_ENV_SELA_SHIFT 12 +#define TEV_COLOR_ENV_SELA_MASK 0x0000f000 +#define TEV_COLOR_ENV_GET_SELA(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_SELA_MASK) >> TEV_COLOR_ENV_SELA_SHIFT) + +#define TEV_COLOR_ENV_BIAS_SIZE 2 +#define TEV_COLOR_ENV_BIAS_SHIFT 16 +#define TEV_COLOR_ENV_BIAS_MASK 0x00030000 +#define TEV_COLOR_ENV_GET_BIAS(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_BIAS_MASK) >> TEV_COLOR_ENV_BIAS_SHIFT) + +#define TEV_COLOR_ENV_SUB_SIZE 1 +#define TEV_COLOR_ENV_SUB_SHIFT 18 +#define TEV_COLOR_ENV_SUB_MASK 0x00040000 +#define TEV_COLOR_ENV_GET_SUB(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_SUB_MASK) >> TEV_COLOR_ENV_SUB_SHIFT) + +#define TEV_COLOR_ENV_CLAMP_SIZE 1 +#define TEV_COLOR_ENV_CLAMP_SHIFT 19 +#define TEV_COLOR_ENV_CLAMP_MASK 0x00080000 +#define TEV_COLOR_ENV_GET_CLAMP(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_CLAMP_MASK) >> TEV_COLOR_ENV_CLAMP_SHIFT) + +#define TEV_COLOR_ENV_SHIFT_SIZE 2 +#define TEV_COLOR_ENV_SHIFT_SHIFT 20 +#define TEV_COLOR_ENV_SHIFT_MASK 0x00300000 +#define TEV_COLOR_ENV_GET_SHIFT(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_SHIFT_MASK) >> TEV_COLOR_ENV_SHIFT_SHIFT) + +#define TEV_COLOR_ENV_DEST_SIZE 2 +#define TEV_COLOR_ENV_DEST_SHIFT 22 +#define TEV_COLOR_ENV_DEST_MASK 0x00c00000 +#define TEV_COLOR_ENV_GET_DEST(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_DEST_MASK) >> TEV_COLOR_ENV_DEST_SHIFT) + +#define TEV_COLOR_ENV_RID_SIZE 8 +#define TEV_COLOR_ENV_RID_SHIFT 24 +#define TEV_COLOR_ENV_RID_MASK 0xff000000 +#define TEV_COLOR_ENV_GET_RID(tev_color_env) \ + ((((unsigned long)(tev_color_env)) & TEV_COLOR_ENV_RID_MASK) >> TEV_COLOR_ENV_RID_SHIFT) + +#define TEV_ALPHA_ENV_MODE_SIZE 2 +#define TEV_ALPHA_ENV_MODE_SHIFT 0 +#define TEV_ALPHA_ENV_MODE_MASK 0x00000003 +#define TEV_ALPHA_ENV_GET_MODE(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_MODE_MASK) >> TEV_ALPHA_ENV_MODE_SHIFT) + +#define TEV_ALPHA_ENV_SWAP_SIZE 2 +#define TEV_ALPHA_ENV_SWAP_SHIFT 2 +#define TEV_ALPHA_ENV_SWAP_MASK 0x0000000c +#define TEV_ALPHA_ENV_GET_SWAP(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SWAP_MASK) >> TEV_ALPHA_ENV_SWAP_SHIFT) + +#define TEV_ALPHA_ENV_SELD_SIZE 3 +#define TEV_ALPHA_ENV_SELD_SHIFT 4 +#define TEV_ALPHA_ENV_SELD_MASK 0x00000070 +#define TEV_ALPHA_ENV_GET_SELD(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELD_MASK) >> TEV_ALPHA_ENV_SELD_SHIFT) + +#define TEV_ALPHA_ENV_SELC_SIZE 3 +#define TEV_ALPHA_ENV_SELC_SHIFT 7 +#define TEV_ALPHA_ENV_SELC_MASK 0x00000380 +#define TEV_ALPHA_ENV_GET_SELC(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELC_MASK) >> TEV_ALPHA_ENV_SELC_SHIFT) + +#define TEV_ALPHA_ENV_SELB_SIZE 3 +#define TEV_ALPHA_ENV_SELB_SHIFT 10 +#define TEV_ALPHA_ENV_SELB_MASK 0x00001c00 +#define TEV_ALPHA_ENV_GET_SELB(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELB_MASK) >> TEV_ALPHA_ENV_SELB_SHIFT) + +#define TEV_ALPHA_ENV_SELA_SIZE 3 +#define TEV_ALPHA_ENV_SELA_SHIFT 13 +#define TEV_ALPHA_ENV_SELA_MASK 0x0000e000 +#define TEV_ALPHA_ENV_GET_SELA(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SELA_MASK) >> TEV_ALPHA_ENV_SELA_SHIFT) + +#define TEV_ALPHA_ENV_BIAS_SIZE 2 +#define TEV_ALPHA_ENV_BIAS_SHIFT 16 +#define TEV_ALPHA_ENV_BIAS_MASK 0x00030000 +#define TEV_ALPHA_ENV_GET_BIAS(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_BIAS_MASK) >> TEV_ALPHA_ENV_BIAS_SHIFT) + +#define TEV_ALPHA_ENV_SUB_SIZE 1 +#define TEV_ALPHA_ENV_SUB_SHIFT 18 +#define TEV_ALPHA_ENV_SUB_MASK 0x00040000 +#define TEV_ALPHA_ENV_GET_SUB(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SUB_MASK) >> TEV_ALPHA_ENV_SUB_SHIFT) + +#define TEV_ALPHA_ENV_CLAMP_SIZE 1 +#define TEV_ALPHA_ENV_CLAMP_SHIFT 19 +#define TEV_ALPHA_ENV_CLAMP_MASK 0x00080000 +#define TEV_ALPHA_ENV_GET_CLAMP(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_CLAMP_MASK) >> TEV_ALPHA_ENV_CLAMP_SHIFT) + +#define TEV_ALPHA_ENV_SHIFT_SIZE 2 +#define TEV_ALPHA_ENV_SHIFT_SHIFT 20 +#define TEV_ALPHA_ENV_SHIFT_MASK 0x00300000 +#define TEV_ALPHA_ENV_GET_SHIFT(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_SHIFT_MASK) >> TEV_ALPHA_ENV_SHIFT_SHIFT) + +#define TEV_ALPHA_ENV_DEST_SIZE 2 +#define TEV_ALPHA_ENV_DEST_SHIFT 22 +#define TEV_ALPHA_ENV_DEST_MASK 0x00c00000 +#define TEV_ALPHA_ENV_GET_DEST(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_DEST_MASK) >> TEV_ALPHA_ENV_DEST_SHIFT) + +#define TEV_ALPHA_ENV_RID_SIZE 8 +#define TEV_ALPHA_ENV_RID_SHIFT 24 +#define TEV_ALPHA_ENV_RID_MASK 0xff000000 +#define TEV_ALPHA_ENV_GET_RID(tev_alpha_env) \ + ((((unsigned long)(tev_alpha_env)) & TEV_ALPHA_ENV_RID_MASK) >> TEV_ALPHA_ENV_RID_SHIFT) + +#define TEV_REGISTERL_R_SIZE 11 +#define TEV_REGISTERL_R_SHIFT 0 +#define TEV_REGISTERL_R_MASK 0x000007ff +#define TEV_REGISTERL_GET_R(tev_registerl) \ + ((((unsigned long)(tev_registerl)) & TEV_REGISTERL_R_MASK) >> TEV_REGISTERL_R_SHIFT) + +#define TEV_REGISTERL_PAD0_SIZE 1 +#define TEV_REGISTERL_PAD0_SHIFT 11 +#define TEV_REGISTERL_PAD0_MASK 0x00000800 +#define TEV_REGISTERL_GET_PAD0(tev_registerl) \ + ((((unsigned long)(tev_registerl)) & TEV_REGISTERL_PAD0_MASK) >> TEV_REGISTERL_PAD0_SHIFT) + +#define TEV_REGISTERL_A_SIZE 11 +#define TEV_REGISTERL_A_SHIFT 12 +#define TEV_REGISTERL_A_MASK 0x007ff000 +#define TEV_REGISTERL_GET_A(tev_registerl) \ + ((((unsigned long)(tev_registerl)) & TEV_REGISTERL_A_MASK) >> TEV_REGISTERL_A_SHIFT) + +#define TEV_REGISTERL_PAD1_SIZE 1 +#define TEV_REGISTERL_PAD1_SHIFT 23 +#define TEV_REGISTERL_PAD1_MASK 0x00800000 +#define TEV_REGISTERL_GET_PAD1(tev_registerl) \ + ((((unsigned long)(tev_registerl)) & TEV_REGISTERL_PAD1_MASK) >> TEV_REGISTERL_PAD1_SHIFT) + +#define TEV_REGISTERL_RID_SIZE 8 +#define TEV_REGISTERL_RID_SHIFT 24 +#define TEV_REGISTERL_RID_MASK 0xff000000 +#define TEV_REGISTERL_GET_RID(tev_registerl) \ + ((((unsigned long)(tev_registerl)) & TEV_REGISTERL_RID_MASK) >> TEV_REGISTERL_RID_SHIFT) + +#define TEV_REGISTERL_TOTAL_SIZE 32 +#define TEV_REGISTERL(r, a, rid) \ + ((((unsigned long)(r)) << TEV_REGISTERL_R_SHIFT) | \ + (((unsigned long)(a)) << TEV_REGISTERL_A_SHIFT) | \ + (((unsigned long)(rid)) << TEV_REGISTERL_RID_SHIFT)) + +#define TEV_KREGISTERL_R_SIZE 8 +#define TEV_KREGISTERL_R_SHIFT 0 +#define TEV_KREGISTERL_R_MASK 0x000000ff +#define TEV_KREGISTERL_GET_R(tev_kregisterl) \ + ((((unsigned long)(tev_kregisterl)) & TEV_KREGISTERL_R_MASK) >> TEV_KREGISTERL_R_SHIFT) + +#define TEV_KREGISTERL_PAD0_SIZE 4 +#define TEV_KREGISTERL_PAD0_SHIFT 8 +#define TEV_KREGISTERL_PAD0_MASK 0x00000f00 +#define TEV_KREGISTERL_GET_PAD0(tev_kregisterl) \ + ((((unsigned long)(tev_kregisterl)) & TEV_KREGISTERL_PAD0_MASK) >> TEV_KREGISTERL_PAD0_SHIFT) + +#define TEV_KREGISTERL_A_SIZE 8 +#define TEV_KREGISTERL_A_SHIFT 12 +#define TEV_KREGISTERL_A_MASK 0x000ff000 +#define TEV_KREGISTERL_GET_A(tev_kregisterl) \ + ((((unsigned long)(tev_kregisterl)) & TEV_KREGISTERL_A_MASK) >> TEV_KREGISTERL_A_SHIFT) + +#define TEV_KREGISTERL_PAD1_SIZE 4 +#define TEV_KREGISTERL_PAD1_SHIFT 20 +#define TEV_KREGISTERL_PAD1_MASK 0x00f00000 +#define TEV_KREGISTERL_GET_PAD1(tev_kregisterl) \ + ((((unsigned long)(tev_kregisterl)) & TEV_KREGISTERL_PAD1_MASK) >> TEV_KREGISTERL_PAD1_SHIFT) + +#define TEV_KREGISTERL_RID_SIZE 8 +#define TEV_KREGISTERL_RID_SHIFT 24 +#define TEV_KREGISTERL_RID_MASK 0xff000000 +#define TEV_KREGISTERL_GET_RID(tev_kregisterl) \ + ((((unsigned long)(tev_kregisterl)) & TEV_KREGISTERL_RID_MASK) >> TEV_KREGISTERL_RID_SHIFT) + +#define TEV_KREGISTERL_TOTAL_SIZE 32 +#define TEV_KREGISTERL(r, a, rid) \ + ((((unsigned long)(r)) << TEV_KREGISTERL_R_SHIFT) | \ + (((unsigned long)(a)) << TEV_KREGISTERL_A_SHIFT) | \ + (((unsigned long)(rid)) << TEV_KREGISTERL_RID_SHIFT)) + +#define TEV_REGISTERH_B_SIZE 11 +#define TEV_REGISTERH_B_SHIFT 0 +#define TEV_REGISTERH_B_MASK 0x000007ff +#define TEV_REGISTERH_GET_B(tev_registerh) \ + ((((unsigned long)(tev_registerh)) & TEV_REGISTERH_B_MASK) >> TEV_REGISTERH_B_SHIFT) + +#define TEV_REGISTERH_PAD0_SIZE 1 +#define TEV_REGISTERH_PAD0_SHIFT 11 +#define TEV_REGISTERH_PAD0_MASK 0x00000800 +#define TEV_REGISTERH_GET_PAD0(tev_registerh) \ + ((((unsigned long)(tev_registerh)) & TEV_REGISTERH_PAD0_MASK) >> TEV_REGISTERH_PAD0_SHIFT) + +#define TEV_REGISTERH_G_SIZE 11 +#define TEV_REGISTERH_G_SHIFT 12 +#define TEV_REGISTERH_G_MASK 0x007ff000 +#define TEV_REGISTERH_GET_G(tev_registerh) \ + ((((unsigned long)(tev_registerh)) & TEV_REGISTERH_G_MASK) >> TEV_REGISTERH_G_SHIFT) + +#define TEV_REGISTERH_PAD1_SIZE 1 +#define TEV_REGISTERH_PAD1_SHIFT 23 +#define TEV_REGISTERH_PAD1_MASK 0x00800000 +#define TEV_REGISTERH_GET_PAD1(tev_registerh) \ + ((((unsigned long)(tev_registerh)) & TEV_REGISTERH_PAD1_MASK) >> TEV_REGISTERH_PAD1_SHIFT) + +#define TEV_REGISTERH_RID_SIZE 8 +#define TEV_REGISTERH_RID_SHIFT 24 +#define TEV_REGISTERH_RID_MASK 0xff000000 +#define TEV_REGISTERH_GET_RID(tev_registerh) \ + ((((unsigned long)(tev_registerh)) & TEV_REGISTERH_RID_MASK) >> TEV_REGISTERH_RID_SHIFT) + +#define TEV_REGISTERH_TOTAL_SIZE 32 +#define TEV_REGISTERH(b, g, rid) \ + ((((unsigned long)(b)) << TEV_REGISTERH_B_SHIFT) | \ + (((unsigned long)(g)) << TEV_REGISTERH_G_SHIFT) | \ + (((unsigned long)(rid)) << TEV_REGISTERH_RID_SHIFT)) + +#define TEV_KREGISTERH_B_SIZE 8 +#define TEV_KREGISTERH_B_SHIFT 0 +#define TEV_KREGISTERH_B_MASK 0x000000ff +#define TEV_KREGISTERH_GET_B(tev_kregisterh) \ + ((((unsigned long)(tev_kregisterh)) & TEV_KREGISTERH_B_MASK) >> TEV_KREGISTERH_B_SHIFT) + +#define TEV_KREGISTERH_PAD0_SIZE 4 +#define TEV_KREGISTERH_PAD0_SHIFT 8 +#define TEV_KREGISTERH_PAD0_MASK 0x00000f00 +#define TEV_KREGISTERH_GET_PAD0(tev_kregisterh) \ + ((((unsigned long)(tev_kregisterh)) & TEV_KREGISTERH_PAD0_MASK) >> TEV_KREGISTERH_PAD0_SHIFT) + +#define TEV_KREGISTERH_G_SIZE 8 +#define TEV_KREGISTERH_G_SHIFT 12 +#define TEV_KREGISTERH_G_MASK 0x000ff000 +#define TEV_KREGISTERH_GET_G(tev_kregisterh) \ + ((((unsigned long)(tev_kregisterh)) & TEV_KREGISTERH_G_MASK) >> TEV_KREGISTERH_G_SHIFT) + +#define TEV_KREGISTERH_PAD1_SIZE 4 +#define TEV_KREGISTERH_PAD1_SHIFT 20 +#define TEV_KREGISTERH_PAD1_MASK 0x00f00000 +#define TEV_KREGISTERH_GET_PAD1(tev_kregisterh) \ + ((((unsigned long)(tev_kregisterh)) & TEV_KREGISTERH_PAD1_MASK) >> TEV_KREGISTERH_PAD1_SHIFT) + +#define TEV_KREGISTERH_RID_SIZE 8 +#define TEV_KREGISTERH_RID_SHIFT 24 +#define TEV_KREGISTERH_RID_MASK 0xff000000 +#define TEV_KREGISTERH_GET_RID(tev_kregisterh) \ + ((((unsigned long)(tev_kregisterh)) & TEV_KREGISTERH_RID_MASK) >> TEV_KREGISTERH_RID_SHIFT) + +#define TEV_KREGISTERH_TOTAL_SIZE 32 +#define TEV_KREGISTERH(b, g, rid) \ + ((((unsigned long)(b)) << TEV_KREGISTERH_B_SHIFT) | \ + (((unsigned long)(g)) << TEV_KREGISTERH_G_SHIFT) | \ + (((unsigned long)(rid)) << TEV_KREGISTERH_RID_SHIFT)) + +#define TEV_KSEL_XRB_SIZE 2 +#define TEV_KSEL_XRB_SHIFT 0 +#define TEV_KSEL_XRB_MASK 0x00000003 +#define TEV_KSEL_GET_XRB(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_XRB_MASK) >> TEV_KSEL_XRB_SHIFT) + +#define TEV_KSEL_XGA_SIZE 2 +#define TEV_KSEL_XGA_SHIFT 2 +#define TEV_KSEL_XGA_MASK 0x0000000c +#define TEV_KSEL_GET_XGA(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_XGA_MASK) >> TEV_KSEL_XGA_SHIFT) + +#define TEV_KSEL_KCSEL0_SIZE 5 +#define TEV_KSEL_KCSEL0_SHIFT 4 +#define TEV_KSEL_KCSEL0_MASK 0x000001f0 +#define TEV_KSEL_GET_KCSEL0(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_KCSEL0_MASK) >> TEV_KSEL_KCSEL0_SHIFT) + +#define TEV_KSEL_KASEL0_SIZE 5 +#define TEV_KSEL_KASEL0_SHIFT 9 +#define TEV_KSEL_KASEL0_MASK 0x00003e00 +#define TEV_KSEL_GET_KASEL0(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_KASEL0_MASK) >> TEV_KSEL_KASEL0_SHIFT) + +#define TEV_KSEL_KCSEL1_SIZE 5 +#define TEV_KSEL_KCSEL1_SHIFT 14 +#define TEV_KSEL_KCSEL1_MASK 0x0007c000 +#define TEV_KSEL_GET_KCSEL1(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_KCSEL1_MASK) >> TEV_KSEL_KCSEL1_SHIFT) + +#define TEV_KSEL_KASEL1_SIZE 5 +#define TEV_KSEL_KASEL1_SHIFT 19 +#define TEV_KSEL_KASEL1_MASK 0x00f80000 +#define TEV_KSEL_GET_KASEL1(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_KASEL1_MASK) >> TEV_KSEL_KASEL1_SHIFT) + +#define TEV_KSEL_RID_SIZE 8 +#define TEV_KSEL_RID_SHIFT 24 +#define TEV_KSEL_RID_MASK 0xff000000 +#define TEV_KSEL_GET_RID(tev_ksel) \ + ((((unsigned long)(tev_ksel)) & TEV_KSEL_RID_MASK) >> TEV_KSEL_RID_SHIFT) + +#define TEV_ALPHAFUNC_A0_SIZE 8 +#define TEV_ALPHAFUNC_A0_SHIFT 0 +#define TEV_ALPHAFUNC_A0_MASK 0x000000ff +#define TEV_ALPHAFUNC_GET_A0(tev_alphafunc) \ + ((((unsigned long)(tev_alphafunc)) & TEV_ALPHAFUNC_A0_MASK) >> TEV_ALPHAFUNC_A0_SHIFT) + +#define TEV_ALPHAFUNC_A1_SIZE 8 +#define TEV_ALPHAFUNC_A1_SHIFT 8 +#define TEV_ALPHAFUNC_A1_MASK 0x0000ff00 +#define TEV_ALPHAFUNC_GET_A1(tev_alphafunc) \ + ((((unsigned long)(tev_alphafunc)) & TEV_ALPHAFUNC_A1_MASK) >> TEV_ALPHAFUNC_A1_SHIFT) + +#define TEV_ALPHAFUNC_OP0_SIZE 3 +#define TEV_ALPHAFUNC_OP0_SHIFT 16 +#define TEV_ALPHAFUNC_OP0_MASK 0x00070000 +#define TEV_ALPHAFUNC_GET_OP0(tev_alphafunc) \ + ((((unsigned long)(tev_alphafunc)) & TEV_ALPHAFUNC_OP0_MASK) >> TEV_ALPHAFUNC_OP0_SHIFT) + +#define TEV_ALPHAFUNC_OP1_SIZE 3 +#define TEV_ALPHAFUNC_OP1_SHIFT 19 +#define TEV_ALPHAFUNC_OP1_MASK 0x00380000 +#define TEV_ALPHAFUNC_GET_OP1(tev_alphafunc) \ + ((((unsigned long)(tev_alphafunc)) & TEV_ALPHAFUNC_OP1_MASK) >> TEV_ALPHAFUNC_OP1_SHIFT) + +#define TEV_ALPHAFUNC_LOGIC_SIZE 2 +#define TEV_ALPHAFUNC_LOGIC_SHIFT 22 +#define TEV_ALPHAFUNC_LOGIC_MASK 0x00c00000 +#define TEV_ALPHAFUNC_GET_LOGIC(tev_alphafunc) \ + ((((unsigned long)(tev_alphafunc)) & TEV_ALPHAFUNC_LOGIC_MASK) >> TEV_ALPHAFUNC_LOGIC_SHIFT) + +#define TEV_ALPHAFUNC_RID_SIZE 8 +#define TEV_ALPHAFUNC_RID_SHIFT 24 +#define TEV_ALPHAFUNC_RID_MASK 0xff000000 +#define TEV_ALPHAFUNC_GET_RID(tev_alphafunc) \ + ((((unsigned long)(tev_alphafunc)) & TEV_ALPHAFUNC_RID_MASK) >> TEV_ALPHAFUNC_RID_SHIFT) + +#define TEV_Z_ENV_0_ZOFF_SIZE 24 +#define TEV_Z_ENV_0_ZOFF_SHIFT 0 +#define TEV_Z_ENV_0_ZOFF_MASK 0x00ffffff +#define TEV_Z_ENV_0_GET_ZOFF(tev_z_env_0) \ + ((((unsigned long)(tev_z_env_0)) & TEV_Z_ENV_0_ZOFF_MASK) >> TEV_Z_ENV_0_ZOFF_SHIFT) + +#define TEV_Z_ENV_0_RID_SIZE 8 +#define TEV_Z_ENV_0_RID_SHIFT 24 +#define TEV_Z_ENV_0_RID_MASK 0xff000000 +#define TEV_Z_ENV_0_GET_RID(tev_z_env_0) \ + ((((unsigned long)(tev_z_env_0)) & TEV_Z_ENV_0_RID_MASK) >> TEV_Z_ENV_0_RID_SHIFT) + +#define TEV_Z_ENV_1_TYPE_SIZE 2 +#define TEV_Z_ENV_1_TYPE_SHIFT 0 +#define TEV_Z_ENV_1_TYPE_MASK 0x00000003 +#define TEV_Z_ENV_1_GET_TYPE(tev_z_env_1) \ + ((((unsigned long)(tev_z_env_1)) & TEV_Z_ENV_1_TYPE_MASK) >> TEV_Z_ENV_1_TYPE_SHIFT) + +#define TEV_Z_ENV_1_OP_SIZE 2 +#define TEV_Z_ENV_1_OP_SHIFT 2 +#define TEV_Z_ENV_1_OP_MASK 0x0000000c +#define TEV_Z_ENV_1_GET_OP(tev_z_env_1) \ + ((((unsigned long)(tev_z_env_1)) & TEV_Z_ENV_1_OP_MASK) >> TEV_Z_ENV_1_OP_SHIFT) + +#define TEV_Z_ENV_1_PAD0_SIZE 20 +#define TEV_Z_ENV_1_PAD0_SHIFT 4 +#define TEV_Z_ENV_1_PAD0_MASK 0x00fffff0 +#define TEV_Z_ENV_1_GET_PAD0(tev_z_env_1) \ + ((((unsigned long)(tev_z_env_1)) & TEV_Z_ENV_1_PAD0_MASK) >> TEV_Z_ENV_1_PAD0_SHIFT) + +#define TEV_Z_ENV_1_RID_SIZE 8 +#define TEV_Z_ENV_1_RID_SHIFT 24 +#define TEV_Z_ENV_1_RID_MASK 0xff000000 +#define TEV_Z_ENV_1_GET_RID(tev_z_env_1) \ + ((((unsigned long)(tev_z_env_1)) & TEV_Z_ENV_1_RID_MASK) >> TEV_Z_ENV_1_RID_SHIFT) + +typedef struct { + unsigned long rid : 8; + unsigned long dest : 2; + unsigned long shift : 2; + unsigned long clamp : 1; + unsigned long sub : 1; + unsigned long bias : 2; + unsigned long sela : 4; + unsigned long selb : 4; + unsigned long selc : 4; + unsigned long seld : 4; +} tev_color_env_t; + +typedef struct { + unsigned long rid : 8; + unsigned long dest : 2; + unsigned long shift : 2; + unsigned long clamp : 1; + unsigned long sub : 1; + unsigned long bias : 2; + unsigned long sela : 3; + unsigned long selb : 3; + unsigned long selc : 3; + unsigned long seld : 3; + unsigned long swap : 2; + unsigned long mode : 2; +} tev_alpha_env_t; + +#define SC_TEV_COLOR_ENV_SET_SELD(line, tev_color_env,seld) \ + FAST_GPFLAGSET(line, tev_color_env,seld,TEV_COLOR_ENV_SELD) + +#define SC_TEV_COLOR_ENV_SET_SELC(line, tev_color_env,selc) \ + FAST_GPFLAGSET(line, tev_color_env,selc,TEV_COLOR_ENV_SELC) + +#define SC_TEV_COLOR_ENV_SET_SELB(line, tev_color_env,selb) \ + FAST_GPFLAGSET(line, tev_color_env,selb,TEV_COLOR_ENV_SELB) + +#define SC_TEV_COLOR_ENV_SET_SELA(line, tev_color_env,sela) \ + FAST_GPFLAGSET(line, tev_color_env,sela,TEV_COLOR_ENV_SELA) + +#define SC_TEV_COLOR_ENV_SET_BIAS(line, tev_color_env,bias) \ + FAST_GPFLAGSET(line, tev_color_env,bias,TEV_COLOR_ENV_BIAS) + +#define SC_TEV_COLOR_ENV_SET_SUB(line, tev_color_env,sub) \ + FAST_GPFLAGSET(line, tev_color_env,sub,TEV_COLOR_ENV_SUB) + +#define SC_TEV_COLOR_ENV_SET_CLAMP(line, tev_color_env,clamp) \ + FAST_GPFLAGSET(line, tev_color_env,clamp,TEV_COLOR_ENV_CLAMP) + +#define SC_TEV_COLOR_ENV_SET_SHIFT(line, tev_color_env,shift) \ + FAST_GPFLAGSET(line, tev_color_env,shift,TEV_COLOR_ENV_SHIFT) + +#define SC_TEV_COLOR_ENV_SET_DEST(line, tev_color_env,dest) \ + FAST_GPFLAGSET(line, tev_color_env,dest,TEV_COLOR_ENV_DEST) + +#define SC_TEV_COLOR_ENV_SET_RID(line, tev_color_env,rid) \ + FAST_GPFLAGSET(line, tev_color_env,rid,TEV_COLOR_ENV_RID) + +#define SC_TEV_ALPHA_ENV_SET_MODE(line, tev_alpha_env,mode) \ + FAST_GPFLAGSET(line, tev_alpha_env,mode,TEV_ALPHA_ENV_MODE) + +#define SC_TEV_ALPHA_ENV_SET_SWAP(line, tev_alpha_env,swap) \ + FAST_GPFLAGSET(line, tev_alpha_env,swap,TEV_ALPHA_ENV_SWAP) + +#define SC_TEV_ALPHA_ENV_SET_SELD(line, tev_alpha_env,seld) \ + FAST_GPFLAGSET(line, tev_alpha_env,seld,TEV_ALPHA_ENV_SELD) + +#define SC_TEV_ALPHA_ENV_SET_SELC(line, tev_alpha_env,selc) \ + FAST_GPFLAGSET(line, tev_alpha_env,selc,TEV_ALPHA_ENV_SELC) + +#define SC_TEV_ALPHA_ENV_SET_SELB(line, tev_alpha_env,selb) \ + FAST_GPFLAGSET(line, tev_alpha_env,selb,TEV_ALPHA_ENV_SELB) + +#define SC_TEV_ALPHA_ENV_SET_SELA(line, tev_alpha_env,sela) \ + FAST_GPFLAGSET(line, tev_alpha_env,sela,TEV_ALPHA_ENV_SELA) + +#define SC_TEV_ALPHA_ENV_SET_BIAS(line, tev_alpha_env,bias) \ + FAST_GPFLAGSET(line, tev_alpha_env,bias,TEV_ALPHA_ENV_BIAS) + +#define SC_TEV_ALPHA_ENV_SET_SUB(line, tev_alpha_env,sub) \ + FAST_GPFLAGSET(line, tev_alpha_env,sub,TEV_ALPHA_ENV_SUB) + +#define SC_TEV_ALPHA_ENV_SET_CLAMP(line, tev_alpha_env,clamp) \ + FAST_GPFLAGSET(line, tev_alpha_env,clamp,TEV_ALPHA_ENV_CLAMP) + +#define SC_TEV_ALPHA_ENV_SET_SHIFT(line, tev_alpha_env,shift) \ + FAST_GPFLAGSET(line, tev_alpha_env,shift,TEV_ALPHA_ENV_SHIFT) + +#define SC_TEV_ALPHA_ENV_SET_DEST(line, tev_alpha_env,dest) \ + FAST_GPFLAGSET(line, tev_alpha_env,dest,TEV_ALPHA_ENV_DEST) + +#define SC_TEV_ALPHA_ENV_SET_RID(line, tev_alpha_env,rid) \ + FAST_GPFLAGSET(line, tev_alpha_env,rid,TEV_ALPHA_ENV_RID) + +#define SC_TEV_REGISTERL_SET_R(line, tev_registerl,r) \ + FAST_GPFLAGSET(line, tev_registerl,r,TEV_REGISTERL_R) + +#define SC_TEV_REGISTERL_SET_PAD0(line, tev_registerl,pad0) \ + FAST_GPFLAGSET(line, tev_registerl,pad0,TEV_REGISTERL_PAD0) + +#define SC_TEV_REGISTERL_SET_A(line, tev_registerl,a) \ + FAST_GPFLAGSET(line, tev_registerl,a,TEV_REGISTERL_A) + +#define SC_TEV_REGISTERL_SET_PAD1(line, tev_registerl,pad1) \ + FAST_GPFLAGSET(line, tev_registerl,pad1,TEV_REGISTERL_PAD1) + +#define SC_TEV_REGISTERL_SET_RID(line, tev_registerl,rid) \ + FAST_GPFLAGSET(line, tev_registerl,rid,TEV_REGISTERL_RID) + +#define SC_TEV_REGISTERH_SET_B(line, tev_registerh,b) \ + FAST_GPFLAGSET(line, tev_registerh,b,TEV_REGISTERH_B) + +#define SC_TEV_REGISTERH_SET_PAD0(line, tev_registerh,pad0) \ + FAST_GPFLAGSET(line, tev_registerh,pad0,TEV_REGISTERH_PAD0) + +#define SC_TEV_REGISTERH_SET_G(line, tev_registerh,g) \ + FAST_GPFLAGSET(line, tev_registerh,g,TEV_REGISTERH_G) + +#define SC_TEV_REGISTERH_SET_PAD1(line, tev_registerh,pad1) \ + FAST_GPFLAGSET(line, tev_registerh,pad1,TEV_REGISTERH_PAD1) + +#define SC_TEV_REGISTERH_SET_RID(line, tev_registerh,rid) \ + FAST_GPFLAGSET(line, tev_registerh,rid,TEV_REGISTERH_RID) + +#define SC_TEV_KREGISTERL_SET_R(line, tev_kregisterl,r) \ + FAST_GPFLAGSET(line, tev_kregisterl,r,TEV_KREGISTERL_R) + +#define SC_TEV_KREGISTERL_SET_PAD0(line, tev_kregisterl,pad0) \ + FAST_GPFLAGSET(line, tev_kregisterl,pad0,TEV_KREGISTERL_PAD0) + +#define SC_TEV_KREGISTERL_SET_A(line, tev_kregisterl,a) \ + FAST_GPFLAGSET(line, tev_kregisterl,a,TEV_KREGISTERL_A) + +#define SC_TEV_KREGISTERL_SET_PAD1(line, tev_kregisterl,pad1) \ + FAST_GPFLAGSET(line, tev_kregisterl,pad1,TEV_KREGISTERL_PAD1) + +#define SC_TEV_KREGISTERL_SET_RID(line, tev_kregisterl,rid) \ + FAST_GPFLAGSET(line, tev_kregisterl,rid,TEV_KREGISTERL_RID) + +#define SC_TEV_KREGISTERH_SET_B(line, tev_kregisterh,b) \ + FAST_GPFLAGSET(line, tev_kregisterh,b,TEV_KREGISTERH_B) + +#define SC_TEV_KREGISTERH_SET_PAD0(line, tev_kregisterh,pad0) \ + FAST_GPFLAGSET(line, tev_kregisterh,pad0,TEV_KREGISTERH_PAD0) + +#define SC_TEV_KREGISTERH_SET_G(line, tev_kregisterh,g) \ + FAST_GPFLAGSET(line, tev_kregisterh,g,TEV_KREGISTERH_G) + +#define SC_TEV_KREGISTERH_SET_PAD1(line, tev_kregisterh,pad1) \ + FAST_GPFLAGSET(line, tev_kregisterh,pad1,TEV_KREGISTERH_PAD1) + +#define SC_TEV_KREGISTERH_SET_RID(line, tev_kregisterh,rid) \ + FAST_GPFLAGSET(line, tev_kregisterh,rid,TEV_KREGISTERH_RID) + +#define SC_TEV_FOG_PARAM_0_SET_A_MANT(line, tev_fog_param_0,a_mant) \ + FAST_GPFLAGSET(line, tev_fog_param_0,a_mant,TEV_FOG_PARAM_0_A_MANT) + +#define SC_TEV_FOG_PARAM_0_SET_A_EXPN(line, tev_fog_param_0,a_expn) \ + FAST_GPFLAGSET(line, tev_fog_param_0,a_expn,TEV_FOG_PARAM_0_A_EXPN) + +#define SC_TEV_FOG_PARAM_0_SET_A_SIGN(line, tev_fog_param_0,a_sign) \ + FAST_GPFLAGSET(line, tev_fog_param_0,a_sign,TEV_FOG_PARAM_0_A_SIGN) + +#define SC_TEV_FOG_PARAM_0_SET_PAD0(line, tev_fog_param_0,pad0) \ + FAST_GPFLAGSET(line, tev_fog_param_0,pad0,TEV_FOG_PARAM_0_PAD0) + +#define SC_TEV_FOG_PARAM_0_SET_RID(line, tev_fog_param_0,rid) \ + FAST_GPFLAGSET(line, tev_fog_param_0,rid,TEV_FOG_PARAM_0_RID) + +#define SC_TEV_FOG_PARAM_1_SET_B_MAG(line, tev_fog_param_1,b_mag) \ + FAST_GPFLAGSET(line, tev_fog_param_1,b_mag,TEV_FOG_PARAM_1_B_MAG) + +#define SC_TEV_FOG_PARAM_1_SET_RID(line, tev_fog_param_1,rid) \ + FAST_GPFLAGSET(line, tev_fog_param_1,rid,TEV_FOG_PARAM_1_RID) + +#define SC_TEV_FOG_PARAM_2_SET_B_SHF(line, tev_fog_param_2,b_shf) \ + FAST_GPFLAGSET(line, tev_fog_param_2,b_shf,TEV_FOG_PARAM_2_B_SHF) + +#define SC_TEV_FOG_PARAM_2_SET_PAD0(line, tev_fog_param_2,pad0) \ + FAST_GPFLAGSET(line, tev_fog_param_2,pad0,TEV_FOG_PARAM_2_PAD0) + +#define SC_TEV_FOG_PARAM_2_SET_RID(line, tev_fog_param_2,rid) \ + FAST_GPFLAGSET(line, tev_fog_param_2,rid,TEV_FOG_PARAM_2_RID) + +#define SC_TEV_FOG_PARAM_3_SET_C_MANT(line, tev_fog_param_3,c_mant) \ + FAST_GPFLAGSET(line, tev_fog_param_3,c_mant,TEV_FOG_PARAM_3_C_MANT) + +#define SC_TEV_FOG_PARAM_3_SET_C_EXPN(line, tev_fog_param_3,c_expn) \ + FAST_GPFLAGSET(line, tev_fog_param_3,c_expn,TEV_FOG_PARAM_3_C_EXPN) + +#define SC_TEV_FOG_PARAM_3_SET_C_SIGN(line, tev_fog_param_3,c_sign) \ + FAST_GPFLAGSET(line, tev_fog_param_3,c_sign,TEV_FOG_PARAM_3_C_SIGN) + +#define SC_TEV_FOG_PARAM_3_SET_PROJ(line, tev_fog_param_3,proj) \ + FAST_GPFLAGSET(line, tev_fog_param_3,proj,TEV_FOG_PARAM_3_PROJ) + +#define SC_TEV_FOG_PARAM_3_SET_FSEL(line, tev_fog_param_3,fsel) \ + FAST_GPFLAGSET(line, tev_fog_param_3,fsel,TEV_FOG_PARAM_3_FSEL) + +#define SC_TEV_FOG_PARAM_3_SET_RID(line, tev_fog_param_3,rid) \ + FAST_GPFLAGSET(line, tev_fog_param_3,rid,TEV_FOG_PARAM_3_RID) + +#define SC_TEV_RANGE_ADJ_C_SET_CENTER(line, tev_range_adj_c,center) \ + FAST_GPFLAGSET(line, tev_range_adj_c,center,TEV_RANGE_ADJ_C_CENTER) + +#define SC_TEV_RANGE_ADJ_C_SET_ENB(line, tev_range_adj_c,enb) \ + FAST_GPFLAGSET(line, tev_range_adj_c,enb,TEV_RANGE_ADJ_C_ENB) + +#define SC_TEV_RANGE_ADJ_C_SET_PAD0(line, tev_range_adj_c,pad0) \ + FAST_GPFLAGSET(line, tev_range_adj_c,pad0,TEV_RANGE_ADJ_C_PAD0) + +#define SC_TEV_RANGE_ADJ_C_SET_RID(line, tev_range_adj_c,rid) \ + FAST_GPFLAGSET(line, tev_range_adj_c,rid,TEV_RANGE_ADJ_C_RID) + +#define SC_TEV_RANGE_ADJ_SET_R0(line, tev_range_adj,r0) \ + FAST_GPFLAGSET(line, tev_range_adj,r0,TEV_RANGE_ADJ_R0) + +#define SC_TEV_RANGE_ADJ_SET_R1(line, tev_range_adj,r1) \ + FAST_GPFLAGSET(line, tev_range_adj,r1,TEV_RANGE_ADJ_R1) + +#define SC_TEV_RANGE_ADJ_SET_RID(line, tev_range_adj,rid) \ + FAST_GPFLAGSET(line, tev_range_adj,rid,TEV_RANGE_ADJ_RID) + +#define SC_TEV_FOG_COLOR_SET_B(line, tev_fog_color,b) \ + FAST_GPFLAGSET(line, tev_fog_color,b,TEV_FOG_COLOR_B) + +#define SC_TEV_FOG_COLOR_SET_G(line, tev_fog_color,g) \ + FAST_GPFLAGSET(line, tev_fog_color,g,TEV_FOG_COLOR_G) + +#define SC_TEV_FOG_COLOR_SET_R(line, tev_fog_color,r) \ + FAST_GPFLAGSET(line, tev_fog_color,r,TEV_FOG_COLOR_R) + +#define SC_TEV_FOG_COLOR_SET_RID(line, tev_fog_color,rid) \ + FAST_GPFLAGSET(line, tev_fog_color,rid,TEV_FOG_COLOR_RID) + +#define SC_TEV_ALPHAFUNC_SET_A0(line, tev_alphafunc,a0) \ + FAST_GPFLAGSET(line, tev_alphafunc,a0,TEV_ALPHAFUNC_A0) + +#define SC_TEV_ALPHAFUNC_SET_A1(line, tev_alphafunc,a1) \ + FAST_GPFLAGSET(line, tev_alphafunc,a1,TEV_ALPHAFUNC_A1) + +#define SC_TEV_ALPHAFUNC_SET_OP0(line, tev_alphafunc,op0) \ + FAST_GPFLAGSET(line, tev_alphafunc,op0,TEV_ALPHAFUNC_OP0) + +#define SC_TEV_ALPHAFUNC_SET_OP1(line, tev_alphafunc,op1) \ + FAST_GPFLAGSET(line, tev_alphafunc,op1,TEV_ALPHAFUNC_OP1) + +#define SC_TEV_ALPHAFUNC_SET_LOGIC(line, tev_alphafunc,logic) \ + FAST_GPFLAGSET(line, tev_alphafunc,logic,TEV_ALPHAFUNC_LOGIC) + +#define SC_TEV_ALPHAFUNC_SET_RID(line, tev_alphafunc,rid) \ + FAST_GPFLAGSET(line, tev_alphafunc,rid,TEV_ALPHAFUNC_RID) + +#define SC_TEV_Z_ENV_0_SET_ZOFF(line, tev_z_env_0,zoff) \ + FAST_GPFLAGSET(line, tev_z_env_0,zoff,TEV_Z_ENV_0_ZOFF) + +#define SC_TEV_Z_ENV_0_SET_RID(line, tev_z_env_0,rid) \ + FAST_GPFLAGSET(line, tev_z_env_0,rid,TEV_Z_ENV_0_RID) + +#define SC_TEV_Z_ENV_1_SET_TYPE(line, tev_z_env_1,type) \ + FAST_GPFLAGSET(line, tev_z_env_1,type,TEV_Z_ENV_1_TYPE) + +#define SC_TEV_Z_ENV_1_SET_OP(line, tev_z_env_1,op) \ + FAST_GPFLAGSET(line, tev_z_env_1,op,TEV_Z_ENV_1_OP) + +#define SC_TEV_Z_ENV_1_SET_PAD0(line, tev_z_env_1,pad0) \ + FAST_GPFLAGSET(line, tev_z_env_1,pad0,TEV_Z_ENV_1_PAD0) + +#define SC_TEV_Z_ENV_1_SET_RID(line, tev_z_env_1,rid) \ + FAST_GPFLAGSET(line, tev_z_env_1,rid,TEV_Z_ENV_1_RID) + +#define SC_TEV_KSEL_SET_XRB(line, tev_ksel,xrb) \ + FAST_GPFLAGSET(line, tev_ksel,xrb,TEV_KSEL_XRB) + +#define SC_TEV_KSEL_SET_XGA(line, tev_ksel,xga) \ + FAST_GPFLAGSET(line, tev_ksel,xga,TEV_KSEL_XGA) + +#define SC_TEV_KSEL_SET_KCSEL0(line, tev_ksel,kcsel0) \ + FAST_GPFLAGSET(line, tev_ksel,kcsel0,TEV_KSEL_KCSEL0) + +#define SC_TEV_KSEL_SET_KASEL0(line, tev_ksel,kasel0) \ + FAST_GPFLAGSET(line, tev_ksel,kasel0,TEV_KSEL_KASEL0) + +#define SC_TEV_KSEL_SET_KCSEL1(line, tev_ksel,kcsel1) \ + FAST_GPFLAGSET(line, tev_ksel,kcsel1,TEV_KSEL_KCSEL1) + +#define SC_TEV_KSEL_SET_KASEL1(line, tev_ksel,kasel1) \ + FAST_GPFLAGSET(line, tev_ksel,kasel1,TEV_KSEL_KASEL1) + +#define SC_TEV_KSEL_SET_RID(line, tev_ksel,rid) \ + FAST_GPFLAGSET(line, tev_ksel,rid,TEV_KSEL_RID) + + +#endif // TEV_REG_H diff --git a/include/revolution/private/tx_reg.h b/include/revolution/private/tx_reg.h new file mode 100644 index 0000000000..cf61cd1ac2 --- /dev/null +++ b/include/revolution/private/tx_reg.h @@ -0,0 +1,125 @@ +#ifndef TX_REG_H +#define TX_REG_H + +#define TX_REFRESH_INTERVAL_SIZE 10 +#define TX_REFRESH_INTERVAL_SHIFT 0 +#define TX_REFRESH_INTERVAL_MASK 0x000003ff +#define TX_REFRESH_GET_INTERVAL(tx_refresh) \ + ((((unsigned long)(tx_refresh)) & TX_REFRESH_INTERVAL_MASK) >> TX_REFRESH_INTERVAL_SHIFT) + +#define TX_REFRESH_ENABLE_SIZE 1 +#define TX_REFRESH_ENABLE_SHIFT 10 +#define TX_REFRESH_ENABLE_MASK 0x00000400 +#define TX_REFRESH_GET_ENABLE(tx_refresh) \ + ((((unsigned long)(tx_refresh)) & TX_REFRESH_ENABLE_MASK) >> TX_REFRESH_ENABLE_SHIFT) + +#define TX_REFRESH_PAD0_SIZE 13 +#define TX_REFRESH_PAD0_SHIFT 11 +#define TX_REFRESH_PAD0_MASK 0x00fff800 +#define TX_REFRESH_GET_PAD0(tx_refresh) \ + ((((unsigned long)(tx_refresh)) & TX_REFRESH_PAD0_MASK) >> TX_REFRESH_PAD0_SHIFT) +#define TX_REFRESH_SET_PAD0(tx_refresh, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << TX_REFRESH_PAD0_SIZE)-1))); \ + tx_refresh = (((unsigned long)(tx_refresh)) & ~TX_REFRESH_PAD0_MASK) | (((unsigned long)(pad0)) << TX_REFRESH_PAD0_SHIFT);\ +} +#define TX_REFRESH_RID_SIZE 8 +#define TX_REFRESH_RID_SHIFT 24 +#define TX_REFRESH_RID_MASK 0xff000000 +#define TX_REFRESH_GET_RID(tx_refresh) \ + ((((unsigned long)(tx_refresh)) & TX_REFRESH_RID_MASK) >> TX_REFRESH_RID_SHIFT) +#define TX_REFRESH_SET_RID(tx_refresh, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << TX_REFRESH_RID_SIZE)-1))); \ + tx_refresh = (((unsigned long)(tx_refresh)) & ~TX_REFRESH_RID_MASK) | (((unsigned long)(rid)) << TX_REFRESH_RID_SHIFT);\ +} +#define TX_REFRESH_TOTAL_SIZE 32 +#define TX_REFRESH(interval, enable, rid) \ + ((((unsigned long)(interval)) << TX_REFRESH_INTERVAL_SHIFT) | \ + (((unsigned long)(enable)) << TX_REFRESH_ENABLE_SHIFT) | \ + (((unsigned long)(rid)) << TX_REFRESH_RID_SHIFT)) + +#define TX_PERFMODE_SEL3_SIZE 5 +#define TX_PERFMODE_SEL3_SHIFT 0 +#define TX_PERFMODE_SEL3_MASK 0x0000001f +#define TX_PERFMODE_GET_SEL3(tx_perfmode) \ + ((((unsigned long)(tx_perfmode)) & TX_PERFMODE_SEL3_MASK) >> TX_PERFMODE_SEL3_SHIFT) + +#define TX_PERFMODE_SEL2_SIZE 5 +#define TX_PERFMODE_SEL2_SHIFT 5 +#define TX_PERFMODE_SEL2_MASK 0x000003e0 +#define TX_PERFMODE_GET_SEL2(tx_perfmode) \ + ((((unsigned long)(tx_perfmode)) & TX_PERFMODE_SEL2_MASK) >> TX_PERFMODE_SEL2_SHIFT) + +#define TX_PERFMODE_SEL1_SIZE 5 +#define TX_PERFMODE_SEL1_SHIFT 10 +#define TX_PERFMODE_SEL1_MASK 0x00007c00 +#define TX_PERFMODE_GET_SEL1(tx_perfmode) \ + ((((unsigned long)(tx_perfmode)) & TX_PERFMODE_SEL1_MASK) >> TX_PERFMODE_SEL1_SHIFT) + +#define TX_PERFMODE_SEL0_SIZE 5 +#define TX_PERFMODE_SEL0_SHIFT 15 +#define TX_PERFMODE_SEL0_MASK 0x000f8000 +#define TX_PERFMODE_GET_SEL0(tx_perfmode) \ + ((((unsigned long)(tx_perfmode)) & TX_PERFMODE_SEL0_MASK) >> TX_PERFMODE_SEL0_SHIFT) + +#define TX_PERFMODE_PAD0_SIZE 4 +#define TX_PERFMODE_PAD0_SHIFT 20 +#define TX_PERFMODE_PAD0_MASK 0x00f00000 +#define TX_PERFMODE_GET_PAD0(tx_perfmode) \ + ((((unsigned long)(tx_perfmode)) & TX_PERFMODE_PAD0_MASK) >> TX_PERFMODE_PAD0_SHIFT) + +#define TX_PERFMODE_RID_SIZE 8 +#define TX_PERFMODE_RID_SHIFT 24 +#define TX_PERFMODE_RID_MASK 0xff000000 +#define TX_PERFMODE_GET_RID(tx_perfmode) \ + ((((unsigned long)(tx_perfmode)) & TX_PERFMODE_RID_MASK) >> TX_PERFMODE_RID_SHIFT) + +#define TX_PERFMODE_TOTAL_SIZE 32 +#define TX_PERFMODE(sel3, sel2, sel1, sel0, rid) \ + ((((unsigned long)(sel3)) << TX_PERFMODE_SEL3_SHIFT) | \ + (((unsigned long)(sel2)) << TX_PERFMODE_SEL2_SHIFT) | \ + (((unsigned long)(sel1)) << TX_PERFMODE_SEL1_SHIFT) | \ + (((unsigned long)(sel0)) << TX_PERFMODE_SEL0_SHIFT) | \ + (((unsigned long)(rid)) << TX_PERFMODE_RID_SHIFT)) + +#define TX_LOADBLOCK3_COUNT_SIZE 15 +#define TX_LOADBLOCK3_COUNT_SHIFT 0 +#define TX_LOADBLOCK3_COUNT_MASK 0x00007fff +#define TX_LOADBLOCK3_GET_COUNT(tx_loadblock3) \ + ((((unsigned long)(tx_loadblock3)) & TX_LOADBLOCK3_COUNT_MASK) >> TX_LOADBLOCK3_COUNT_SHIFT) +#define TX_LOADBLOCK3_SET_COUNT(tx_loadblock3, count) { \ + FDL_ASSERT(!((count) & ~((1 << TX_LOADBLOCK3_COUNT_SIZE)-1))); \ + tx_loadblock3 = (((unsigned long)(tx_loadblock3)) & ~TX_LOADBLOCK3_COUNT_MASK) | (((unsigned long)(count)) << TX_LOADBLOCK3_COUNT_SHIFT);\ +} +#define TX_LOADBLOCK3_FORMAT_SIZE 2 +#define TX_LOADBLOCK3_FORMAT_SHIFT 15 +#define TX_LOADBLOCK3_FORMAT_MASK 0x00018000 +#define TX_LOADBLOCK3_GET_FORMAT(tx_loadblock3) \ + ((((unsigned long)(tx_loadblock3)) & TX_LOADBLOCK3_FORMAT_MASK) >> TX_LOADBLOCK3_FORMAT_SHIFT) +#define TX_LOADBLOCK3_SET_FORMAT(tx_loadblock3, format) { \ + FDL_ASSERT(!((format) & ~((1 << TX_LOADBLOCK3_FORMAT_SIZE)-1))); \ + tx_loadblock3 = (((unsigned long)(tx_loadblock3)) & ~TX_LOADBLOCK3_FORMAT_MASK) | (((unsigned long)(format)) << TX_LOADBLOCK3_FORMAT_SHIFT);\ +} +#define TX_LOADBLOCK3_PAD0_SIZE 7 +#define TX_LOADBLOCK3_PAD0_SHIFT 17 +#define TX_LOADBLOCK3_PAD0_MASK 0x00fe0000 +#define TX_LOADBLOCK3_GET_PAD0(tx_loadblock3) \ + ((((unsigned long)(tx_loadblock3)) & TX_LOADBLOCK3_PAD0_MASK) >> TX_LOADBLOCK3_PAD0_SHIFT) +#define TX_LOADBLOCK3_SET_PAD0(tx_loadblock3, pad0) { \ + FDL_ASSERT(!((pad0) & ~((1 << TX_LOADBLOCK3_PAD0_SIZE)-1))); \ + tx_loadblock3 = (((unsigned long)(tx_loadblock3)) & ~TX_LOADBLOCK3_PAD0_MASK) | (((unsigned long)(pad0)) << TX_LOADBLOCK3_PAD0_SHIFT);\ +} +#define TX_LOADBLOCK3_RID_SIZE 8 +#define TX_LOADBLOCK3_RID_SHIFT 24 +#define TX_LOADBLOCK3_RID_MASK 0xff000000 +#define TX_LOADBLOCK3_GET_RID(tx_loadblock3) \ + ((((unsigned long)(tx_loadblock3)) & TX_LOADBLOCK3_RID_MASK) >> TX_LOADBLOCK3_RID_SHIFT) +#define TX_LOADBLOCK3_SET_RID(tx_loadblock3, rid) { \ + FDL_ASSERT(!((rid) & ~((1 << TX_LOADBLOCK3_RID_SIZE)-1))); \ + tx_loadblock3 = (((unsigned long)(tx_loadblock3)) & ~TX_LOADBLOCK3_RID_MASK) | (((unsigned long)(rid)) << TX_LOADBLOCK3_RID_SHIFT);\ +} +#define TX_LOADBLOCK3_TOTAL_SIZE 32 +#define TX_LOADBLOCK3(count, format, rid) \ + ((((unsigned long)(count)) << TX_LOADBLOCK3_COUNT_SHIFT) | \ + (((unsigned long)(format)) << TX_LOADBLOCK3_FORMAT_SHIFT) | \ + (((unsigned long)(rid)) << TX_LOADBLOCK3_RID_SHIFT)) +#endif // TX_REG_H diff --git a/include/revolution/private/xf_mem.h b/include/revolution/private/xf_mem.h new file mode 100644 index 0000000000..cf708e8646 --- /dev/null +++ b/include/revolution/private/xf_mem.h @@ -0,0 +1,749 @@ +#ifndef XF_MEM_H +#define XF_MEM_H + +#define XF_TEXGEN_REGULAR 0x00000000 +#define XF_TEXGEN_BUMP_MAP 0x00000001 +#define XF_TEXGEN_COLOR_STRGBC0 0x00000002 +#define XF_TEXGEN_COLOR_STRGBC1 0x00000003 +#define XF_TEX_TEXGEN_TYPE_F_UNUSED_4 0x00000004 +#define XF_TEX_TEXGEN_TYPE_F_UNUSED_5 0x00000005 +#define XF_TEX_TEXGEN_TYPE_F_UNUSED_6 0x00000006 +#define XF_TEX_TEXGEN_TYPE_F_UNUSED_7 0x00000007 + +#define XF_ERROR_F_CTEX_BUG_ENABLE_SIZE 1 +#define XF_ERROR_F_CTEX_BUG_ENABLE_SHIFT 0 +#define XF_ERROR_F_CTEX_BUG_ENABLE_MASK 0x00000001 +#define XF_ERROR_F_GET_CTEX_BUG_ENABLE(xf_error_f) \ + ((((unsigned long)(xf_error_f)) & XF_ERROR_F_CTEX_BUG_ENABLE_MASK) >> XF_ERROR_F_CTEX_BUG_ENABLE_SHIFT) + +#define XF_ERROR_F_TFAN4_BUG_ENABLE_SIZE 1 +#define XF_ERROR_F_TFAN4_BUG_ENABLE_SHIFT 1 +#define XF_ERROR_F_TFAN4_BUG_ENABLE_MASK 0x00000002 +#define XF_ERROR_F_GET_TFAN4_BUG_ENABLE(xf_error_f) \ + ((((unsigned long)(xf_error_f)) & XF_ERROR_F_TFAN4_BUG_ENABLE_MASK) >> XF_ERROR_F_TFAN4_BUG_ENABLE_SHIFT) + +#define XF_ERROR_F_TFAN16_BUG_ENABLE_SIZE 1 +#define XF_ERROR_F_TFAN16_BUG_ENABLE_SHIFT 2 +#define XF_ERROR_F_TFAN16_BUG_ENABLE_MASK 0x00000004 +#define XF_ERROR_F_GET_TFAN16_BUG_ENABLE(xf_error_f) \ + ((((unsigned long)(xf_error_f)) & XF_ERROR_F_TFAN16_BUG_ENABLE_MASK) >> XF_ERROR_F_TFAN16_BUG_ENABLE_SHIFT) + +#define XF_ERROR_F_DUALTRAN_REG_ENABLE_SIZE 1 +#define XF_ERROR_F_DUALTRAN_REG_ENABLE_SHIFT 3 +#define XF_ERROR_F_DUALTRAN_REG_ENABLE_MASK 0x00000008 +#define XF_ERROR_F_GET_DUALTRAN_REG_ENABLE(xf_error_f) \ + ((((unsigned long)(xf_error_f)) & XF_ERROR_F_DUALTRAN_REG_ENABLE_MASK) >> XF_ERROR_F_DUALTRAN_REG_ENABLE_SHIFT) + +#define XF_ERROR_F_BYPASS_BUG_ENABLE_SIZE 1 +#define XF_ERROR_F_BYPASS_BUG_ENABLE_SHIFT 4 +#define XF_ERROR_F_BYPASS_BUG_ENABLE_MASK 0x00000010 +#define XF_ERROR_F_GET_BYPASS_BUG_ENABLE(xf_error_f) \ + ((((unsigned long)(xf_error_f)) & XF_ERROR_F_BYPASS_BUG_ENABLE_MASK) >> XF_ERROR_F_BYPASS_BUG_ENABLE_SHIFT) + +#define XF_ERROR_F_FAST_MATRIX_ENABLE_SIZE 1 +#define XF_ERROR_F_FAST_MATRIX_ENABLE_SHIFT 5 +#define XF_ERROR_F_FAST_MATRIX_ENABLE_MASK 0x00000020 +#define XF_ERROR_F_GET_FAST_MATRIX_ENABLE(xf_error_f) \ + ((((unsigned long)(xf_error_f)) & XF_ERROR_F_FAST_MATRIX_ENABLE_MASK) >> XF_ERROR_F_FAST_MATRIX_ENABLE_SHIFT) + +#define XF_DUALTEXTRAN_F_DUALTEXTRAN_ENABLE_SIZE 1 +#define XF_DUALTEXTRAN_F_DUALTEXTRAN_ENABLE_SHIFT 0 +#define XF_DUALTEXTRAN_F_DUALTEXTRAN_ENABLE_MASK 0x00000001 +#define XF_DUALTEXTRAN_F_GET_DUALTEXTRAN_ENABLE(xf_dualtextran_f) \ + ((((unsigned long)(xf_dualtextran_f)) & XF_DUALTEXTRAN_F_DUALTEXTRAN_ENABLE_MASK) >> XF_DUALTEXTRAN_F_DUALTEXTRAN_ENABLE_SHIFT) + +#define XF_PERF0_F(perf_a, perf_b, perf_c, perf_d) \ +((((unsigned long)(perf_a)) << XF_PERF0_F_PERF_A_SHIFT) | \ + (((unsigned long)(perf_b)) << XF_PERF0_F_PERF_B_SHIFT) | \ + (((unsigned long)(perf_c)) << XF_PERF0_F_PERF_C_SHIFT) | \ + (((unsigned long)(perf_d)) << XF_PERF0_F_PERF_D_SHIFT)) + +#define XF_INVERTEXSPEC_F_HOST_COLORS_SIZE 2 +#define XF_INVERTEXSPEC_F_HOST_COLORS_SHIFT 0 +#define XF_INVERTEXSPEC_F_HOST_COLORS_MASK 0x00000003 +#define XF_INVERTEXSPEC_F_GET_HOST_COLORS(xf_invertexspec_f) \ + ((((unsigned long)(xf_invertexspec_f)) & XF_INVERTEXSPEC_F_HOST_COLORS_MASK) >> XF_INVERTEXSPEC_F_HOST_COLORS_SHIFT) + +#define XF_INVERTEXSPEC_F_HOST_NORMAL_SIZE 2 +#define XF_INVERTEXSPEC_F_HOST_NORMAL_SHIFT 2 +#define XF_INVERTEXSPEC_F_HOST_NORMAL_MASK 0x0000000c +#define XF_INVERTEXSPEC_F_GET_HOST_NORMAL(xf_invertexspec_f) \ + ((((unsigned long)(xf_invertexspec_f)) & XF_INVERTEXSPEC_F_HOST_NORMAL_MASK) >> XF_INVERTEXSPEC_F_HOST_NORMAL_SHIFT) + +#define XF_INVERTEXSPEC_F_HOST_TEXTURES_SIZE 4 +#define XF_INVERTEXSPEC_F_HOST_TEXTURES_SHIFT 4 +#define XF_INVERTEXSPEC_F_HOST_TEXTURES_MASK 0x000000f0 +#define XF_INVERTEXSPEC_F_GET_HOST_TEXTURES(xf_invertexspec_f) \ + ((((unsigned long)(xf_invertexspec_f)) & XF_INVERTEXSPEC_F_HOST_TEXTURES_MASK) >> XF_INVERTEXSPEC_F_HOST_TEXTURES_SHIFT) + +#define XF_INVERTEXSPEC_F_TOTAL_SIZE 8 +#define XF_INVERTEXSPEC_F_UNUSED_SIZE 24 + +#define XF_INVERTEXSPEC_F(host_colors, host_normal, host_textures) \ + ((((unsigned long)(host_colors)) << XF_INVERTEXSPEC_F_HOST_COLORS_SHIFT) | \ + (((unsigned long)(host_normal)) << XF_INVERTEXSPEC_F_HOST_NORMAL_SHIFT) | \ + (((unsigned long)(host_textures)) << XF_INVERTEXSPEC_F_HOST_TEXTURES_SHIFT)) + +#define XF_TEX_RESERVED0_SIZE 1 +#define XF_TEX_RESERVED0_SHIFT 0 +#define XF_TEX_RESERVED0_MASK 0x00000001 +#define XF_TEX_GET_RESERVED0(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_RESERVED0_MASK) >> XF_TEX_RESERVED0_SHIFT) + +#define XF_TEX_PROJECTION_SIZE 1 +#define XF_TEX_PROJECTION_SHIFT 1 +#define XF_TEX_PROJECTION_MASK 0x00000002 +#define XF_TEX_GET_PROJECTION(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_PROJECTION_MASK) >> XF_TEX_PROJECTION_SHIFT) + +#define XF_TEX_INPUT_FORM_SIZE 1 +#define XF_TEX_INPUT_FORM_SHIFT 2 +#define XF_TEX_INPUT_FORM_MASK 0x00000004 +#define XF_TEX_GET_INPUT_FORM(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_INPUT_FORM_MASK) >> XF_TEX_INPUT_FORM_SHIFT) + +#define XF_TEX_RESERVED1_SIZE 1 +#define XF_TEX_RESERVED1_SHIFT 3 +#define XF_TEX_RESERVED1_MASK 0x00000008 +#define XF_TEX_GET_RESERVED1(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_RESERVED1_MASK) >> XF_TEX_RESERVED1_SHIFT) + +#define XF_TEX_TEXGEN_TYPE_SIZE 3 +#define XF_TEX_TEXGEN_TYPE_SHIFT 4 +#define XF_TEX_TEXGEN_TYPE_MASK 0x00000070 +#define XF_TEX_GET_TEXGEN_TYPE(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_TEXGEN_TYPE_MASK) >> XF_TEX_TEXGEN_TYPE_SHIFT) + +#define XF_TEX_SOURCE_ROW_SIZE 5 +#define XF_TEX_SOURCE_ROW_SHIFT 7 +#define XF_TEX_SOURCE_ROW_MASK 0x00000f80 +#define XF_TEX_GET_SOURCE_ROW(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_SOURCE_ROW_MASK) >> XF_TEX_SOURCE_ROW_SHIFT) + +#define XF_TEX_BUMP_MAP_SOURCE_SIZE 3 +#define XF_TEX_BUMP_MAP_SOURCE_SHIFT 12 +#define XF_TEX_BUMP_MAP_SOURCE_MASK 0x00007000 +#define XF_TEX_GET_BUMP_MAP_SOURCE(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_BUMP_MAP_SOURCE_MASK) >> XF_TEX_BUMP_MAP_SOURCE_SHIFT) + +#define XF_TEX_BUMP_MAP_LIGHT_SIZE 3 +#define XF_TEX_BUMP_MAP_LIGHT_SHIFT 15 +#define XF_TEX_BUMP_MAP_LIGHT_MASK 0x00038000 +#define XF_TEX_GET_BUMP_MAP_LIGHT(xf_tex) \ + ((((unsigned long)(xf_tex)) & XF_TEX_BUMP_MAP_LIGHT_MASK) >> XF_TEX_BUMP_MAP_LIGHT_SHIFT) + +#define XF_TEX_TOTAL_SIZE 18 +#define XF_TEX_UNUSED_SIZE 14 + +#define XF_TEX(reserved0, projection, input_form, reserved1, texgen_type, source_row, bump_map_source, bump_map_light) \ + ((((unsigned long)(reserved0)) << XF_TEX_RESERVED0_SHIFT) | \ + (((unsigned long)(projection)) << XF_TEX_PROJECTION_SHIFT) | \ + (((unsigned long)(input_form)) << XF_TEX_INPUT_FORM_SHIFT) | \ + (((unsigned long)(reserved1)) << XF_TEX_RESERVED1_SHIFT) | \ + (((unsigned long)(texgen_type)) << XF_TEX_TEXGEN_TYPE_SHIFT) | \ + (((unsigned long)(source_row)) << XF_TEX_SOURCE_ROW_SHIFT) | \ + (((unsigned long)(bump_map_source)) << XF_TEX_BUMP_MAP_SOURCE_SHIFT) | \ + (((unsigned long)(bump_map_light)) << XF_TEX_BUMP_MAP_LIGHT_SHIFT)) + +#define XF_DUALTEX_F_DUALMATRIX_ADRS_SIZE 6 +#define XF_DUALTEX_F_DUALMATRIX_ADRS_SHIFT 0 +#define XF_DUALTEX_F_DUALMATRIX_ADRS_MASK 0x0000003f +#define XF_DUALTEX_F_GET_DUALMATRIX_ADRS(xf_dualtex_f) \ + ((((unsigned long)(xf_dualtex_f)) & XF_DUALTEX_F_DUALMATRIX_ADRS_MASK) >> XF_DUALTEX_F_DUALMATRIX_ADRS_SHIFT) + +#define XF_DUALTEX_F_RESERVED0_SIZE 2 +#define XF_DUALTEX_F_RESERVED0_SHIFT 6 +#define XF_DUALTEX_F_RESERVED0_MASK 0x000000c0 +#define XF_DUALTEX_F_GET_RESERVED0(xf_dualtex_f) \ + ((((unsigned long)(xf_dualtex_f)) & XF_DUALTEX_F_RESERVED0_MASK) >> XF_DUALTEX_F_RESERVED0_SHIFT) + +#define XF_DUALTEX_F_NORMAL_ENABLE_SIZE 1 +#define XF_DUALTEX_F_NORMAL_ENABLE_SHIFT 8 +#define XF_DUALTEX_F_NORMAL_ENABLE_MASK 0x00000100 +#define XF_DUALTEX_F_GET_NORMAL_ENABLE(xf_dualtex_f) \ + ((((unsigned long)(xf_dualtex_f)) & XF_DUALTEX_F_NORMAL_ENABLE_MASK) >> XF_DUALTEX_F_NORMAL_ENABLE_SHIFT) + +#define XF_DUALTEX_F_TOTAL_SIZE 9 +#define XF_DUALTEX_F_UNUSED_SIZE 23 + +#define XF_DUALTEX_F(dualmatrix_adrs, reserved0, normal_enable) \ + ((((unsigned long)(dualmatrix_adrs)) << XF_DUALTEX_F_DUALMATRIX_ADRS_SHIFT) | \ + (((unsigned long)(reserved0)) << XF_DUALTEX_F_RESERVED0_SHIFT) | \ + (((unsigned long)(normal_enable)) << XF_DUALTEX_F_NORMAL_ENABLE_SHIFT)) + +#define XF_PERF0_F_PERF_A_SIZE 5 +#define XF_PERF0_F_PERF_A_SHIFT 0 +#define XF_PERF0_F_PERF_A_MASK 0x0000001f +#define XF_PERF0_F_GET_PERF_A(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_A_MASK) >> XF_PERF0_F_PERF_A_SHIFT) + +#define XF_PERF0_F_PERF_B_SIZE 5 +#define XF_PERF0_F_PERF_B_SHIFT 5 +#define XF_PERF0_F_PERF_B_MASK 0x000003e0 +#define XF_PERF0_F_GET_PERF_B(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_B_MASK) >> XF_PERF0_F_PERF_B_SHIFT) + +#define XF_PERF0_F_PERF_C_SIZE 5 +#define XF_PERF0_F_PERF_C_SHIFT 10 +#define XF_PERF0_F_PERF_C_MASK 0x00007c00 +#define XF_PERF0_F_GET_PERF_C(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_C_MASK) >> XF_PERF0_F_PERF_C_SHIFT) + +#define XF_PERF0_F_PERF_D_SIZE 5 +#define XF_PERF0_F_PERF_D_SHIFT 15 +#define XF_PERF0_F_PERF_D_MASK 0x000f8000 +#define XF_PERF0_F_GET_PERF_D(xf_perf0_f) \ + ((((unsigned long)(xf_perf0_f)) & XF_PERF0_F_PERF_D_MASK) >> XF_PERF0_F_PERF_D_SHIFT) + +#define XF_PERF0_F_TOTAL_SIZE 20 +#define XF_PERF0_F_UNUSED_SIZE 12 + +#define XF_PERF0_F(perf_a, perf_b, perf_c, perf_d) \ + ((((unsigned long)(perf_a)) << XF_PERF0_F_PERF_A_SHIFT) | \ + (((unsigned long)(perf_b)) << XF_PERF0_F_PERF_B_SHIFT) | \ + (((unsigned long)(perf_c)) << XF_PERF0_F_PERF_C_SHIFT) | \ + (((unsigned long)(perf_d)) << XF_PERF0_F_PERF_D_SHIFT)) + +#define XF_PERF1_F_PERF_TARGET_SIZE 7 +#define XF_PERF1_F_PERF_TARGET_SHIFT 0 +#define XF_PERF1_F_PERF_TARGET_MASK 0x0000007f +#define XF_PERF1_F_GET_PERF_TARGET(xf_perf1_f) \ + ((((unsigned long)(xf_perf1_f)) & XF_PERF1_F_PERF_TARGET_MASK) >> XF_PERF1_F_PERF_TARGET_SHIFT) + +#define XF_PERF1_F_TOTAL_SIZE 7 +#define XF_PERF1_F_UNUSED_SIZE 25 + +#define XF_PERF1_F(perf_target) \ + ((((unsigned long)(perf_target)) << XF_PERF1_F_PERF_TARGET_SHIFT)) + +#define XF_MATERIAL0_F_ALPHA_SIZE 8 +#define XF_MATERIAL0_F_ALPHA_SHIFT 0 +#define XF_MATERIAL0_F_ALPHA_MASK 0x000000ff +#define XF_MATERIAL0_F_GET_ALPHA(xf_material0_f) \ + ((((unsigned long)(xf_material0_f)) & XF_MATERIAL0_F_ALPHA_MASK) >> XF_MATERIAL0_F_ALPHA_SHIFT) +#define XF_MATERIAL0_F_SET_ALPHA(xf_material0_f, alpha) { \ + xf_material0_f = (((unsigned long)(xf_material0_f)) & ~XF_MATERIAL0_F_ALPHA_MASK) | (((unsigned long)(alpha)) << XF_MATERIAL0_F_ALPHA_SHIFT);\ +} +#define XF_MATERIAL0_F_BLUE_SIZE 8 +#define XF_MATERIAL0_F_BLUE_SHIFT 8 +#define XF_MATERIAL0_F_BLUE_MASK 0x0000ff00 +#define XF_MATERIAL0_F_GET_BLUE(xf_material0_f) \ + ((((unsigned long)(xf_material0_f)) & XF_MATERIAL0_F_BLUE_MASK) >> XF_MATERIAL0_F_BLUE_SHIFT) +#define XF_MATERIAL0_F_SET_BLUE(xf_material0_f, blue) { \ + xf_material0_f = (((unsigned long)(xf_material0_f)) & ~XF_MATERIAL0_F_BLUE_MASK) | (((unsigned long)(blue)) << XF_MATERIAL0_F_BLUE_SHIFT);\ + +#define XF_MATERIAL0_F_GREEN_SIZE 8 +#define XF_MATERIAL0_F_GREEN_SHIFT 16 +#define XF_MATERIAL0_F_GREEN_MASK 0x00ff0000 +#define XF_MATERIAL0_F_GET_GREEN(xf_material0_f) \ + ((((unsigned long)(xf_material0_f)) & XF_MATERIAL0_F_GREEN_MASK) >> XF_MATERIAL0_F_GREEN_SHIFT) +#define XF_MATERIAL0_F_SET_GREEN(xf_material0_f, green) { \ + xf_material0_f = (((unsigned long)(xf_material0_f)) & ~XF_MATERIAL0_F_GREEN_MASK) | (((unsigned long)(green)) << XF_MATERIAL0_F_GREEN_SHIFT);\ +} + +#define XF_MATERIAL0_F_RED_SIZE 8 +#define XF_MATERIAL0_F_RED_SHIFT 24 +#define XF_MATERIAL0_F_RED_MASK 0xff000000 +#define XF_MATERIAL0_F_GET_RED(xf_material0_f) \ + ((((unsigned long)(xf_material0_f)) & XF_MATERIAL0_F_RED_MASK) >> XF_MATERIAL0_F_RED_SHIFT) +#define XF_MATERIAL0_F_SET_RED(xf_material0_f, red) { \ + xf_material0_f = (((unsigned long)(xf_material0_f)) & ~XF_MATERIAL0_F_RED_MASK) | (((unsigned long)(red)) << XF_MATERIAL0_F_RED_SHIFT);\ +} +#define XF_MATERIAL0_F_TOTAL_SIZE 32 +#define XF_MATERIAL0_F(alpha, blue, green, red) \ + ((((unsigned long)(alpha)) << XF_MATERIAL0_F_ALPHA_SHIFT) | \ + (((unsigned long)(blue)) << XF_MATERIAL0_F_BLUE_SHIFT) | \ + (((unsigned long)(green)) << XF_MATERIAL0_F_GREEN_SHIFT) | \ + (((unsigned long)(red)) << XF_MATERIAL0_F_RED_SHIFT)) + +#define XF_MATERIAL1_F_ALPHA_SIZE 8 +#define XF_MATERIAL1_F_ALPHA_SHIFT 0 +#define XF_MATERIAL1_F_ALPHA_MASK 0x000000ff +#define XF_MATERIAL1_F_GET_ALPHA(xf_material1_f) \ + ((((unsigned long)(xf_material1_f)) & XF_MATERIAL1_F_ALPHA_MASK) >> XF_MATERIAL1_F_ALPHA_SHIFT) +#define XF_MATERIAL1_F_SET_ALPHA(xf_material1_f, alpha) { \ + xf_material1_f = (((unsigned long)(xf_material1_f)) & ~XF_MATERIAL1_F_ALPHA_MASK) | (((unsigned long)(alpha)) << XF_MATERIAL1_F_ALPHA_SHIFT);\ +} +#define XF_MATERIAL1_F_BLUE_SIZE 8 +#define XF_MATERIAL1_F_BLUE_SHIFT 8 +#define XF_MATERIAL1_F_BLUE_MASK 0x0000ff00 +#define XF_MATERIAL1_F_GET_BLUE(xf_material1_f) \ + ((((unsigned long)(xf_material1_f)) & XF_MATERIAL1_F_BLUE_MASK) >> XF_MATERIAL1_F_BLUE_SHIFT) +#define XF_MATERIAL1_F_SET_BLUE(xf_material1_f, blue) { \ + xf_material1_f = (((unsigned long)(xf_material1_f)) & ~XF_MATERIAL1_F_BLUE_MASK) | (((unsigned long)(blue)) << XF_MATERIAL1_F_BLUE_SHIFT);\ +} +#define XF_MATERIAL1_F_GREEN_SIZE 8 +#define XF_MATERIAL1_F_GREEN_SHIFT 16 +#define XF_MATERIAL1_F_GREEN_MASK 0x00ff0000 +#define XF_MATERIAL1_F_GET_GREEN(xf_material1_f) \ + ((((unsigned long)(xf_material1_f)) & XF_MATERIAL1_F_GREEN_MASK) >> XF_MATERIAL1_F_GREEN_SHIFT) +#define XF_MATERIAL1_F_SET_GREEN(xf_material1_f, green) { \ + xf_material1_f = (((unsigned long)(xf_material1_f)) & ~XF_MATERIAL1_F_GREEN_MASK) | (((unsigned long)(green)) << XF_MATERIAL1_F_GREEN_SHIFT);\ +} +#define XF_MATERIAL1_F_RED_SIZE 8 +#define XF_MATERIAL1_F_RED_SHIFT 24 +#define XF_MATERIAL1_F_RED_MASK 0xff000000 +#define XF_MATERIAL1_F_GET_RED(xf_material1_f) \ + ((((unsigned long)(xf_material1_f)) & XF_MATERIAL1_F_RED_MASK) >> XF_MATERIAL1_F_RED_SHIFT) +#define XF_MATERIAL1_F_SET_RED(xf_material1_f, red) { \ + xf_material1_f = (((unsigned long)(xf_material1_f)) & ~XF_MATERIAL1_F_RED_MASK) | (((unsigned long)(red)) << XF_MATERIAL1_F_RED_SHIFT);\ +} +#define XF_MATERIAL1_F_TOTAL_SIZE 32 +#define XF_MATERIAL1_F(alpha, blue, green, red) \ + ((((unsigned long)(alpha)) << XF_MATERIAL1_F_ALPHA_SHIFT) | \ + (((unsigned long)(blue)) << XF_MATERIAL1_F_BLUE_SHIFT) | \ + (((unsigned long)(green)) << XF_MATERIAL1_F_GREEN_SHIFT) | \ + (((unsigned long)(red)) << XF_MATERIAL1_F_RED_SHIFT)) + +#define XF_COLOR0CNTRL_F_MATERIAL_SRC_SIZE 1 +#define XF_COLOR0CNTRL_F_MATERIAL_SRC_SHIFT 0 +#define XF_COLOR0CNTRL_F_MATERIAL_SRC_MASK 0x00000001 +#define XF_COLOR0CNTRL_F_GET_MATERIAL_SRC(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_MATERIAL_SRC_MASK) >> XF_COLOR0CNTRL_F_MATERIAL_SRC_SHIFT) +#define XF_COLOR0CNTRL_F_SET_MATERIAL_SRC(xf_color0cntrl_f, material_src) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_MATERIAL_SRC_MASK) | (((unsigned long)(material_src)) << XF_COLOR0CNTRL_F_MATERIAL_SRC_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHTFUNC_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHTFUNC_SHIFT 1 +#define XF_COLOR0CNTRL_F_LIGHTFUNC_MASK 0x00000002 +#define XF_COLOR0CNTRL_F_GET_LIGHTFUNC(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHTFUNC_MASK) >> XF_COLOR0CNTRL_F_LIGHTFUNC_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHTFUNC(xf_color0cntrl_f, lightfunc) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHTFUNC_MASK) | (((unsigned long)(lightfunc)) << XF_COLOR0CNTRL_F_LIGHTFUNC_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_AMBIENT_SRC_SIZE 1 +#define XF_COLOR0CNTRL_F_AMBIENT_SRC_SHIFT 6 +#define XF_COLOR0CNTRL_F_AMBIENT_SRC_MASK 0x00000040 +#define XF_COLOR0CNTRL_F_GET_AMBIENT_SRC(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_AMBIENT_SRC_MASK) >> XF_COLOR0CNTRL_F_AMBIENT_SRC_SHIFT) +#define XF_COLOR0CNTRL_F_SET_AMBIENT_SRC(xf_color0cntrl_f, ambient_src) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_AMBIENT_SRC_MASK) | (((unsigned long)(ambient_src)) << XF_COLOR0CNTRL_F_AMBIENT_SRC_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_DIFFUSEATTEN_SIZE 2 +#define XF_COLOR0CNTRL_F_DIFFUSEATTEN_SHIFT 7 +#define XF_COLOR0CNTRL_F_DIFFUSEATTEN_MASK 0x00000180 +#define XF_COLOR0CNTRL_F_GET_DIFFUSEATTEN(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_DIFFUSEATTEN_MASK) >> XF_COLOR0CNTRL_F_DIFFUSEATTEN_SHIFT) +#define XF_COLOR0CNTRL_F_SET_DIFFUSEATTEN(xf_color0cntrl_f, diffuseatten) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_DIFFUSEATTEN_MASK) | (((unsigned long)(diffuseatten)) << XF_COLOR0CNTRL_F_DIFFUSEATTEN_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT0_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT0_SHIFT 2 +#define XF_COLOR0CNTRL_F_LIGHT0_MASK 0x00000004 +#define XF_COLOR0CNTRL_F_GET_LIGHT0(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT0_MASK) >> XF_COLOR0CNTRL_F_LIGHT0_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT0(xf_color0cntrl_f, light0) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT0_MASK) | (((unsigned long)(light0)) << XF_COLOR0CNTRL_F_LIGHT0_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT1_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT1_SHIFT 3 +#define XF_COLOR0CNTRL_F_LIGHT1_MASK 0x00000008 +#define XF_COLOR0CNTRL_F_GET_LIGHT1(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT1_MASK) >> XF_COLOR0CNTRL_F_LIGHT1_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT1(xf_color0cntrl_f, light1) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT1_MASK) | (((unsigned long)(light1)) << XF_COLOR0CNTRL_F_LIGHT1_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT2_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT2_SHIFT 4 +#define XF_COLOR0CNTRL_F_LIGHT2_MASK 0x00000010 +#define XF_COLOR0CNTRL_F_GET_LIGHT2(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT2_MASK) >> XF_COLOR0CNTRL_F_LIGHT2_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT2(xf_color0cntrl_f, light2) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT2_MASK) | (((unsigned long)(light2)) << XF_COLOR0CNTRL_F_LIGHT2_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT3_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT3_SHIFT 5 +#define XF_COLOR0CNTRL_F_LIGHT3_MASK 0x00000020 +#define XF_COLOR0CNTRL_F_GET_LIGHT3(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT3_MASK) >> XF_COLOR0CNTRL_F_LIGHT3_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT3(xf_color0cntrl_f, light3) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT3_MASK) | (((unsigned long)(light3)) << XF_COLOR0CNTRL_F_LIGHT3_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT4_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT4_SHIFT 11 +#define XF_COLOR0CNTRL_F_LIGHT4_MASK 0x00000800 +#define XF_COLOR0CNTRL_F_GET_LIGHT4(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT4_MASK) >> XF_COLOR0CNTRL_F_LIGHT4_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT4(xf_color0cntrl_f, light4) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT4_MASK) | (((unsigned long)(light4)) << XF_COLOR0CNTRL_F_LIGHT4_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT5_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT5_SHIFT 12 +#define XF_COLOR0CNTRL_F_LIGHT5_MASK 0x00001000 +#define XF_COLOR0CNTRL_F_GET_LIGHT5(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT5_MASK) >> XF_COLOR0CNTRL_F_LIGHT5_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT5(xf_color0cntrl_f, light5) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT5_MASK) | (((unsigned long)(light5)) << XF_COLOR0CNTRL_F_LIGHT5_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT6_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT6_SHIFT 13 +#define XF_COLOR0CNTRL_F_LIGHT6_MASK 0x00002000 +#define XF_COLOR0CNTRL_F_GET_LIGHT6(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT6_MASK) >> XF_COLOR0CNTRL_F_LIGHT6_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT6(xf_color0cntrl_f, light6) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT6_MASK) | (((unsigned long)(light6)) << XF_COLOR0CNTRL_F_LIGHT6_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_LIGHT7_SIZE 1 +#define XF_COLOR0CNTRL_F_LIGHT7_SHIFT 14 +#define XF_COLOR0CNTRL_F_LIGHT7_MASK 0x00004000 +#define XF_COLOR0CNTRL_F_GET_LIGHT7(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_LIGHT7_MASK) >> XF_COLOR0CNTRL_F_LIGHT7_SHIFT) +#define XF_COLOR0CNTRL_F_SET_LIGHT7(xf_color0cntrl_f, light7) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_LIGHT7_MASK) | (((unsigned long)(light7)) << XF_COLOR0CNTRL_F_LIGHT7_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_ATTENENABLE_SIZE 1 +#define XF_COLOR0CNTRL_F_ATTENENABLE_SHIFT 9 +#define XF_COLOR0CNTRL_F_ATTENENABLE_MASK 0x00000200 +#define XF_COLOR0CNTRL_F_GET_ATTENENABLE(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_ATTENENABLE_MASK) >> XF_COLOR0CNTRL_F_ATTENENABLE_SHIFT) +#define XF_COLOR0CNTRL_F_SET_ATTENENABLE(xf_color0cntrl_f, attenenable) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_ATTENENABLE_MASK) | (((unsigned long)(attenenable)) << XF_COLOR0CNTRL_F_ATTENENABLE_SHIFT);\ +} + +#define XF_COLOR0CNTRL_F_ATTENSELECT_SIZE 1 +#define XF_COLOR0CNTRL_F_ATTENSELECT_SHIFT 10 +#define XF_COLOR0CNTRL_F_ATTENSELECT_MASK 0x00000400 +#define XF_COLOR0CNTRL_F_GET_ATTENSELECT(xf_color0cntrl_f) \ + ((((unsigned long)(xf_color0cntrl_f)) & XF_COLOR0CNTRL_F_ATTENSELECT_MASK) >> XF_COLOR0CNTRL_F_ATTENSELECT_SHIFT) +#define XF_COLOR0CNTRL_F_SET_ATTENSELECT(xf_color0cntrl_f, attenselect) { \ + xf_color0cntrl_f = (((unsigned long)(xf_color0cntrl_f)) & ~XF_COLOR0CNTRL_F_ATTENSELECT_MASK) | (((unsigned long)(attenselect)) << XF_COLOR0CNTRL_F_ATTENSELECT_SHIFT);\ +} + +#define SC_XF_AMBIENT0_F_SET_ALPHA(line, xf_ambient0_f,alpha) \ + FAST_GPFLAGSET(line, xf_ambient0_f,alpha,XF_AMBIENT0_F_ALPHA) + +#define SC_XF_AMBIENT0_F_SET_BLUE(line, xf_ambient0_f,blue) \ + FAST_GPFLAGSET(line, xf_ambient0_f,blue,XF_AMBIENT0_F_BLUE) + +#define SC_XF_AMBIENT0_F_SET_GREEN(line, xf_ambient0_f,green) \ + FAST_GPFLAGSET(line, xf_ambient0_f,green,XF_AMBIENT0_F_GREEN) + +#define SC_XF_AMBIENT0_F_SET_RED(line, xf_ambient0_f,red) \ + FAST_GPFLAGSET(line, xf_ambient0_f,red,XF_AMBIENT0_F_RED) + +#define SC_XF_AMBIENT1_F_SET_ALPHA(line, xf_ambient1_f,alpha) \ + FAST_GPFLAGSET(line, xf_ambient1_f,alpha,XF_AMBIENT1_F_ALPHA) + +#define SC_XF_AMBIENT1_F_SET_BLUE(line, xf_ambient1_f,blue) \ + FAST_GPFLAGSET(line, xf_ambient1_f,blue,XF_AMBIENT1_F_BLUE) + +#define SC_XF_AMBIENT1_F_SET_GREEN(line, xf_ambient1_f,green) \ + FAST_GPFLAGSET(line, xf_ambient1_f,green,XF_AMBIENT1_F_GREEN) + +#define SC_XF_AMBIENT1_F_SET_RED(line, xf_ambient1_f,red) \ + FAST_GPFLAGSET(line, xf_ambient1_f,red,XF_AMBIENT1_F_RED) + +#define SC_XF_MATERIAL0_F_SET_ALPHA(line, xf_material0_f,alpha) \ + FAST_GPFLAGSET(line, xf_material0_f,alpha,XF_MATERIAL0_F_ALPHA) + +#define SC_XF_MATERIAL0_F_SET_BLUE(line, xf_material0_f,blue) \ + FAST_GPFLAGSET(line, xf_material0_f,blue,XF_MATERIAL0_F_BLUE) + +#define SC_XF_MATERIAL0_F_SET_GREEN(line, xf_material0_f,green) \ + FAST_GPFLAGSET(line, xf_material0_f,green,XF_MATERIAL0_F_GREEN) + +#define SC_XF_MATERIAL0_F_SET_RED(line, xf_material0_f,red) \ + FAST_GPFLAGSET(line, xf_material0_f,red,XF_MATERIAL0_F_RED) + +#define SC_XF_MATERIAL1_F_SET_ALPHA(line, xf_material1_f,alpha) \ + FAST_GPFLAGSET(line, xf_material1_f,alpha,XF_MATERIAL1_F_ALPHA) + +#define SC_XF_MATERIAL1_F_SET_BLUE(line, xf_material1_f,blue) \ + FAST_GPFLAGSET(line, xf_material1_f,blue,XF_MATERIAL1_F_BLUE) + +#define SC_XF_MATERIAL1_F_SET_GREEN(line, xf_material1_f,green) \ + FAST_GPFLAGSET(line, xf_material1_f,green,XF_MATERIAL1_F_GREEN) + +#define SC_XF_MATERIAL1_F_SET_RED(line, xf_material1_f,red) \ + FAST_GPFLAGSET(line, xf_material1_f,red,XF_MATERIAL1_F_RED) + +#define SC_XF_MATRIXINDEX0_F_SET_GEOM(line, xf_matrixindex0_f,geom) \ + FAST_GPFLAGSET(line, xf_matrixindex0_f,geom,XF_MATRIXINDEX0_F_GEOM) + +#define SC_XF_MATRIXINDEX0_F_SET_TEX0(line, xf_matrixindex0_f,tex0) \ + FAST_GPFLAGSET(line, xf_matrixindex0_f,tex0,XF_MATRIXINDEX0_F_TEX0) + +#define SC_XF_MATRIXINDEX0_F_SET_TEX1(line, xf_matrixindex0_f,tex1) \ + FAST_GPFLAGSET(line, xf_matrixindex0_f,tex1,XF_MATRIXINDEX0_F_TEX1) + +#define SC_XF_MATRIXINDEX0_F_SET_TEX2(line, xf_matrixindex0_f,tex2) \ + FAST_GPFLAGSET(line, xf_matrixindex0_f,tex2,XF_MATRIXINDEX0_F_TEX2) + +#define SC_XF_MATRIXINDEX0_F_SET_TEX3(line, xf_matrixindex0_f,tex3) \ + FAST_GPFLAGSET(line, xf_matrixindex0_f,tex3,XF_MATRIXINDEX0_F_TEX3) + +#define SC_XF_MATRIXINDEX1_F_SET_TEX4(line, xf_matrixindex1_f,tex4) \ + FAST_GPFLAGSET(line, xf_matrixindex1_f,tex4,XF_MATRIXINDEX1_F_TEX4) + +#define SC_XF_MATRIXINDEX1_F_SET_TEX5(line, xf_matrixindex1_f,tex5) \ + FAST_GPFLAGSET(line, xf_matrixindex1_f,tex5,XF_MATRIXINDEX1_F_TEX5) + +#define SC_XF_MATRIXINDEX1_F_SET_TEX6(line, xf_matrixindex1_f,tex6) \ + FAST_GPFLAGSET(line, xf_matrixindex1_f,tex6,XF_MATRIXINDEX1_F_TEX6) + +#define SC_XF_MATRIXINDEX1_F_SET_TEX7(line, xf_matrixindex1_f,tex7) \ + FAST_GPFLAGSET(line, xf_matrixindex1_f,tex7,XF_MATRIXINDEX1_F_TEX7) + +#define SC_XF_INVERTEXSPEC_F_SET_HOST_COLORS(line, xf_invertexspec_f,host_colors) \ + FAST_GPFLAGSET(line, xf_invertexspec_f,host_colors,XF_INVERTEXSPEC_F_HOST_COLORS) + +#define SC_XF_INVERTEXSPEC_F_SET_HOST_NORMAL(line, xf_invertexspec_f,host_normal) \ + FAST_GPFLAGSET(line, xf_invertexspec_f,host_normal,XF_INVERTEXSPEC_F_HOST_NORMAL) + +#define SC_XF_INVERTEXSPEC_F_SET_HOST_TEXTURES(line, xf_invertexspec_f,host_textures) \ + FAST_GPFLAGSET(line, xf_invertexspec_f,host_textures,XF_INVERTEXSPEC_F_HOST_TEXTURES) + +#define SC_XF_NUMCOLORS_F_SET_GEN_NUMCOLORS(line, xf_numcolors_f,gen_numcolors) \ + FAST_GPFLAGSET(line, xf_numcolors_f,gen_numcolors,XF_NUMCOLORS_F_GEN_NUMCOLORS) + +#define SC_XF_COLOR0CNTRL_F_SET_MATERIAL_SRC(line, xf_color0cntrl_f,material_src) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,material_src,XF_COLOR0CNTRL_F_MATERIAL_SRC) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHTFUNC(line, xf_color0cntrl_f,lightfunc) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,lightfunc,XF_COLOR0CNTRL_F_LIGHTFUNC) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT0(line, xf_color0cntrl_f,light0) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light0,XF_COLOR0CNTRL_F_LIGHT0) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT1(line, xf_color0cntrl_f,light1) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light1,XF_COLOR0CNTRL_F_LIGHT1) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT2(line, xf_color0cntrl_f,light2) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light2,XF_COLOR0CNTRL_F_LIGHT2) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT3(line, xf_color0cntrl_f,light3) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light3,XF_COLOR0CNTRL_F_LIGHT3) + +#define SC_XF_COLOR0CNTRL_F_SET_AMBIENT_SRC(line, xf_color0cntrl_f,ambient_src) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,ambient_src,XF_COLOR0CNTRL_F_AMBIENT_SRC) + +#define SC_XF_COLOR0CNTRL_F_SET_DIFFUSEATTEN(line, xf_color0cntrl_f,diffuseatten) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,diffuseatten,XF_COLOR0CNTRL_F_DIFFUSEATTEN) + +#define SC_XF_COLOR0CNTRL_F_SET_ATTENENABLE(line, xf_color0cntrl_f,attenenable) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,attenenable,XF_COLOR0CNTRL_F_ATTENENABLE) + +#define SC_XF_COLOR0CNTRL_F_SET_ATTENSELECT(line, xf_color0cntrl_f,attenselect) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,attenselect,XF_COLOR0CNTRL_F_ATTENSELECT) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT4(line, xf_color0cntrl_f,light4) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light4,XF_COLOR0CNTRL_F_LIGHT4) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT5(line, xf_color0cntrl_f,light5) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light5,XF_COLOR0CNTRL_F_LIGHT5) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT6(line, xf_color0cntrl_f,light6) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light6,XF_COLOR0CNTRL_F_LIGHT6) + +#define SC_XF_COLOR0CNTRL_F_SET_LIGHT7(line, xf_color0cntrl_f,light7) \ + FAST_GPFLAGSET(line, xf_color0cntrl_f,light7,XF_COLOR0CNTRL_F_LIGHT7) + +#define SC_XF_COLOR1CNTRL_F_SET_MATERIAL_SRC(line, xf_color1cntrl_f,material_src) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,material_src,XF_COLOR1CNTRL_F_MATERIAL_SRC) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHTFUNC(line, xf_color1cntrl_f,lightfunc) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,lightfunc,XF_COLOR1CNTRL_F_LIGHTFUNC) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT0(line, xf_color1cntrl_f,light0) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light0,XF_COLOR1CNTRL_F_LIGHT0) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT1(line, xf_color1cntrl_f,light1) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light1,XF_COLOR1CNTRL_F_LIGHT1) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT2(line, xf_color1cntrl_f,light2) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light2,XF_COLOR1CNTRL_F_LIGHT2) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT3(line, xf_color1cntrl_f,light3) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light3,XF_COLOR1CNTRL_F_LIGHT3) + +#define SC_XF_COLOR1CNTRL_F_SET_AMBIENT_SRC(line, xf_color1cntrl_f,ambient_src) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,ambient_src,XF_COLOR1CNTRL_F_AMBIENT_SRC) + +#define SC_XF_COLOR1CNTRL_F_SET_DIFFUSEATTEN(line, xf_color1cntrl_f,diffuseatten) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,diffuseatten,XF_COLOR1CNTRL_F_DIFFUSEATTEN) + +#define SC_XF_COLOR1CNTRL_F_SET_ATTENENABLE(line, xf_color1cntrl_f,attenenable) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,attenenable,XF_COLOR1CNTRL_F_ATTENENABLE) + +#define SC_XF_COLOR1CNTRL_F_SET_ATTENSELECT(line, xf_color1cntrl_f,attenselect) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,attenselect,XF_COLOR1CNTRL_F_ATTENSELECT) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT4(line, xf_color1cntrl_f,light4) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light4,XF_COLOR1CNTRL_F_LIGHT4) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT5(line, xf_color1cntrl_f,light5) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light5,XF_COLOR1CNTRL_F_LIGHT5) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT6(line, xf_color1cntrl_f,light6) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light6,XF_COLOR1CNTRL_F_LIGHT6) + +#define SC_XF_COLOR1CNTRL_F_SET_LIGHT7(line, xf_color1cntrl_f,light7) \ + FAST_GPFLAGSET(line, xf_color1cntrl_f,light7,XF_COLOR1CNTRL_F_LIGHT7) + +#define SC_XF_ALPHA0CNTRL_F_SET_MATERIAL_SRC(line, xf_alpha0cntrl_f,material_src) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,material_src,XF_ALPHA0CNTRL_F_MATERIAL_SRC) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHTFUNC(line, xf_alpha0cntrl_f,lightfunc) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,lightfunc,XF_ALPHA0CNTRL_F_LIGHTFUNC) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT0(line, xf_alpha0cntrl_f,light0) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light0,XF_ALPHA0CNTRL_F_LIGHT0) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT1(line, xf_alpha0cntrl_f,light1) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light1,XF_ALPHA0CNTRL_F_LIGHT1) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT2(line, xf_alpha0cntrl_f,light2) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light2,XF_ALPHA0CNTRL_F_LIGHT2) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT3(line, xf_alpha0cntrl_f,light3) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light3,XF_ALPHA0CNTRL_F_LIGHT3) + +#define SC_XF_ALPHA0CNTRL_F_SET_AMBIENT_SRC(line, xf_alpha0cntrl_f,ambient_src) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,ambient_src,XF_ALPHA0CNTRL_F_AMBIENT_SRC) + +#define SC_XF_ALPHA0CNTRL_F_SET_DIFFUSEATTEN(line, xf_alpha0cntrl_f,diffuseatten) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,diffuseatten,XF_ALPHA0CNTRL_F_DIFFUSEATTEN) + +#define SC_XF_ALPHA0CNTRL_F_SET_ATTENENABLE(line, xf_alpha0cntrl_f,attenenable) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,attenenable,XF_ALPHA0CNTRL_F_ATTENENABLE) + +#define SC_XF_ALPHA0CNTRL_F_SET_ATTENSELECT(line, xf_alpha0cntrl_f,attenselect) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,attenselect,XF_ALPHA0CNTRL_F_ATTENSELECT) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT4(line, xf_alpha0cntrl_f,light4) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light4,XF_ALPHA0CNTRL_F_LIGHT4) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT5(line, xf_alpha0cntrl_f,light5) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light5,XF_ALPHA0CNTRL_F_LIGHT5) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT6(line, xf_alpha0cntrl_f,light6) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light6,XF_ALPHA0CNTRL_F_LIGHT6) + +#define SC_XF_ALPHA0CNTRL_F_SET_LIGHT7(line, xf_alpha0cntrl_f,light7) \ + FAST_GPFLAGSET(line, xf_alpha0cntrl_f,light7,XF_ALPHA0CNTRL_F_LIGHT7) + +#define SC_XF_ALPHA1CNTRL_F_SET_MATERIAL_SRC(line, xf_alpha1cntrl_f,material_src) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,material_src,XF_ALPHA1CNTRL_F_MATERIAL_SRC) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHTFUNC(line, xf_alpha1cntrl_f,lightfunc) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,lightfunc,XF_ALPHA1CNTRL_F_LIGHTFUNC) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT0(line, xf_alpha1cntrl_f,light0) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light0,XF_ALPHA1CNTRL_F_LIGHT0) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT1(line, xf_alpha1cntrl_f,light1) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light1,XF_ALPHA1CNTRL_F_LIGHT1) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT2(line, xf_alpha1cntrl_f,light2) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light2,XF_ALPHA1CNTRL_F_LIGHT2) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT3(line, xf_alpha1cntrl_f,light3) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light3,XF_ALPHA1CNTRL_F_LIGHT3) + +#define SC_XF_ALPHA1CNTRL_F_SET_AMBIENT_SRC(line, xf_alpha1cntrl_f,ambient_src) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,ambient_src,XF_ALPHA1CNTRL_F_AMBIENT_SRC) + +#define SC_XF_ALPHA1CNTRL_F_SET_DIFFUSEATTEN(line, xf_alpha1cntrl_f,diffuseatten) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,diffuseatten,XF_ALPHA1CNTRL_F_DIFFUSEATTEN) + +#define SC_XF_ALPHA1CNTRL_F_SET_ATTENENABLE(line, xf_alpha1cntrl_f,attenenable) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,attenenable,XF_ALPHA1CNTRL_F_ATTENENABLE) + +#define SC_XF_ALPHA1CNTRL_F_SET_ATTENSELECT(line, xf_alpha1cntrl_f,attenselect) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,attenselect,XF_ALPHA1CNTRL_F_ATTENSELECT) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT4(line, xf_alpha1cntrl_f,light4) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light4,XF_ALPHA1CNTRL_F_LIGHT4) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT5(line, xf_alpha1cntrl_f,light5) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light5,XF_ALPHA1CNTRL_F_LIGHT5) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT6(line, xf_alpha1cntrl_f,light6) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light6,XF_ALPHA1CNTRL_F_LIGHT6) + +#define SC_XF_ALPHA1CNTRL_F_SET_LIGHT7(line, xf_alpha1cntrl_f,light7) \ + FAST_GPFLAGSET(line, xf_alpha1cntrl_f,light7,XF_ALPHA1CNTRL_F_LIGHT7) + +#define SC_XF_TEX_SET_RESERVED0(line, xf_tex,reserved0) \ + FAST_GPFLAGSET(line, xf_tex,reserved0,XF_TEX_RESERVED0) + +#define SC_XF_TEX_SET_PROJECTION(line, xf_tex,projection) \ + FAST_GPFLAGSET(line, xf_tex,projection,XF_TEX_PROJECTION) + +#define SC_XF_TEX_SET_INPUT_FORM(line, xf_tex,input_form) \ + FAST_GPFLAGSET(line, xf_tex,input_form,XF_TEX_INPUT_FORM) + +#define SC_XF_TEX_SET_RESERVED1(line, xf_tex,reserved1) \ + FAST_GPFLAGSET(line, xf_tex,reserved1,XF_TEX_RESERVED1) + +#define SC_XF_TEX_SET_TEXGEN_TYPE(line, xf_tex,texgen_type) \ + FAST_GPFLAGSET(line, xf_tex,texgen_type,XF_TEX_TEXGEN_TYPE) + +#define SC_XF_TEX_SET_SOURCE_ROW(line, xf_tex,source_row) \ + FAST_GPFLAGSET(line, xf_tex,source_row,XF_TEX_SOURCE_ROW) + +#define SC_XF_TEX_SET_BUMP_MAP_SOURCE(line, xf_tex,bump_map_source) \ + FAST_GPFLAGSET(line, xf_tex,bump_map_source,XF_TEX_BUMP_MAP_SOURCE) + +#define SC_XF_TEX_SET_BUMP_MAP_LIGHT(line, xf_tex,bump_map_light) \ + FAST_GPFLAGSET(line, xf_tex,bump_map_light,XF_TEX_BUMP_MAP_LIGHT) + +#define SC_XF_PERF0_F_SET_PERF_A(line, xf_perf0_f,perf_a) \ + FAST_GPFLAGSET(line, xf_perf0_f,perf_a,XF_PERF0_F_PERF_A) + +#define SC_XF_PERF0_F_SET_PERF_B(line, xf_perf0_f,perf_b) \ + FAST_GPFLAGSET(line, xf_perf0_f,perf_b,XF_PERF0_F_PERF_B) + +#define SC_XF_PERF0_F_SET_PERF_C(line, xf_perf0_f,perf_c) \ + FAST_GPFLAGSET(line, xf_perf0_f,perf_c,XF_PERF0_F_PERF_C) + +#define SC_XF_PERF0_F_SET_PERF_D(line, xf_perf0_f,perf_d) \ + FAST_GPFLAGSET(line, xf_perf0_f,perf_d,XF_PERF0_F_PERF_D) + +#define SC_XF_PERF1_F_SET_PERF_TARGET(line, xf_perf1_f,perf_target) \ + FAST_GPFLAGSET(line, xf_perf1_f,perf_target,XF_PERF1_F_PERF_TARGET) + +#define SC_XF_ERROR_F_SET_CTEX_BUG_ENABLE(line, xf_error_f,ctex_bug_enable) \ + FAST_GPFLAGSET(line, xf_error_f,ctex_bug_enable,XF_ERROR_F_CTEX_BUG_ENABLE) + +#define SC_XF_ERROR_F_SET_TFAN4_BUG_ENABLE(line, xf_error_f,tfan4_bug_enable) \ + FAST_GPFLAGSET(line, xf_error_f,tfan4_bug_enable,XF_ERROR_F_TFAN4_BUG_ENABLE) + +#define SC_XF_ERROR_F_SET_TFAN16_BUG_ENABLE(line, xf_error_f,tfan16_bug_enable) \ + FAST_GPFLAGSET(line, xf_error_f,tfan16_bug_enable,XF_ERROR_F_TFAN16_BUG_ENABLE) + +#define SC_XF_ERROR_F_SET_DUALTRAN_REG_ENABLE(line, xf_error_f,dualtran_reg_enable) \ + FAST_GPFLAGSET(line, xf_error_f,dualtran_reg_enable,XF_ERROR_F_DUALTRAN_REG_ENABLE) + +#define SC_XF_ERROR_F_SET_BYPASS_BUG_ENABLE(line, xf_error_f,bypass_bug_enable) \ + FAST_GPFLAGSET(line, xf_error_f,bypass_bug_enable,XF_ERROR_F_BYPASS_BUG_ENABLE) + +#define SC_XF_ERROR_F_SET_FAST_MATRIX_ENABLE(line, xf_error_f,fast_matrix_enable) \ + FAST_GPFLAGSET(line, xf_error_f,fast_matrix_enable,XF_ERROR_F_FAST_MATRIX_ENABLE) + +#define SC_XF_DUALTEXTRAN_F_SET_DUALTEXTRAN_ENABLE(line, xf_dualtextran_f,dualtextran_enable) \ + FAST_GPFLAGSET(line, xf_dualtextran_f,dualtextran_enable,XF_DUALTEXTRAN_F_DUALTEXTRAN_ENABLE) + +#define SC_XF_DUALTEX_F_SET_DUALMATRIX_ADRS(line, xf_dualtex_f,dualmatrix_adrs) \ + FAST_GPFLAGSET(line, xf_dualtex_f,dualmatrix_adrs,XF_DUALTEX_F_DUALMATRIX_ADRS) + +#define SC_XF_DUALTEX_F_SET_RESERVED0(line, xf_dualtex_f,reserved0) \ + FAST_GPFLAGSET(line, xf_dualtex_f,reserved0,XF_DUALTEX_F_RESERVED0) + +#define SC_XF_DUALTEX_F_SET_NORMAL_ENABLE(line, xf_dualtex_f,normal_enable) \ + FAST_GPFLAGSET(line, xf_dualtex_f,normal_enable,XF_DUALTEX_F_NORMAL_ENABLE) + + +#endif // XF_MEM_H diff --git a/include/revolution/sc.h b/include/revolution/sc.h index 7a8da096d2..ef8bc2c636 100644 --- a/include/revolution/sc.h +++ b/include/revolution/sc.h @@ -77,34 +77,35 @@ typedef enum { SC_ITEM_ID_BT_SENSOR_BAR_POSITION, SC_ITEM_ID_DVD_CONFIG, SC_ITEM_ID_WWW_RESTRICTION, + SC_ITEM_ID_MOTION_PLUS_MOVIE, + SC_ITEM_ID_TEMPORARY_TITLE_ID, + SC_ITEM_ID_MAX_PLUS1 } SCItemID; typedef struct { - OSThreadQueue threadQueue; - NANDFileInfo nandFileInfo; - NANDCommandBlock nandCommandBlock; - - union { - u8 nandType; - NANDStatus nandStatus; - } u; - - u8 nandStep; - u8 nandNeedClose; - u8 reloadFileCount; - SCReloadConfFileCallback reloadCallback; - s32 reloadResult; - const char* reloadFileName[2]; - u8* reloadBufp[2]; - u32 reloadSizeExpected[2]; - u32 reloadedSize[2]; - SCFlushCallback flushCallback; - u32 flushResult; - u32 flushSize; -} SCControl; - + OSThreadQueue threadQueue; + NANDFileInfo nandFileInfo; + NANDCommandBlock nandCommandBlock; + union { + u8 nandType; + NANDStatus nandStatus; + } u; + + u8 nandStep; + u8 nandNeedClose; + u8 reloadFileCount; + SCReloadConfFileCallback reloadCallback; + s32 reloadResult; + const char* reloadFileName[2]; + u8* reloadBufp[2]; + u32 reloadSizeExpected[2]; + u32 reloadedSize[2]; + SCFlushCallback flushCallback; + u32 flushResult; + u32 flushSize; +} SCControl; #define SC_LANG_JAPANESE 0u #define SC_LANG_ENGLISH 1u @@ -117,26 +118,35 @@ typedef struct { #define SC_LANG_TRAD_CHINESE 8u #define SC_LANG_KOREAN 9u -void SCInit(void); -u32 SCCheckStatus(void); -s32 SCReloadConfFileAsync(u8* bufp, u32 bufSize, SCReloadConfFileCallback); -BOOL SCFindByteArrayItem(void* data, u32, SCItemID itemID); -BOOL SCFindIntegerItem(int* data, SCItemID itemID, u8 type); -BOOL SCFindU8Item(u8* data, SCItemID itemID); -BOOL SCFindS8Item(s8* data, SCItemID itemID); -BOOL SCFindU32Item(u32* data, SCItemID itemID); +// scapi u8 SCGetAspectRatio(void); s8 SCGetDisplayOffsetH(void); +u8 SCGetEuRgb60Mode(void); BOOL SCGetIdleMode(SCIdleModeInfo* data); u8 SCGetLanguage(void); u8 SCGetProgressiveMode(void); u8 SCGetScreenSaverMode(void); u8 SCGetSoundMode(void); u32 SCGetCounterBias(void); -BOOL SCGetProductAreaString(const char*, int); + +// scapi_prdinfo +BOOL SCGetProductAreaString(char* buf, u32 bufSize); s8 SCGetProductArea(void); s8 SCGetProductGameRegion(void); +// scsystem +void SCInit(void); +BOOL SCFindByteArrayItem(void* data, u32 size, SCItemID id); +BOOL SCReplaceByteArrayItem(const void* data, u32 size, SCItemID id); +BOOL SCFindIntegerItem(void* data, SCItemID id, SCType type); +BOOL SCReplaceIntegerItem(const void* data, SCItemID id, SCType type); +BOOL SCFindU8Item(u8* data, SCItemID id); +BOOL SCFindS8Item(s8* data, SCItemID id); +BOOL SCFindU32Item(u32* data, SCItemID id); +BOOL SCReplaceU8Item(u8 data, SCItemID id); +u32 SCCheckStatus(void); +s32 SCReloadConfFileAsync(u8* bufp, u32 bufSize, SCReloadConfFileCallback callback); + #ifdef __cplusplus } #endif diff --git a/include/revolution/vi/vifuncs.h b/include/revolution/vi/vifuncs.h index f2ed7ef6ca..b3cea5622d 100644 --- a/include/revolution/vi/vifuncs.h +++ b/include/revolution/vi/vifuncs.h @@ -30,8 +30,10 @@ u32 VIGetScanMode(void); u32 VIGetDTVStatus(void); void VISetTrapFilter(u8); -void VIEnableDimming(BOOL); -void VISetGamma(int); +BOOL VIEnableDimming(BOOL); +void VISetGamma(VIGamma); +void VISetRGBModeImm(void); +BOOL VIEnableDVDStopMotor(BOOL enable); #ifdef __cplusplus } diff --git a/include/revolution/vi/vitypes.h b/include/revolution/vi/vitypes.h index d042cad2c3..728b5404cc 100644 --- a/include/revolution/vi/vitypes.h +++ b/include/revolution/vi/vitypes.h @@ -13,8 +13,18 @@ #define VI_PAL 1 #define VI_MPAL 2 #define VI_DEBUG 3 +#define VI_3D 3 #define VI_DEBUG_PAL 4 #define VI_EURGB60 5 +#define VI_GCA 6 +#define VI_EXTRA 7 +#define VI_HD720 8 + +typedef u8 VIBool; +#define VI_FALSE ((VIBool)0) +#define VI_TRUE ((VIBool)1) +#define VI_DISABLE ((VIBool)0) +#define VI_ENABLE ((VIBool)1) typedef enum { VI_TVMODE_NTSC_INT = VI_TVMODE(VI_NTSC, VI_INTERLACE), @@ -27,9 +37,18 @@ typedef enum { VI_TVMODE_EURGB60_PROG = VI_TVMODE(VI_EURGB60, VI_PROGRESSIVE), VI_TVMODE_MPAL_INT = VI_TVMODE(VI_MPAL, VI_INTERLACE), VI_TVMODE_MPAL_DS = VI_TVMODE(VI_MPAL, VI_NON_INTERLACE), + VI_TVMODE_MPAL_PROG = VI_TVMODE(VI_MPAL, VI_PROGRESSIVE), VI_TVMODE_DEBUG_INT = VI_TVMODE(VI_DEBUG, VI_INTERLACE), VI_TVMODE_DEBUG_PAL_INT = VI_TVMODE(VI_DEBUG_PAL, VI_INTERLACE), - VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE) + VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE), + VI_TVMODE_NTSC_3D = VI_TVMODE(VI_NTSC, VI_3D), + VI_TVMODE_GCA_INT = VI_TVMODE(VI_GCA, VI_INTERLACE), + VI_TVMODE_GCA_PROG = VI_TVMODE(VI_GCA, VI_PROGRESSIVE), + VI_TVMODE_PAL_PROG = 6, + VI_TVMODE_EXTRA_INT = VI_TVMODE(VI_EXTRA, VI_INTERLACE), + VI_TVMODE_EXTRA_DS = VI_TVMODE(VI_EXTRA, VI_NON_INTERLACE), + VI_TVMODE_EXTRA_PROG = VI_TVMODE(VI_EXTRA, VI_PROGRESSIVE), + VI_TVMODE_HD720_PROG = VI_TVMODE(VI_HD720, VI_PROGRESSIVE) } VITVMode; typedef enum { @@ -37,6 +56,83 @@ typedef enum { VI_XFBMODE_DF } VIXFBMode; +typedef enum _VITimeToDIM { + VI_DM_DEFAULT = 0, + VI_DM_10M, + VI_DM_15M +} VITimeToDIM; + +typedef enum _VIVideo { + VI_VMODE_NTSC = 0, + VI_VMODE_MPAL = 1, + VI_VMODE_PAL = 2, + VI_VMODE_RGB = 3 +} VIVideo; + +typedef enum _VIACPType { + VI_ACP_OFF = 1, + VI_ACP_TYPE1 = 2, + VI_ACP_TYPE2 = 3, + VI_ACP_TYPE3 = 4 +} VIACPType; + +typedef enum _VIGamma { + VI_GM_0_1 = 1, + VI_GM_0_2, + VI_GM_0_3, + VI_GM_0_4, + VI_GM_0_5, + VI_GM_0_6, + VI_GM_0_7, + VI_GM_0_8, + VI_GM_0_9, + VI_GM_1_0, + VI_GM_1_1, + VI_GM_1_2, + VI_GM_1_3, + VI_GM_1_4, + VI_GM_1_5, + VI_GM_1_6, + VI_GM_1_7, + VI_GM_1_8, + VI_GM_1_9, + VI_GM_2_0, + VI_GM_2_1, + VI_GM_2_2, + VI_GM_2_3, + VI_GM_2_4, + VI_GM_2_5, + VI_GM_2_6, + VI_GM_2_7, + VI_GM_2_8, + VI_GM_2_9, + VI_GM_3_0 +} VIGamma; + +typedef enum _VITiming { + VI_TMG_GAME = 0, + VI_TMG_DVD = 1 +} VITiming; + +typedef enum _VIOverDrive { + VI_ODV_L1 = 0, + VI_ODV_L2 = 1, + VI_ODV_L3 = 2, + VI_ODV_L4 = 3, + VI_ODV_L5 = 4, + VI_ODV_L6 = 5 +} VIOverDrive; + typedef void (*VIRetraceCallback)(u32 retraceCount); +typedef struct VIGammaObj { + u16 a[6]; + u8 yin[7]; + u16 yout[7]; +} VIGammaObj; + +typedef struct VIMacroVisionObj { + u8 m[26]; +} VIMacroVisionObj; + #endif diff --git a/include/revolution/wenc.h b/include/revolution/wenc.h new file mode 100644 index 0000000000..39b9180977 --- /dev/null +++ b/include/revolution/wenc.h @@ -0,0 +1,30 @@ +#ifndef _REVOLUTION_WENC_H_ +#define _REVOLUTION_WENC_H_ + +#include <revolution/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + WENC_FLAG_USER_INFO = (1 << 0), +} WENCFlag; + +typedef struct WENCInfo { + /* 0x00 */ s32 xn; + /* 0x04 */ s32 dl; + /* 0x08 */ s32 qn; + /* 0x0C */ s32 dn; + /* 0x10 */ s32 dlh; + /* 0x14 */ s32 dlq; + /* 0x18 */ u8 padding[8]; +} WENCInfo; + +s32 WENCGetEncodeData(WENCInfo* info, u32 flag, const s16* pcmData, s32 samples, u8* adpcmData); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/revolution/wpad.h b/include/revolution/wpad.h index 59b27ac5f7..2e7456e3e6 100644 --- a/include/revolution/wpad.h +++ b/include/revolution/wpad.h @@ -21,23 +21,209 @@ extern "C" { #define WPAD_BUTTON_C 0x4000 #define WPAD_BUTTON_HOME 0x8000 -typedef s32 WPADResult; -typedef s32 WPADChannel; -typedef u32 WPADDeviceType; +#define WPAD_MAX_DPD_OBJECTS 4 -typedef void WPADExtensionCallback(WPADChannel chan, s32 devType); +#define WPAD_CHAN0 0 +#define WPAD_CHAN1 1 +#define WPAD_CHAN2 2 +#define WPAD_CHAN3 3 +#define WPAD_CHAN_INVALID -1 -// for ease of use in for loops -enum WPADChannel_et { - WPAD_CHAN0, - WPAD_CHAN1, - WPAD_CHAN2, - WPAD_CHAN3, +#define WPAD_MAX_CONTROLLERS 4 - WPAD_MAX_CONTROLLERS, - WPAD_CHAN_INVALID = -1, +enum WPADResult_et { + WPAD_ERR_OK = 0, + + WPAD_ERR_NO_CONTROLLER = -1, + WPAD_ERR_BUSY = -2, + WPAD_ERR_TRANSFER = -3, + WPAD_ERR_INVALID = -4, + WPAD_ERR_5 = -5, + WPAD_ERR_6 = -6, + WPAD_ERR_CORRUPTED = -7, }; +#define WPAD_ESUCCESS WPAD_ERR_OK +#define WPAD_ENODEV WPAD_ERR_NO_CONTROLLER +#define WPAD_EBUSY WPAD_ERR_BUSY +#define WPAD_ETRANSFER WPAD_ERR_TRANSFER // I don't know what the POSIX equivalent is +#define WPAD_EINVAL WPAD_ERR_INVALID +#define WPAD_E5 WPAD_ERR_5 +#define WPAD_E6 WPAD_ERR_6 +#define WPAD_EBADE WPAD_ERR_CORRUPTED + +// apparently enum vs constant is a thing. cool +#define WPAD_CESUCCESS (WPAD_ESUCCESS + 0) +#define WPAD_CENODEV (WPAD_ENODEV + 0) +#define WPAD_CEBUSY (WPAD_EBUSY + 0) +#define WPAD_CETRANSFER (WPAD_ETRANSFER + 0) +#define WPAD_CEINVAL (WPAD_EINVAL + 0) +#define WPAD_CE5 (WPAD_E5 + 0) +#define WPAD_CE6 (WPAD_E6 + 0) +#define WPAD_CEBADE (WPAD_EBADE + 0) + +typedef void WPADInitFunc(void); +typedef void WPADCallback(s32 chan, s32 result); +typedef void WPADExtensionCallback(s32 chan, s32 devType); +typedef void WPADSamplingCallback(s32 chan); +typedef void WPADConnectCallback(s32 chan, s32 result); + +typedef struct DPDObject { + /* 0x00 */ s16 x; + /* 0x02 */ s16 y; + /* 0x04 */ u16 size; + /* 0x06 */ u8 traceId; +} DPDObject; + +typedef struct WPADStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; +} WPADStatus; + +typedef struct DPDObjEx { + /* 0x00 */ s16 range_x1; + /* 0x02 */ s16 range_y1; + /* 0x04 */ s16 range_x2; + /* 0x06 */ s16 range_y2; + /* 0x08 */ u16 pixel; + /* 0x0A */ s8 radius; +} DPDObjEx; + +typedef struct WPADStatusEx { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ DPDObjEx exp[WPAD_MAX_DPD_OBJECTS]; +} WPADStatusEx; + +typedef struct WPADFSStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ s16 fsAccX; + /* 0x2c */ s16 fsAccY; + /* 0x2e */ s16 fsAccZ; + /* 0x30 */ s8 fsStickX; + /* 0x31 */ s8 fsStickY; +} WPADFSStatus; + +typedef struct WPADCLStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ u16 clButton; + /* 0x2c */ s16 clLStickX; + /* 0x2e */ s16 clLStickY; + /* 0x30 */ s16 clRStickX; + /* 0x32 */ s16 clRStickY; + /* 0x34 */ u8 clTriggerL; + /* 0x35 */ u8 clTriggerR; +} WPADCLStatus; + +typedef struct WPADBKStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ u8 bulk[21]; + /* 0x3f */ u8 padding[1]; +} WPADBKStatus; + +typedef struct WPADTRStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ u16 trButton; + /* 0x2c */ u8 brake; + /* 0x2d */ u8 mascon; +} WPADTRStatus; + +typedef struct WPADVSStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ u16 at_0x2a[5]; + /* 0x34 */ u8 at_0x34; + /* 0x36 */ u16 at_0x36[5]; + /* 0x40 */ u8 at_0x40; + /* 0x42 */ u16 at_0x42; + /* 0x44 */ u8 at_0x44; +} WPADVSStatus; + +typedef struct WPADMPStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + union { + struct { + /* 0x00 */ s16 fsAccX; + /* 0x02 */ s16 fsAccY; + /* 0x04 */ s16 fsAccZ; + /* 0x06 */ s8 fsStickX; + /* 0x07 */ s8 fsStickY; + } fs; + struct { + /* 0x00 */ u16 clButton; + /* 0x02 */ s16 clLStickX; + /* 0x04 */ s16 clLStickY; + /* 0x06 */ s16 clRStickX; + /* 0x08 */ s16 clRStickY; + /* 0x0a */ u8 clTriggerL; + /* 0x0b */ u8 clTriggerR; + } cl; + } ext; + /* 0x36 */ u8 stat; + /* 0x37 */ u8 reserved; + /* 0x38 */ s16 pitch; + /* 0x3a */ s16 yaw; + /* 0x3c */ s16 roll; +} WPADMPStatus; + +typedef struct WPADBLStatus { + /* 0x00 */ u16 button; + /* 0x02 */ s16 accX; + /* 0x04 */ s16 accY; + /* 0x06 */ s16 accZ; + /* 0x08 */ DPDObject obj[WPAD_MAX_DPD_OBJECTS]; + /* 0x28 */ u8 dev; + /* 0x29 */ s8 err; + /* 0x2a */ u16 press[4]; + /* 0x32 */ s8 temp; + /* 0x33 */ u8 battery; +} WPADBLStatus; + typedef struct WPADInfo { /* 0x00 */ BOOL dpd; /* 0x04 */ BOOL speaker; @@ -48,11 +234,44 @@ typedef struct WPADInfo { /* 0x15 */ u8 led; /* 0x16 */ u8 protocol; /* 0x17 */ u8 firmware; -} WPADInfo; // size 0x18 +} WPADInfo; + +#define WPAD_FMT_CORE_BTN 0 +#define WPAD_FMT_CORE_BTN_ACC 1 +#define WPAD_FMT_CORE_BTN_ACC_DPD 2 +#define WPAD_FMT_FS_BTN 3 +#define WPAD_FMT_FS_BTN_ACC 4 +#define WPAD_FMT_FS_BTN_ACC_DPD 5 +#define WPAD_FMT_CLASSIC_BTN 6 +#define WPAD_FMT_CLASSIC_BTN_ACC 7 +#define WPAD_FMT_CLASSIC_BTN_ACC_DPD 8 +#define WPAD_FMT_BTN_ACC_DPD_EXTENDED 9 +// extensions +#define WPAD_FMT_TRAIN 10 +#define WPAD_FMT_GUITAR 11 +#define WPAD_FMT_BALANCE_CHECKER 12 +#define WPAD_FMT_VSM 13 +#define WPAD_FMT_DRUM 15 +#define WPAD_FMT_MOTION_PLUS 16 +#define WPAD_FMT_TAIKO 17 +#define WPAD_FMT_TURNTABLE 18 +#define WPAD_FMT_BULK 19 + +#define WPAD_SPEAKER_DISABLE 0 +#define WPAD_SPEAKER_ENABLE 1 // might be ON? see HBMRemoteSpk.cpp +#define WPAD_SPEAKER_MUTE 2 +#define WPAD_SPEAKER_UNMUTE 3 +#define WPAD_SPEAKER_PLAY 4 +#define WPAD_SPEAKER_CMD_05 5 // does the same thing as ENABLE? unless i'm missing something. not used so i don't know the context -WPADResult WPADProbe(WPADChannel chan, WPADDeviceType* devType); +s32 WPADProbe(s32 chan, u32* devType); +u8 WPADGetRadioSensitivity(s32 chan); +void WPADRead(s32 chan, WPADStatus* status); +BOOL WPADIsSpeakerEnabled(s32 chan); +s32 WPADControlSpeaker(s32 chan, u32 command, WPADCallback* cb); +s32 WPADSendStreamData(s32 chan, void* p_buf, u16 len); -WPADExtensionCallback* WPADSetExtensionCallback(WPADChannel chan, WPADExtensionCallback* cb); +WPADExtensionCallback* WPADSetExtensionCallback(s32 chan, WPADExtensionCallback* cb); #ifdef __cplusplus } diff --git a/include/revolution/wpad/bte.h b/include/revolution/wpad/bte.h new file mode 100644 index 0000000000..1751d8998b --- /dev/null +++ b/include/revolution/wpad/bte.h @@ -0,0 +1,1044 @@ +#ifndef CONTEXT_BTE_H +#define CONTEXT_BTE_H + +#include <stdint.h> + +// taken from https://github.com/doldecomp/sdk_2009-12-11/blob/main/include/context_bte.h + +/* Contains the context of the BTE library that the WPAD library needs to + * compile. + * + * This is not the full context; the other half of the context is in + * <context_rvl.h>. + * + * Most of this code is copyright (C) 2003-2012 Broadcom Corporation under the + * Apache 2.0 License <http://www.apache.org/licenses/LICENSE-2.0>. The original + * source can be found at + * <https://android.googlesource.com/platform/external/bluetooth/bluedroid>; + * specifically, I used the earliest commit available (late 2012, commit hash + * 5738f83aeb59361a0a2eda2460113f6dc9194271). + */ + +/* License redistribution conditions + * + * a. You may obtain a copy of the License at + * <http://www.apache.org/licenses/LICENSE-2.0>. + * b. Some of the code is modified. Comments will be marked with my name + * (muff1n) to show what I modified and where. + * c. See the following comment block, which is copied verbatim from bluedroid + * source. + * d. No NOTICE file is present in the commit that I used. + */ + +/****************************************************************************** + * + * Copyright (C) 2003-2012 Broadcom Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +// from bluedroid source + +typedef uint8_t UINT8; +typedef uint16_t UINT16; +typedef uint32_t UINT32; + +typedef int8_t INT8; + +typedef unsigned char BOOLEAN; + +/* muff1n: It seems like BTE_TRACE_LEVEL_VERBOSE did not exist at the time. Or + * maybe it was a different logging level. At the very least, one logging level + * is missing. + */ +#define MAX_TRACE_LEVEL 5 + +#define BD_ADDR_LEN 6 /* Device address length */ +typedef UINT8 BD_ADDR[BD_ADDR_LEN]; /* Device address */ +typedef UINT8 *BD_ADDR_PTR; /* Pointer to Device Address */ + +#define LINK_KEY_LEN 16 +typedef UINT8 LINK_KEY[LINK_KEY_LEN]; /* Link Key */ + +#define DEV_CLASS_LEN 3 +typedef UINT8 DEV_CLASS[DEV_CLASS_LEN]; /* Device class */ +typedef UINT8 *DEV_CLASS_PTR; /* Pointer to Device class */ + +/* muff1n: TODO: bta_dm_pin_cback looks mostly the same except that BD_NAME_LEN + * is 33 (or it was 32 and BD_NAME_LEN was not decreased by 1 in BCM_STRNCPY_S + * calls)? + * confirm this + * + * UPDATE: there is a case where it is 248 + */ +#define BD_NAME_LEN 248 +typedef UINT8 BD_NAME[BD_NAME_LEN]; /* Device name */ +typedef UINT8 *BD_NAME_PTR; /* Pointer to Device name */ + +#define BD_FEATURES_LEN 8 +typedef UINT8 BD_FEATURES[BD_FEATURES_LEN]; /* LMP features supported by device */ + +#define BT_DEVICE_TYPE_BREDR 0x01 +#define BT_DEVICE_TYPE_BLE 0x02 +#define BT_DEVICE_TYPE_DUMO 0x03 +typedef UINT8 tBT_DEVICE_TYPE; + +/* Maximum UUID size - 16 bytes, and structure to hold any type of UUID. */ +#define MAX_UUID_SIZE 16 +typedef struct +{ +#define LEN_UUID_16 2 +#define LEN_UUID_32 4 +#define LEN_UUID_128 16 + + UINT16 len; + + union + { + UINT16 uuid16; + UINT32 uuid32; + UINT8 uuid128[MAX_UUID_SIZE]; + } uu; + +} tBT_UUID; + +/* Status Return Value */ +#define BTA_SUCCESS 0 /* Successful operation. */ +#define BTA_FAILURE 1 /* Generic failure. */ +#define BTA_PENDING 2 /* API cannot be completed right now */ +#define BTA_BUSY 3 +#define BTA_NO_RESOURCES 4 +#define BTA_WRONG_MODE 5 + +typedef UINT8 tBTA_STATUS; + +/* + * Service ID + * + * NOTES: When you add a new Service ID for BTA AND require to change the value of BTA_MAX_SERVICE_ID, + * make sure that the correct security ID of the new service from Security service definitions (btm_api.h) + * should be added to bta_service_id_to_btm_srv_id_lkup_tbl table in bta_dm_act.c. + */ + +#define BTA_RES_SERVICE_ID 0 /* Reserved */ +#define BTA_SPP_SERVICE_ID 1 /* Serial port profile. */ +#define BTA_DUN_SERVICE_ID 2 /* Dial-up networking profile. */ +#define BTA_A2DP_SOURCE_SERVICE_ID 3 /* A2DP Source profile. */ +#define BTA_LAP_SERVICE_ID 4 /* LAN access profile. */ +#define BTA_HSP_SERVICE_ID 5 /* Headset profile. */ +#define BTA_HFP_SERVICE_ID 6 /* Hands-free profile. */ +#define BTA_OPP_SERVICE_ID 7 /* Object push */ +#define BTA_FTP_SERVICE_ID 8 /* File transfer */ +#define BTA_CTP_SERVICE_ID 9 /* Cordless Terminal */ +#define BTA_ICP_SERVICE_ID 10 /* Intercom Terminal */ +#define BTA_SYNC_SERVICE_ID 11 /* Synchronization */ +#define BTA_BPP_SERVICE_ID 12 /* Basic printing profile */ +#define BTA_BIP_SERVICE_ID 13 /* Basic Imaging profile */ +#define BTA_PANU_SERVICE_ID 14 /* PAN User */ +#define BTA_NAP_SERVICE_ID 15 /* PAN Network access point */ +#define BTA_GN_SERVICE_ID 16 /* PAN Group Ad-hoc networks */ +#define BTA_SAP_SERVICE_ID 17 /* SIM Access profile */ +#define BTA_A2DP_SERVICE_ID 18 /* A2DP Sink */ +#define BTA_AVRCP_SERVICE_ID 19 /* A/V remote control */ +#define BTA_HID_SERVICE_ID 20 /* HID */ +#define BTA_VDP_SERVICE_ID 21 /* Video distribution */ +#define BTA_PBAP_SERVICE_ID 22 /* PhoneBook Access Server*/ +#define BTA_HSP_HS_SERVICE_ID 23 /* HFP HS role */ +#define BTA_HFP_HS_SERVICE_ID 24 /* HSP HS role */ +#define BTA_MAP_SERVICE_ID 25 /* Message Access Profile */ +#define BTA_MN_SERVICE_ID 26 /* Message Notification Service */ +#define BTA_HDP_SERVICE_ID 27 /* Health Device Profile */ +#define BTA_PCE_SERVICE_ID 28 /* PhoneBook Access Client*/ + +#define BTA_USER_SERVICE_ID 29 /* User requested UUID */ +#define BTA_MAX_SERVICE_ID 30 + +/* service IDs (BTM_SEC_SERVICE_FIRST_EMPTY + 1) to (BTM_SEC_MAX_SERVICES - 1) + * are used by BTA JV */ +#define BTA_FIRST_JV_SERVICE_ID (BTM_SEC_SERVICE_FIRST_EMPTY + 1) +#define BTA_LAST_JV_SERVICE_ID (BTM_SEC_MAX_SERVICES - 1) + +typedef UINT8 tBTA_SERVICE_ID; + +/* Service ID Mask */ +#define BTA_RES_SERVICE_MASK 0x00000001 /* Reserved */ +#define BTA_SPP_SERVICE_MASK 0x00000002 /* Serial port profile. */ +#define BTA_DUN_SERVICE_MASK 0x00000004 /* Dial-up networking profile. */ +#define BTA_FAX_SERVICE_MASK 0x00000008 /* Fax profile. */ +#define BTA_LAP_SERVICE_MASK 0x00000010 /* LAN access profile. */ +#define BTA_HSP_SERVICE_MASK 0x00000020 /* HSP AG role. */ +#define BTA_HFP_SERVICE_MASK 0x00000040 /* HFP AG role */ +#define BTA_OPP_SERVICE_MASK 0x00000080 /* Object push */ +#define BTA_FTP_SERVICE_MASK 0x00000100 /* File transfer */ +#define BTA_CTP_SERVICE_MASK 0x00000200 /* Cordless Terminal */ +#define BTA_ICP_SERVICE_MASK 0x00000400 /* Intercom Terminal */ +#define BTA_SYNC_SERVICE_MASK 0x00000800 /* Synchronization */ +#define BTA_BPP_SERVICE_MASK 0x00001000 /* Print server */ +#define BTA_BIP_SERVICE_MASK 0x00002000 /* Basic Imaging */ +#define BTA_PANU_SERVICE_MASK 0x00004000 /* PAN User */ +#define BTA_NAP_SERVICE_MASK 0x00008000 /* PAN Network access point */ +#define BTA_GN_SERVICE_MASK 0x00010000 /* PAN Group Ad-hoc networks */ +#define BTA_SAP_SERVICE_MASK 0x00020000 /* PAN Group Ad-hoc networks */ +#define BTA_A2DP_SERVICE_MASK 0x00040000 /* Advanced audio distribution */ +#define BTA_AVRCP_SERVICE_MASK 0x00080000 /* A/V remote control */ +#define BTA_HID_SERVICE_MASK 0x00100000 /* HID */ +#define BTA_VDP_SERVICE_MASK 0x00200000 /* Video distribution */ +#define BTA_PBAP_SERVICE_MASK 0x00400000 /* Phone Book Server */ +#define BTA_HSP_HS_SERVICE_MASK 0x00800000 /* HFP HS role */ +#define BTA_HFP_HS_SERVICE_MASK 0x01000000 /* HSP HS role */ +#define BTA_MAS_SERVICE_MASK 0x02000000 /* Message Access Profile */ +#define BTA_MN_SERVICE_MASK 0x04000000 /* Message Notification Profile */ +#define BTA_HL_SERVICE_MASK 0x08000000 /* Health Device Profile */ +#define BTA_PCE_SERVICE_MASK 0x10000000 /* Phone Book Client */ + +// btla-specific ++ +#define BTA_USER_SERVICE_MASK 0x20000000 /* Message Notification Profile */ +// btla-specific -- + +#define BTA_ALL_SERVICE_MASK 0x1FFFFFFF /* All services supported by BTA. */ + +typedef UINT32 tBTA_SERVICE_MASK; + +/* SW sub-systems */ +#define BTA_ID_SYS 0 /* system manager */ +/* BLUETOOTH PART - from 0 to BTA_ID_BLUETOOTH_MAX */ +#define BTA_ID_DM 1 /* device manager */ +#define BTA_ID_DM_SEARCH 2 /* device manager search */ +#define BTA_ID_DM_SEC 3 /* device manager security */ +#define BTA_ID_DG 4 /* data gateway */ +#define BTA_ID_AG 5 /* audio gateway */ +#define BTA_ID_OPC 6 /* object push client */ +#define BTA_ID_OPS 7 /* object push server */ +#define BTA_ID_FTS 8 /* file transfer server */ +#define BTA_ID_CT 9 /* cordless telephony terminal */ +#define BTA_ID_FTC 10 /* file transfer client */ +#define BTA_ID_SS 11 /* synchronization server */ +#define BTA_ID_PR 12 /* Printer client */ +#define BTA_ID_BIC 13 /* Basic Imaging Client */ +#define BTA_ID_PAN 14 /* Personal Area Networking */ +#define BTA_ID_BIS 15 /* Basic Imaging Server */ +#define BTA_ID_ACC 16 /* Advanced Camera Client */ +#define BTA_ID_SC 17 /* SIM Card Access server */ +#define BTA_ID_AV 18 /* Advanced audio/video */ +#define BTA_ID_AVK 19 /* Audio/video sink */ +#define BTA_ID_HD 20 /* HID Device */ +#define BTA_ID_CG 21 /* Cordless Gateway */ +#define BTA_ID_BP 22 /* Basic Printing Client */ +#define BTA_ID_HH 23 /* Human Interface Device Host */ +#define BTA_ID_PBS 24 /* Phone Book Access Server */ +#define BTA_ID_PBC 25 /* Phone Book Access Client */ +#define BTA_ID_JV 26 /* Java */ +#define BTA_ID_HS 27 /* Headset */ +#define BTA_ID_MSE 28 /* Message Server Equipment */ +#define BTA_ID_MCE 29 /* Message Client Equipment */ +#define BTA_ID_HL 30 /* Health Device Profile*/ +#define BTA_ID_GATTC 31 /* GATT Client */ +#define BTA_ID_GATTS 32 /* GATT Client */ +#define BTA_ID_BLUETOOTH_MAX 33 /* last BT profile */ + +/* FM */ +#define BTA_ID_FM 34 /* FM */ +#define BTA_ID_FMTX 35 /* FM TX */ + +/* SENSOR */ +#define BTA_ID_SSR 36 /* Sensor */ + +/* GPS */ +#define BTA_ID_GPS 37 /* GPS */ + +/* GENERIC */ +#define BTA_ID_PRM 38 +#define BTA_ID_SYSTEM 39 /* platform-specific */ +#define BTA_ID_SWRAP 40 /* Insight script wrapper */ +#define BTA_ID_MIP 41 /* Multicase Individual Polling */ +#define BTA_ID_RT 42 /* Audio Routing module: This module is always on. */ + +/* JV */ +#define BTA_ID_JV1 43 /* JV1 */ +#define BTA_ID_JV2 44 /* JV2 */ + +#define BTA_ID_MAX (43 + BTA_DM_NUM_JV_ID) + +typedef UINT8 tBTA_SYS_ID; + +enum +{ + BTM_SUCCESS = 0, /* 0 Command succeeded */ + BTM_CMD_STARTED, /* 1 Command started OK. */ + BTM_BUSY, /* 2 Device busy with another command */ + BTM_NO_RESOURCES, /* 3 No resources to issue command */ + BTM_MODE_UNSUPPORTED, /* 4 Request for 1 or more unsupported modes */ + BTM_ILLEGAL_VALUE, /* 5 Illegal parameter value */ + BTM_WRONG_MODE, /* 6 Device in wrong mode for request */ + BTM_UNKNOWN_ADDR, /* 7 Unknown remote BD address */ + BTM_DEVICE_TIMEOUT, /* 8 Device timeout */ + BTM_BAD_VALUE_RET, /* 9 A bad value was received from HCI */ + BTM_ERR_PROCESSING, /* 10 Generic error */ + BTM_NOT_AUTHORIZED, /* 11 Authorization failed */ + BTM_DEV_RESET, /* 12 Device has been reset */ + BTM_CMD_STORED, /* 13 request is stored in control block */ + BTM_ILLEGAL_ACTION, /* 14 state machine gets illegal command */ + BTM_DELAY_CHECK, /* 15 delay the check on encryption */ + BTM_SCO_BAD_LENGTH, /* 16 Bad SCO over HCI data length */ + BTM_SUCCESS_NO_SECURITY, /* 17 security passed, no security set */ + BTM_FAILED_ON_SECURITY , /* 18 security failed */ + BTM_REPEATED_ATTEMPTS /* 19 repeated attempts for LE security requests */ +}; +typedef UINT8 tBTM_STATUS; + +typedef struct +{ + UINT16 event; + UINT16 len; + UINT16 offset; + UINT16 layer_specific; +} BT_HDR; + +#define BT_HDR_SIZE (sizeof (BT_HDR)) + +/* Security Service Levels [bit mask] (BTM_SetSecurityLevel) +** Encryption should not be used without authentication +*/ +#define BTM_SEC_NONE 0x0000 /* Nothing required */ +#define BTM_SEC_IN_AUTHORIZE 0x0001 /* Inbound call requires authorization */ +#define BTM_SEC_IN_AUTHENTICATE 0x0002 /* Inbound call requires authentication */ +#define BTM_SEC_IN_ENCRYPT 0x0004 /* Inbound call requires encryption */ +#define BTM_SEC_OUT_AUTHORIZE 0x0008 /* Outbound call requires authorization */ +#define BTM_SEC_OUT_AUTHENTICATE 0x0010 /* Outbound call requires authentication */ +#define BTM_SEC_OUT_ENCRYPT 0x0020 /* Outbound call requires encryption */ +#define BTM_SEC_BOND 0x0040 /* Bonding */ +#define BTM_SEC_BOND_CONN 0x0080 /* bond_created_connection */ +#define BTM_SEC_FORCE_MASTER 0x0100 /* Need to switch connection to be master */ +#define BTM_SEC_ATTEMPT_MASTER 0x0200 /* Try to switch connection to be master */ +#define BTM_SEC_FORCE_SLAVE 0x0400 /* Need to switch connection to be master */ +#define BTM_SEC_ATTEMPT_SLAVE 0x0800 /* Try to switch connection to be slave */ +#define BTM_SEC_IN_MITM 0x1000 /* inbound Do man in the middle protection */ +#define BTM_SEC_OUT_MITM 0x2000 /* outbound Do man in the middle protection */ + +/* Security Setting Mask */ +#define BTA_SEC_NONE BTM_SEC_NONE /* No security. */ +#define BTA_SEC_AUTHORIZE (BTM_SEC_IN_AUTHORIZE ) /* Authorization required (only needed for out going connection )*/ +#define BTA_SEC_AUTHENTICATE (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_OUT_AUTHENTICATE) /* Authentication required. */ +#define BTA_SEC_ENCRYPT (BTM_SEC_IN_ENCRYPT | BTM_SEC_OUT_ENCRYPT) /* Encryption required. */ + +typedef UINT8 tBTA_SEC; + +/* Pairable Modes */ +#define BTA_DM_PAIRABLE 1 +#define BTA_DM_NON_PAIRABLE 0 + +/* Connectable Paired Only Mode */ +#define BTA_DM_CONN_ALL 0 +#define BTA_DM_CONN_PAIRED 1 + +/* Inquiry modes + * Note: These modes are associated with the inquiry active values (BTM_*ACTIVE) */ +#define BTM_GENERAL_INQUIRY 0 +#define BTM_LIMITED_INQUIRY 1 +#define BTM_BR_INQUIRY_MASK 0x0f +/* high byte of inquiry mode for BLE inquiry mode */ +#define BTM_BLE_INQUIRY_NONE 0x00 +#define BTM_BLE_GENERAL_INQUIRY 0x10 +#define BTM_BLE_LIMITED_INQUIRY 0x20 +#define BTM_BLE_INQUIRY_MASK (BTM_BLE_GENERAL_INQUIRY|BTM_BLE_LIMITED_INQUIRY) + +#define BTA_BLE_INQUIRY_NONE BTM_BLE_INQUIRY_NONE +#define BTA_BLE_GENERAL_INQUIRY BTM_BLE_GENERAL_INQUIRY /* Perform LE general inquiry. */ +#define BTA_BLE_LIMITED_INQUIRY BTM_BLE_LIMITED_INQUIRY /* Perform LE limited inquiry. */ +typedef UINT8 tBTA_DM_INQ_MODE; + +/* Inquiry Filter Type */ +#define BTA_DM_INQ_CLR BTM_CLR_INQUIRY_FILTER /* Clear inquiry filter. */ +#define BTA_DM_INQ_DEV_CLASS BTM_FILTER_COND_DEVICE_CLASS /* Filter on device class. */ +#define BTA_DM_INQ_BD_ADDR BTM_FILTER_COND_BD_ADDR /* Filter on a specific BD address. */ + +typedef UINT8 tBTA_DM_INQ_FILT; + +/* Inquiry filter device class condition */ +typedef struct +{ + DEV_CLASS dev_class; /* device class of interest */ + DEV_CLASS dev_class_mask; /* mask to determine the bits of device class of interest */ +} tBTA_DM_COD_COND; + +/* Inquiry Filter Condition */ +typedef union +{ + BD_ADDR bd_addr; /* BD address of device to filter. */ + tBTA_DM_COD_COND dev_class_cond; /* Device class filter condition */ +} tBTA_DM_INQ_COND; + +/* Inquiry Parameters */ +typedef struct +{ + tBTA_DM_INQ_MODE mode; /* Inquiry mode, limited or general. */ + UINT8 duration; /* Inquiry duration in 1.28 sec units. */ + UINT8 max_resps; /* Maximum inquiry responses. Set to zero for unlimited responses. */ + BOOLEAN report_dup; /* report duplicated inquiry response with higher RSSI value */ + tBTA_DM_INQ_FILT filter_type; /* Filter condition type. */ + tBTA_DM_INQ_COND filter_cond; /* Filter condition data. */ +} tBTA_DM_INQ; + +/* Security Callback Events */ +#define BTA_DM_ENABLE_EVT 0 /* Enable Event */ +#define BTA_DM_DISABLE_EVT 1 /* Disable Event */ +#define BTA_DM_PIN_REQ_EVT 2 /* PIN request. */ +#define BTA_DM_AUTH_CMPL_EVT 3 /* Authentication complete indication. */ +#define BTA_DM_AUTHORIZE_EVT 4 /* Authorization request. */ +#define BTA_DM_LINK_UP_EVT 5 /* Connection UP event */ +#define BTA_DM_LINK_DOWN_EVT 6 /* Connection DOWN event */ +#define BTA_DM_SIG_STRENGTH_EVT 7 /* Signal strength for bluetooth connection */ +#define BTA_DM_BUSY_LEVEL_EVT 8 /* System busy level */ +#define BTA_DM_BOND_CANCEL_CMPL_EVT 9 /* Bond cancel complete indication */ +#define BTA_DM_SP_CFM_REQ_EVT 10 /* Simple Pairing User Confirmation request. */ +#define BTA_DM_SP_KEY_NOTIF_EVT 11 /* Simple Pairing Passkey Notification */ +#define BTA_DM_SP_RMT_OOB_EVT 12 /* Simple Pairing Remote OOB Data request. */ +#define BTA_DM_SP_KEYPRESS_EVT 13 /* Key press notification event. */ +#define BTA_DM_ROLE_CHG_EVT 14 /* Role Change event. */ +#define BTA_DM_BLE_KEY_EVT 15 /* BLE SMP key event for peer device keys */ +#define BTA_DM_BLE_SEC_REQ_EVT 16 /* BLE SMP security request */ +#define BTA_DM_BLE_PASSKEY_NOTIF_EVT 17 /* SMP passkey notification event */ +#define BTA_DM_BLE_PASSKEY_REQ_EVT 18 /* SMP passkey request event */ +#define BTA_DM_BLE_OOB_REQ_EVT 19 /* SMP OOB request event */ +#define BTA_DM_BLE_LOCAL_IR_EVT 20 /* BLE local IR event */ +#define BTA_DM_BLE_LOCAL_ER_EVT 21 /* BLE local ER event */ +// btla-specific ++ +#define BTA_DM_BLE_AUTH_CMPL_EVT 22 /* BLE Auth complete */ +// btla-specific -- +#define BTA_DM_DEV_UNPAIRED_EVT 23 +#define BTA_DM_HW_ERROR_EVT 24 /* BT Chip H/W error */ +typedef UINT8 tBTA_DM_SEC_EVT; + +/* Structure associated with BTA_DM_ENABLE_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address of local device. */ + tBTA_STATUS status; +} tBTA_DM_ENABLE; + +/* Structure associated with BTA_DM_PIN_REQ_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + BD_NAME bd_name; /* Name of peer device. */ + DEV_CLASS dev_class; /* Class of Device */ +} tBTA_DM_PIN_REQ; + +/* Link Key Notification Event (Key Type) definitions */ +#define HCI_LKEY_TYPE_COMBINATION 0x00 +#define HCI_LKEY_TYPE_LOCAL_UNIT 0x01 +#define HCI_LKEY_TYPE_REMOTE_UNIT 0x02 +#define HCI_LKEY_TYPE_DEBUG_COMB 0x03 +#define HCI_LKEY_TYPE_UNAUTH_COMB 0x04 +#define HCI_LKEY_TYPE_AUTH_COMB 0x05 +#define HCI_LKEY_TYPE_CHANGED_COMB 0x06 + +/* Structure associated with BTA_DM_AUTH_CMPL_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + BD_NAME bd_name; /* Name of peer device. */ + BOOLEAN key_present; /* Valid link key value in key element */ + LINK_KEY key; /* Link key associated with peer device. */ + UINT8 key_type; /* The type of Link Key */ + BOOLEAN success; /* TRUE of authentication succeeded, FALSE if failed. */ + UINT8 fail_reason; /* The HCI reason/error code for when success=FALSE */ +} tBTA_DM_AUTH_CMPL; + +/* Structure associated with BTA_DM_AUTHORIZE_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + BD_NAME bd_name; /* Name of peer device. */ + tBTA_SERVICE_ID service; /* Service ID to authorize. */ +// btla-specific ++ + DEV_CLASS dev_class; +// btla-specific -- +} tBTA_DM_AUTHORIZE; + +/* Structure associated with BTA_DM_LINK_UP_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ +} tBTA_DM_LINK_UP; + +/* +** Defentions for HCI Error Codes that are past in the events +*/ +#define HCI_SUCCESS 0x00 +#define HCI_PENDING 0x00 +#define HCI_ERR_ILLEGAL_COMMAND 0x01 +#define HCI_ERR_NO_CONNECTION 0x02 +#define HCI_ERR_HW_FAILURE 0x03 +#define HCI_ERR_PAGE_TIMEOUT 0x04 +#define HCI_ERR_AUTH_FAILURE 0x05 +#define HCI_ERR_KEY_MISSING 0x06 +#define HCI_ERR_MEMORY_FULL 0x07 +#define HCI_ERR_CONNECTION_TOUT 0x08 +#define HCI_ERR_MAX_NUM_OF_CONNECTIONS 0x09 +#define HCI_ERR_MAX_NUM_OF_SCOS 0x0A +#define HCI_ERR_CONNECTION_EXISTS 0x0B +#define HCI_ERR_COMMAND_DISALLOWED 0x0C +#define HCI_ERR_HOST_REJECT_RESOURCES 0x0D +#define HCI_ERR_HOST_REJECT_SECURITY 0x0E +#define HCI_ERR_HOST_REJECT_DEVICE 0x0F +#define HCI_ERR_HOST_TIMEOUT 0x10 +#define HCI_ERR_UNSUPPORTED_VALUE 0x11 +#define HCI_ERR_ILLEGAL_PARAMETER_FMT 0x12 +#define HCI_ERR_PEER_USER 0x13 +#define HCI_ERR_PEER_LOW_RESOURCES 0x14 +#define HCI_ERR_PEER_POWER_OFF 0x15 +#define HCI_ERR_CONN_CAUSE_LOCAL_HOST 0x16 +#define HCI_ERR_REPEATED_ATTEMPTS 0x17 +#define HCI_ERR_PAIRING_NOT_ALLOWED 0x18 +#define HCI_ERR_UNKNOWN_LMP_PDU 0x19 +#define HCI_ERR_UNSUPPORTED_REM_FEATURE 0x1A +#define HCI_ERR_SCO_OFFSET_REJECTED 0x1B +#define HCI_ERR_SCO_INTERVAL_REJECTED 0x1C +#define HCI_ERR_SCO_AIR_MODE 0x1D +#define HCI_ERR_INVALID_LMP_PARAM 0x1E +#define HCI_ERR_UNSPECIFIED 0x1F +#define HCI_ERR_UNSUPPORTED_LMP_FEATURE 0x20 +#define HCI_ERR_ROLE_CHANGE_NOT_ALLOWED 0x21 +#define HCI_ERR_LMP_RESPONSE_TIMEOUT 0x22 +#define HCI_ERR_LMP_ERR_TRANS_COLLISION 0x23 +#define HCI_ERR_LMP_PDU_NOT_ALLOWED 0x24 +#define HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE 0x25 +#define HCI_ERR_UNIT_KEY_USED 0x26 +#define HCI_ERR_QOS_NOT_SUPPORTED 0x27 +#define HCI_ERR_INSTANT_PASSED 0x28 +#define HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED 0x29 +#define HCI_ERR_DIFF_TRANSACTION_COLLISION 0x2A +#define HCI_ERR_UNDEFINED_0x2B 0x2B +#define HCI_ERR_QOS_UNACCEPTABLE_PARAM 0x2C +#define HCI_ERR_QOS_REJECTED 0x2D +#define HCI_ERR_CHAN_CLASSIF_NOT_SUPPORTED 0x2E +#define HCI_ERR_INSUFFCIENT_SECURITY 0x2F +#define HCI_ERR_PARAM_OUT_OF_RANGE 0x30 +#define HCI_ERR_UNDEFINED_0x31 0x31 +#define HCI_ERR_ROLE_SWITCH_PENDING 0x32 +#define HCI_ERR_UNDEFINED_0x33 0x33 +#define HCI_ERR_RESERVED_SLOT_VIOLATION 0x34 +#define HCI_ERR_ROLE_SWITCH_FAILED 0x35 +#define HCI_ERR_INQ_RSP_DATA_TOO_LARGE 0x36 +#define HCI_ERR_SIMPLE_PAIRING_NOT_SUPPORTED 0x37 +#define HCI_ERR_HOST_BUSY_PAIRING 0x38 +#define HCI_ERR_REJ_NO_SUITABLE_CHANNEL 0x39 +#define HCI_ERR_CONTROLLER_BUSY 0x3A +#define HCI_ERR_UNACCEPT_CONN_INTERVAL 0x3B +#define HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT 0x3C +#define HCI_ERR_CONN_TOUT_DUE_TO_MIC_FAILURE 0x3D +#define HCI_ERR_CONN_FAILED_ESTABLISHMENT 0x3E +#define HCI_ERR_MAC_CONNECTION_FAILED 0x3F + +#define HCI_ERR_MAX_ERR 0x40 + +#define HCI_HINT_TO_RECREATE_AMP_PHYS_LINK 0xFF + +/* Structure associated with BTA_DM_LINK_DOWN_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + UINT8 status; /* connection open/closed */ +} tBTA_DM_LINK_DOWN; + +typedef INT8 tBTA_DM_RSSI_VALUE; +typedef UINT8 tBTA_DM_LINK_QUALITY_VALUE; + +/* signal strength mask */ +#define BTA_SIG_STRENGTH_RSSI_MASK 1 +#define BTA_SIG_STRENGTH_LINK_QUALITY_MASK 2 + +typedef UINT8 tBTA_SIG_STRENGTH_MASK; + +/* Structure associated with BTA_DM_SIG_STRENGTH_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + tBTA_SIG_STRENGTH_MASK mask; /* mask for the values that are valid */ + tBTA_DM_RSSI_VALUE rssi_value; + tBTA_DM_LINK_QUALITY_VALUE link_quality_value; + +} tBTA_DM_SIG_STRENGTH; + +/* Structure associated with BTA_DM_BUSY_LEVEL_EVT */ +typedef struct +{ + UINT8 level; /* when paging or inquiring, level is 10. + Otherwise, the number of ACL links */ +} tBTA_DM_BUSY_LEVEL; + +// muff1n: only filled with used members +typedef union +{ + tBTA_DM_ENABLE enable; /* BTA enabled */ + tBTA_DM_PIN_REQ pin_req; /* PIN request */ + tBTA_DM_AUTH_CMPL auth_cmpl; /* Authentication complete indication */ + tBTA_DM_AUTHORIZE authorize; /* Authorization request */ + tBTA_DM_LINK_UP link_up; /* ACL connection up event */ + tBTA_DM_LINK_DOWN link_down; /* ACL connection down event */ + tBTA_DM_SIG_STRENGTH sig_strength; /* rssi and link quality value */ + tBTA_DM_BUSY_LEVEL busy_level; /* System busy level */ +} tBTA_DM_SEC; + +typedef void (tBTA_DM_SEC_CBACK)(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data); + +/* Search callback events */ +#define BTA_DM_INQ_RES_EVT 0 /* Inquiry result for a peer device. */ +#define BTA_DM_INQ_CMPL_EVT 1 /* Inquiry complete. */ +#define BTA_DM_DISC_RES_EVT 2 /* Discovery result for a peer device. */ +#define BTA_DM_DISC_BLE_RES_EVT 3 /* Discovery result for BLE GATT based service on a peer device. */ +#define BTA_DM_DISC_CMPL_EVT 4 /* Discovery complete. */ +#define BTA_DM_DI_DISC_CMPL_EVT 5 /* Discovery complete. */ +#define BTA_DM_SEARCH_CANCEL_CMPL_EVT 6 /* Search cancelled */ + +typedef UINT8 tBTA_DM_SEARCH_EVT; + +#define BTA_DM_INQ_RES_IGNORE_RSSI BTM_INQ_RES_IGNORE_RSSI /* 0x7f RSSI value not supplied (ignore it) */ + +// muff1n: commented some fields out +/* Structure associated with BTA_DM_INQ_RES_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + DEV_CLASS dev_class; /* Device class of peer device. */ + //BOOLEAN remt_name_not_required; /* Application sets this flag if it already knows the name of the device */ + /* If the device name is known to application BTA skips the remote name request */ + //BOOLEAN is_limited; /* TRUE, if the limited inquiry bit is set in the CoD */ + INT8 rssi; /* The rssi value */ + UINT8 *p_eir; /* received EIR */ +} tBTA_DM_INQ_RES; + +/* Structure associated with BTA_DM_INQ_CMPL_EVT */ +typedef struct +{ + UINT8 num_resps; /* Number of inquiry responses. */ +} tBTA_DM_INQ_CMPL; + +/* Structure associated with BTA_DM_DI_DISC_CMPL_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + UINT8 num_record; /* Number of DI record */ + tBTA_STATUS result; +} tBTA_DM_DI_DISC_CMPL; + +/* Structure associated with BTA_DM_DISC_RES_EVT */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + BD_NAME bd_name; /* Name of peer device. */ + tBTA_SERVICE_MASK services; /* Services found on peer device. */ +// btla-specific ++ + UINT8 * p_raw_data; /* Raw data for discovery DB */ + UINT32 raw_data_size; /* size of raw data */ + tBT_DEVICE_TYPE device_type; /* device type in case it is BLE device */ + UINT32 num_uuids; + UINT8 *p_uuid_list; +// btla-specific -- + tBTA_STATUS result; +} tBTA_DM_DISC_RES; + +/* Structure associated with tBTA_DM_DISC_BLE_RES */ +typedef struct +{ + BD_ADDR bd_addr; /* BD address peer device. */ + BD_NAME bd_name; /* Name of peer device. */ + tBT_UUID service; /* GATT based Services UUID found on peer device. */ +} tBTA_DM_DISC_BLE_RES; + +/* Union of all search callback structures */ +typedef union +{ + tBTA_DM_INQ_RES inq_res; /* Inquiry result for a peer device. */ + tBTA_DM_INQ_CMPL inq_cmpl; /* Inquiry complete. */ + tBTA_DM_DISC_RES disc_res; /* Discovery result for a peer device. */ + tBTA_DM_DISC_BLE_RES disc_ble_res; /* discovery result for GATT based service */ + tBTA_DM_DI_DISC_CMPL di_disc; /* DI discovery result for a peer device */ +} tBTA_DM_SEARCH; + +/* Search callback */ +typedef void (tBTA_DM_SEARCH_CBACK)(tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH *p_data); + +/* type of protocol mode */ +#define BTA_HH_PROTO_RPT_MODE (0x00) +#define BTA_HH_PROTO_BOOT_MODE (0x01) +#define BTA_HH_PROTO_UNKNOWN (0xff) +typedef UINT8 tBTA_HH_PROTO_MODE; + +/* BTA HID Host callback events */ +#define BTA_HH_ENABLE_EVT 0 /* HH enabled */ +#define BTA_HH_DISABLE_EVT 1 /* HH disabled */ +#define BTA_HH_OPEN_EVT 2 /* connection opened */ +#define BTA_HH_CLOSE_EVT 3 /* connection closed */ +#define BTA_HH_GET_RPT_EVT 4 /* BTA_HhGetReport callback */ +#define BTA_HH_SET_RPT_EVT 5 /* BTA_HhSetReport callback */ +#define BTA_HH_GET_PROTO_EVT 6 /* BTA_GetProtoMode callback */ +#define BTA_HH_SET_PROTO_EVT 7 /* BTA_HhSetProtoMode callback */ +#define BTA_HH_GET_IDLE_EVT 8 /* BTA_HhGetIdle comes callback */ +#define BTA_HH_SET_IDLE_EVT 9 /* BTA_HhSetIdle finish callback */ +#define BTA_HH_GET_DSCP_EVT 10 /* Get report descripotor */ +#define BTA_HH_ADD_DEV_EVT 11 /* Add Device callback */ +#define BTA_HH_RMV_DEV_EVT 12 /* remove device finished */ +#define BTA_HH_VC_UNPLUG_EVT 13 /* virtually unplugged */ +#define BTA_HH_UPDATE_UCD_EVT 14 +#define BTA_HH_API_ERR_EVT 15 /* API error is caught */ + +typedef UINT16 tBTA_HH_EVT; + +enum +{ + BTA_HH_OK, + BTA_HH_HS_HID_NOT_READY, /* handshake error : device not ready */ + BTA_HH_HS_INVALID_RPT_ID, /* handshake error : invalid report ID */ + BTA_HH_HS_TRANS_NOT_SPT, /* handshake error : transaction not spt */ + BTA_HH_HS_INVALID_PARAM, /* handshake error : invalid paremter */ + BTA_HH_HS_ERROR, /* handshake error : unspecified HS error */ + BTA_HH_ERR, /* general BTA HH error */ + BTA_HH_ERR_SDP, /* SDP error */ + BTA_HH_ERR_PROTO, /* SET_Protocol error, + only used in BTA_HH_OPEN_EVT callback */ + BTA_HH_ERR_DB_FULL, /* device database full error, used in + BTA_HH_OPEN_EVT/BTA_HH_ADD_DEV_EVT */ + BTA_HH_ERR_TOD_UNSPT, /* type of device not supported */ + BTA_HH_ERR_NO_RES, /* out of system resources */ + BTA_HH_ERR_AUTH_FAILED, /* authentication fail */ + BTA_HH_ERR_HDL +}; +typedef UINT8 tBTA_HH_STATUS; + +/* callback event data for BTA_HH_OPEN_EVT */ +typedef struct +{ + BD_ADDR bda; /* HID device bd address */ + tBTA_HH_STATUS status; /* operation status */ + UINT8 handle; /* device handle */ +} tBTA_HH_CONN; + +typedef tBTA_HH_CONN tBTA_HH_DEV_INFO; + +/* callback event data */ +typedef struct +{ + tBTA_HH_STATUS status; /* operation status */ + UINT8 handle; /* device handle */ +} tBTA_HH_CBDATA; + +// muff1n: only filled with used members +typedef union +{ + tBTA_HH_DEV_INFO dev_info; /* BTA_HH_ADD_DEV_EVT, BTA_HH_RMV_DEV_EVT */ + tBTA_HH_CONN conn; /* BTA_HH_OPEN_EVT */ + tBTA_HH_CBDATA dev_status; /* BTA_HH_CLOSE_EVT, + BTA_HH_SET_PROTO_EVT + BTA_HH_SET_RPT_EVT + BTA_HH_SET_IDLE_EVT */ +} tBTA_HH; + +/* BTA HH callback function */ +typedef void (tBTA_HH_CBACK) (tBTA_HH_EVT event, tBTA_HH *p_data); + +/* General callback function for notifying an application that a synchronous +** BTM function is complete. The pointer contains the address of any returned data. +*/ +typedef void (tBTM_CMPL_CB) (void *p1); +/* Structure returned with local version information */ + +typedef struct +{ + UINT8 hci_version; + UINT16 hci_revision; + UINT8 lmp_version; + UINT16 manufacturer; + UINT16 lmp_subversion; +} tBTM_VERSION_INFO; + +/* Structure returned with Vendor Specific Command complete callback */ +typedef struct +{ + UINT16 opcode; + UINT16 param_len; + UINT8 *p_param_buf; +} tBTM_VSC_CMPL; + +#define BTM_VSC_CMPL_DATA_SIZE (BTM_MAX_VENDOR_SPECIFIC_LEN + sizeof(tBTM_VSC_CMPL)) +/* Callback function for when device status changes. Appl must poll for +** what the new state is (BTM_IsDeviceUp). The event occurs whenever the stack +** has detected that the controller status has changed. This asynchronous event +** is enabled/disabled by calling BTM_RegisterForDeviceStatusNotif(). +*/ +enum +{ + BTM_DEV_STATUS_UP, + BTM_DEV_STATUS_DOWN, + BTM_DEV_STATUS_CMD_TOUT +}; +typedef UINT8 tBTM_DEV_STATUS; + +typedef void (tBTM_DEV_STATUS_CB) (tBTM_DEV_STATUS status); + +/* Callback function for when a vendor specific event occurs. The length and +** array of returned parameter bytes are included. This asynchronous event +** is enabled/disabled by calling BTM_RegisterForVSEvents(). +*/ +typedef void (tBTM_VS_EVT_CB) (UINT8 len, UINT8 *p); + +/* VSC callback function for notifying an application that a synchronous +** BTM function is complete. The pointer contains the address of any returned data. +*/ +typedef void (tBTM_VSC_CMPL_CB) (tBTM_VSC_CMPL *p1); + +/* Attributes mask values to be used in HID_HostAddDev API */ +#define HID_VIRTUAL_CABLE 0x0001 +#define HID_NORMALLY_CONNECTABLE 0x0002 +#define HID_RECONN_INIT 0x0004 +#define HID_SDP_DISABLE 0x0008 +#define HID_BATTERY_POWER 0x0010 +#define HID_REMOTE_WAKE 0x0020 +#define HID_SUP_TOUT_AVLBL 0x0040 +#define HID_SSR_MAX_LATENCY 0x0080 +#define HID_SSR_MIN_TOUT 0x0100 + +#define HID_SEC_REQUIRED 0x8000 + +#define BTA_HH_VIRTUAL_CABLE HID_VIRTUAL_CABLE +#define BTA_HH_NORMALLY_CONNECTABLE HID_NORMALLY_CONNECTABLE +#define BTA_HH_RECONN_INIT HID_RECONN_INIT +#define BTA_HH_SDP_DISABLE HID_SDP_DISABLE +#define BTA_HH_BATTERY_POWER HID_BATTERY_POWER +#define BTA_HH_REMOTE_WAKE HID_REMOTE_WAKE +#define BTA_HH_SUP_TOUT_AVLBL HID_SUP_TOUT_AVLBL +#define BTA_HH_SEC_REQUIRED HID_SEC_REQUIRED +typedef UINT16 tBTA_HH_ATTR_MASK; + +typedef struct desc_info +{ + UINT16 dl_len; + UINT8 *dsc_list; +} tHID_DEV_DSCP_INFO; + +typedef tHID_DEV_DSCP_INFO tBTA_HH_DEV_DESCR; + +/* Policy settings status */ +#define HCI_DISABLE_ALL_LM_MODES 0x0000 +#define HCI_ENABLE_MASTER_SLAVE_SWITCH 0x0001 +#define HCI_ENABLE_HOLD_MODE 0x0002 +#define HCI_ENABLE_SNIFF_MODE 0x0004 +#define HCI_ENABLE_PARK_MODE 0x0008 + +/* HCI mode defenitions */ +#define HCI_MODE_ACTIVE 0x00 +#define HCI_MODE_HOLD 0x01 +#define HCI_MODE_SNIFF 0x02 +#define HCI_MODE_PARK 0x03 + +/* BTM Power manager status codes */ +enum +{ + BTM_PM_STS_ACTIVE = HCI_MODE_ACTIVE, + BTM_PM_STS_HOLD = HCI_MODE_HOLD, + BTM_PM_STS_SNIFF = HCI_MODE_SNIFF, + BTM_PM_STS_PARK = HCI_MODE_PARK, + BTM_PM_STS_SSR, /* report the SSR parameters in HCI_SNIFF_SUB_RATE_EVT */ + BTM_PM_STS_PENDING, /* when waiting for status from controller */ + BTM_PM_STS_ERROR /* when HCI command status returns error */ +}; +typedef UINT8 tBTM_PM_STATUS; + +/* BTM Power manager modes */ + +enum +{ + BTM_PM_MD_ACTIVE = BTM_PM_STS_ACTIVE, + BTM_PM_MD_HOLD = BTM_PM_STS_HOLD, + BTM_PM_MD_SNIFF = BTM_PM_STS_SNIFF, + BTM_PM_MD_PARK = BTM_PM_STS_PARK, + BTM_PM_MD_FORCE = 0x10 /* OR this to force ACL link to a certain mode */ +}; +typedef UINT8 tBTM_PM_MODE; + +#define BTM_PM_SET_ONLY_ID 0x80 + +/* Operation codes */ +#define BTM_PM_REG_SET 1 /* The module wants to set the desired power mode */ +#define BTM_PM_REG_NOTIF 2 /* The module wants to receive mode change event */ +#define BTM_PM_DEREG 4 /* The module does not want to involve with PM anymore */ + +typedef struct +{ + UINT16 max; + UINT16 min; + UINT16 attempt; + UINT16 timeout; + tBTM_PM_MODE mode; +} tBTM_PM_PWR_MD; + +/************************************* +** Power Manager Callback Functions +**************************************/ +typedef void (tBTM_PM_STATUS_CBACK) (BD_ADDR p_bda, tBTM_PM_STATUS status, + UINT16 value, UINT8 hci_status); + +/************************ +** Stored Linkkey Types +*************************/ +#define BTM_CB_EVT_RETURN_LINK_KEYS 1 +#define BTM_CB_EVT_READ_STORED_LINK_KEYS 2 +#define BTM_CB_EVT_WRITE_STORED_LINK_KEYS 3 +#define BTM_CB_EVT_DELETE_STORED_LINK_KEYS 4 + +typedef struct +{ + UINT8 event; + +} tBTM_STORED_LINK_KEYS_EVT; + + +typedef struct +{ + UINT8 event; + UINT8 num_keys; + +} tBTM_RETURN_LINK_KEYS_EVT; + + +typedef struct +{ + BD_ADDR bd_addr; + LINK_KEY link_key; + +} tBTM_BD_ADDR_LINK_KEY_PAIR; + + +typedef struct +{ + UINT8 event; + UINT8 status; + UINT16 max_keys; + UINT16 read_keys; + +} tBTM_READ_STORED_LINK_KEY_COMPLETE; + + +typedef struct +{ + UINT8 event; + UINT8 status; + UINT8 num_keys; + +} tBTM_WRITE_STORED_LINK_KEY_COMPLETE; + + +typedef struct +{ + UINT8 event; + UINT8 status; + UINT16 num_keys; + +} tBTM_DELETE_STORED_LINK_KEY_COMPLETE; + +// --- + +tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK *p_cback); +tBTA_STATUS BTA_DisableBluetooth(void); + +// muff1n: most changed prototype so far +tBTA_STATUS BTA_DmAddDevice(BD_ADDR bd_addr, LINK_KEY link_key, + tBTA_SERVICE_MASK trusted_mask, BOOLEAN is_trusted); +tBTA_STATUS BTA_DmRemoveDevice(BD_ADDR bd_addr); +void BTA_DmSearch(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK services, tBTA_DM_SEARCH_CBACK *p_cback); +void BTA_DmSearchCancel(void); +void BTA_DmPinReply(BD_ADDR bd_addr, BOOLEAN accept, UINT8 pin_len, UINT8 *p_pin); +BOOLEAN BTA_DmIsDeviceUp(void); +void BTA_DmSetDeviceName(char *p_name); + +// muff1n: disc_mode and conn_mode might be the , based on usage +void BTA_DmSetVisibility(UINT8, UINT8); + +// muff1n: ucd_enabled might be the missing parameter +void BTA_HhEnable(tBTA_SEC sec_mask, tBTA_HH_CBACK *p_cback); +// muff1n: possibly takes just a tBTA_HH_DEV_DESCR in this version? i wrote it like that +void BTA_HhAddDev(BD_ADDR bda, tBTA_HH_ATTR_MASK attr_mask, UINT8 sub_class, + UINT8 app_id, tBTA_HH_DEV_DESCR descr); +void BTA_HhRemoveDev(UINT8 dev_handle); +void BTA_HhOpen(BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode, tBTA_SEC sec_mask); +void BTA_HhClose(UINT8 dev_handle); + +// muff1n: dev_bda is likely the missing parameter, as it is not used +void BTA_HhSendData(UINT8 dev_handle, BT_HDR *p_data); + +void bta_sys_set_trace_level(UINT8 level); + +void BTM_DeviceReset(tBTM_CMPL_CB *p_cb); + +tBTM_STATUS BTM_EnableTestMode(void); + +tBTM_STATUS BTM_ReadStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb); +tBTM_STATUS BTM_WriteStoredLinkKey(UINT8 num_keys, + BD_ADDR *bd_addr, + LINK_KEY *link_key, + tBTM_CMPL_CB *p_cb); +tBTM_STATUS BTM_DeleteStoredLinkKey(BD_ADDR bd_addr, tBTM_CMPL_CB *p_cb); + +tBTM_STATUS BTM_SetPowerMode(UINT8 pm_id, BD_ADDR remote_bda, tBTM_PM_PWR_MD *p_mode); +tBTM_STATUS BTM_SetAfhChannels(UINT8 first, UINT8 last); + +tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode, UINT8 param_len, + UINT8 *p_param_buf, tBTM_VSC_CMPL_CB *p_cb); + +tBTM_STATUS BTM_ReadLocalVersion(tBTM_VERSION_INFO *p_vers); +tBTM_STATUS BTM_SetDeviceClass(DEV_CLASS dev_class); + +tBTM_STATUS btm_remove_acl(BD_ADDR bd_addr); + +// muff1n: is_register is probably the missing parameter here +tBTM_STATUS BTM_RegisterForVSEvents(tBTM_VS_EVT_CB *p_cb); +tBTM_DEV_STATUS_CB *BTM_RegisterForDeviceStatusNotif(tBTM_DEV_STATUS_CB *p_cb); + +tBTM_STATUS BTM_PmRegister(UINT8 mask, UINT8 *p_pm_id, tBTM_PM_STATUS_CBACK *p_cb); +tBTM_STATUS BTM_WritePageTimeout(UINT16 timeout); +void BTM_SetDefaultLinkPolicy(UINT16 settings); +void BTM_SetDefaultLinkSuperTout(UINT16 timeout); + +BOOLEAN BTM_SecAddDevice(BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, + BD_FEATURES features, UINT32 trusted_mask[], + LINK_KEY link_key); + +void *GKI_getbuf(UINT16 size); + +UINT8 L2CA_SetTraceLevel(UINT8 trace_level); + +UINT8 SDP_SetTraceLevel(UINT8 new_level); + +/* muff1n: not in bluedroid source; might be older removed API functions */ +void BTA_DmSendHciReset(void); +void BTA_HhGetAclQueueInfo(void); +void BTA_Init(void); +void BTA_CleanUp(void (*p_cb)(tBTA_STATUS status)); // probably + +// --- +/* muff1n: I wrote this definition myself + * TODO: would this be part of BLE or WUD? + */ + +struct small_dev_info +{ + char devName[20]; // size 0x14? offset 0x00 // might be 0x13? + char at_0x14[1]; // size 0x??, offset 0x14? + char __pad0[0x20 - (0x14 + 0x01)]; + LINK_KEY linkKey; // size 0x10, offset 0x20 + char __pad1[0x10]; +}; // size 0x40 + +#endif // CONTEXT_BTE_H diff --git a/include/revolution/wpad/wud.h b/include/revolution/wpad/wud.h new file mode 100644 index 0000000000..da024b667b --- /dev/null +++ b/include/revolution/wpad/wud.h @@ -0,0 +1,53 @@ +#ifndef _REVOLUTION_WUD_H_ +#define _REVOLUTION_WUD_H_ + +#include <revolution/types.h> +#include <revolution/wpad/bte.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define WUD_CHAN0 0 +#define WUD_CHAN1 1 +#define WUD_CHAN2 2 +#define WUD_CHAN3 3 +#define WUD_MAX_CHANNELS 4 + +#define WUD_CHAN_INVALID -1 + +typedef void* WUDAllocFunc(u32 size); +typedef int WUDFreeFunc(void* ptr); // signature from petari. not sure what the int is, though + +typedef void WUDSyncDeviceCallback(s32 result, s32 num); // what is result? +typedef void WUDClearDeviceCallback(signed); + +typedef struct WUDDevInfo WUDDevInfo; +typedef void WUDHidConnectCallback(WUDDevInfo* devInfo, u8 isOpenEvent); +typedef void WUDHidReceiveCallback(u8 dev_handle, u8* p_rpt, u16 len); + +struct WUDDevInfo { + /* 0x00 */ struct small_dev_info small; + /* 0x40 */ BD_ADDR devAddr; + /* 0x46 */ LINK_KEY linkKey; + /* 0x56 */ u8 devHandle; + /* 0x57 */ u8 subclass; + /* 0x58 */ u8 appID; + /* 0x59 */ u8 at_0x59; + /* 0x5a */ u8 at_0x5a; /* unknown */ + /* 0x5b */ u8 at_0x5b; + /* 0x5c */ u8 at_0x5c; + u8 at_0x5d[1]; // padding? + /* 0x5e */ tBTA_HH_ATTR_MASK hhAttrMask; +}; // size 0x60 + +u8 WUDGetBufferStatus(void); +u8 _WUDGetLinkNumber(void); +u16 _WUDGetQueuedSize(s8 dev_handle); +u16 _WUDGetNotAckedSize(s8 dev_handle); + +#ifdef __cplusplus +} +#endif + +#endif // _REVOLUTION_WUD_H_ |
