aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/gcreg.h
diff options
context:
space:
mode:
authorAlexei Shlychkov <x0177296@ti.com>2012-05-10 16:52:07 -0700
committerZiyann <jaraidaniel@gmail.com>2014-10-01 13:00:45 +0200
commit0e92a58094ac5e75dd4cb4346e6885d7d5ef6a48 (patch)
tree55cab54f3427c9c2ea596a1dafddc3e56495180b /include/linux/gcreg.h
parent5b557db2ba040ac9b60bb1688e1e3a42beec8e72 (diff)
downloadkernel_samsung_tuna-0e92a58094ac5e75dd4cb4346e6885d7d5ef6a48.zip
kernel_samsung_tuna-0e92a58094ac5e75dd4cb4346e6885d7d5ef6a48.tar.gz
kernel_samsung_tuna-0e92a58094ac5e75dd4cb4346e6885d7d5ef6a48.tar.bz2
gcx: added support for asynchronous operation.
Change-Id: I9eff91d89e9d9c5260805bd0ae54a3c324806144 Signed-off-by: Alexei Shlychkov <x0177296@ti.com>
Diffstat (limited to 'include/linux/gcreg.h')
-rw-r--r--include/linux/gcreg.h360
1 files changed, 203 insertions, 157 deletions
diff --git a/include/linux/gcreg.h b/include/linux/gcreg.h
index d8b375f..b9d4db8 100644
--- a/include/linux/gcreg.h
+++ b/include/linux/gcreg.h
@@ -19,54 +19,52 @@
** Register access macros.
*/
-#define __GCSTART(reg_field) \
+#define GCREGSTART(reg_field) \
( \
0 ? reg_field \
)
-#define __GCEND(reg_field) \
+#define GCREGEND(reg_field) \
( \
1 ? reg_field \
)
-#define __GCGETSIZE(reg_field) \
+#define GCREGSIZE(reg_field) \
( \
- __GCEND(reg_field) - __GCSTART(reg_field) + 1 \
+ GCREGEND(reg_field) - GCREGSTART(reg_field) + 1 \
)
-#define __GCALIGN(data, reg_field) \
+#define GCREGALIGN(data, reg_field) \
( \
- ((unsigned int) (data)) << __GCSTART(reg_field) \
+ ((unsigned int) (data)) << GCREGSTART(reg_field) \
)
-#define __GCMASK(reg_field) \
- ((__GCGETSIZE(reg_field) == 32) \
- ? ~0U \
- : (unsigned int) (~(~0UL << __GCGETSIZE(reg_field))))
+#define GCREGMASK(reg_field) \
+( \
+ GCREGALIGN(~0UL >> (32 - GCREGSIZE(reg_field)), reg_field) \
+)
-#define SETFIELDVAL(data, reg, field, value) \
+#define GCSETFIELDVAL(data, reg, field, value) \
( \
- (((unsigned int) (data)) \
- & ~__GCALIGN(__GCMASK(reg##_##field), reg##_##field)) \
- | __GCALIGN(reg##_##field##_##value \
- & __GCMASK(reg##_##field), reg##_##field) \
+ (((unsigned int) (data)) & ~GCREGMASK(reg##_##field)) \
+ | (GCREGALIGN(reg##_##field##_##value, reg##_##field) \
+ & GCREGMASK(reg##_##field)) \
)
-#define SETFIELD(data, reg, field, value) \
+#define GCSETFIELD(data, reg, field, value) \
( \
- (((unsigned int) (data)) \
- & ~__GCALIGN(__GCMASK(reg##_##field), reg##_##field)) \
- | __GCALIGN((unsigned int) (value) \
- & __GCMASK(reg##_##field), reg##_##field) \
+ (((unsigned int) (data)) & ~GCREGMASK(reg##_##field)) \
+ | (GCREGALIGN((unsigned int) (value), reg##_##field) \
+ & GCREGMASK(reg##_##field)) \
)
-#define GETFIELD(data, reg, field) \
+#define GCGETFIELD(data, reg, field) \
( \
- ((((unsigned int) (data)) >> __GCSTART(reg##_##field)) \
- & __GCMASK(reg##_##field)) \
+ (((unsigned int) (data)) & GCREGMASK(reg##_##field)) \
+ >> GCREGSTART(reg##_##field) \
)
-#define REGVALUE(reg, field, val) \
+#define GCREGVALUE(reg, field, val) \
( \
reg##_##field##_##val \
)
@@ -1823,62 +1821,75 @@ union gcidle {
#define GC_TOTAL_IDLE_CYCLES_CYCLES_Type U32
/*******************************************************************************
+** Command opcodes.
+*/
+
+#define GCREG_COMMAND_OPCODE_LOAD_STATE 0x01
+#define GCREG_COMMAND_OPCODE_END 0x02
+#define GCREG_COMMAND_OPCODE_NOP 0x03
+#define GCREG_COMMAND_OPCODE_STARTDE 0x04
+#define GCREG_COMMAND_OPCODE_WAIT 0x07
+#define GCREG_COMMAND_OPCODE_LINK 0x08
+#define GCREG_COMMAND_OPCODE_STALL 0x09
+#define GCREG_COMMAND_OPCODE_CALL 0x0A
+#define GCREG_COMMAND_OPCODE_RETURN 0x0B
+
+/*******************************************************************************
** Command gcregCommandLoadState
*/
/* When enabled, convert 16.16 fixed point into 32-bit floating point. */
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT 26 : 26
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT_End 26
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT_Start 26
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT_Type U01
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT_NORMAL 0x0
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT_FIXED16_DOT16 0x1
+#define GCREG_COMMAND_LOAD_STATE_FLOAT 26 : 26
+#define GCREG_COMMAND_LOAD_STATE_FLOAT_End 26
+#define GCREG_COMMAND_LOAD_STATE_FLOAT_Start 26
+#define GCREG_COMMAND_LOAD_STATE_FLOAT_Type U01
+#define GCREG_COMMAND_LOAD_STATE_FLOAT_NORMAL 0x0
+#define GCREG_COMMAND_LOAD_STATE_FLOAT_FIXED16_DOT16 0x1
/* Number of states. 0 = 1024. */
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_COUNT 25 : 16
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_COUNT_End 25
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_COUNT_Start 16
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_COUNT_Type U10
+#define GCREG_COMMAND_LOAD_STATE_COUNT 25 : 16
+#define GCREG_COMMAND_LOAD_STATE_COUNT_End 25
+#define GCREG_COMMAND_LOAD_STATE_COUNT_Start 16
+#define GCREG_COMMAND_LOAD_STATE_COUNT_Type U10
/* Starting state address. */
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_ADDRESS 15 : 0
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_ADDRESS_End 15
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_ADDRESS_Start 0
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_ADDRESS_Type U16
+#define GCREG_COMMAND_LOAD_STATE_ADDRESS 15 : 0
+#define GCREG_COMMAND_LOAD_STATE_ADDRESS_End 15
+#define GCREG_COMMAND_LOAD_STATE_ADDRESS_Start 0
+#define GCREG_COMMAND_LOAD_STATE_ADDRESS_Type U16
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE_LOAD_STATE 0x01
+#define GCREG_COMMAND_LOAD_STATE_OPCODE 31 : 27
+#define GCREG_COMMAND_LOAD_STATE_OPCODE_End 31
+#define GCREG_COMMAND_LOAD_STATE_OPCODE_Start 27
+#define GCREG_COMMAND_LOAD_STATE_OPCODE_Type U05
struct gccmdldstate {
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_ADDRESS */
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_ADDRESS */
unsigned int address:16;
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_COUNT */
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COUNT */
unsigned int count:10;
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT */
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_FLOAT */
unsigned int fixed:1;
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE */
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_OPCODE */
unsigned int opcode:5;
};
#define GCLDSTATE(Address, Count) \
{ \
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_ADDRESS */ \
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_ADDRESS */ \
Address, \
\
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_COUNT */ \
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COUNT */ \
Count, \
\
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT */ \
- GCREG_COMMAND_LOAD_STATE_COMMAND_FLOAT_NORMAL, \
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_FLOAT */ \
+ GCREG_COMMAND_LOAD_STATE_FLOAT_NORMAL, \
\
- /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE */ \
- GCREG_COMMAND_LOAD_STATE_COMMAND_OPCODE_LOAD_STATE \
+ /* gcregCommandLoadState:GCREG_COMMAND_LOAD_STATE_OPCODE */ \
+ GCREG_COMMAND_OPCODE_LOAD_STATE \
}
/*******************************************************************************
@@ -1886,37 +1897,38 @@ struct gccmdldstate {
*/
/* Send event when END is completed. */
-#define GCREG_COMMAND_END_COMMAND_EVENT_ENABLE 8 : 8
-#define GCREG_COMMAND_END_COMMAND_EVENT_ENABLE_End 8
-#define GCREG_COMMAND_END_COMMAND_EVENT_ENABLE_Start 8
-#define GCREG_COMMAND_END_COMMAND_EVENT_ENABLE_Type U01
+#define GCREG_COMMAND_END_EVENT 8 : 8
+#define GCREG_COMMAND_END_EVENT_End 8
+#define GCREG_COMMAND_END_EVENT_Start 8
+#define GCREG_COMMAND_END_EVENT_Type U01
+#define GCREG_COMMAND_END_EVENT_DISABLE 0x0
+#define GCREG_COMMAND_END_EVENT_ENABLE 0x1
/* Event ID to be send. */
-#define GCREG_COMMAND_END_COMMAND_EVENT_ID 4 : 0
-#define GCREG_COMMAND_END_COMMAND_EVENT_ID_End 4
-#define GCREG_COMMAND_END_COMMAND_EVENT_ID_Start 0
-#define GCREG_COMMAND_END_COMMAND_EVENT_ID_Type U05
+#define GCREG_COMMAND_END_EVENT_ID 4 : 0
+#define GCREG_COMMAND_END_EVENT_ID_End 4
+#define GCREG_COMMAND_END_EVENT_ID_Start 0
+#define GCREG_COMMAND_END_EVENT_ID_Type U05
-#define GCREG_COMMAND_END_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_END_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_END_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_END_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_END_COMMAND_OPCODE_END 0x02
+#define GCREG_COMMAND_END_OPCODE 31 : 27
+#define GCREG_COMMAND_END_OPCODE_End 31
+#define GCREG_COMMAND_END_OPCODE_Start 27
+#define GCREG_COMMAND_END_OPCODE_Type U05
struct gcfldend {
- /* gcregCommandEnd:GCREG_COMMAND_END_COMMAND_EVENT_ID */
+ /* gcregCommandEnd:GCREG_COMMAND_END_EVENT_ID */
unsigned int signalid:5;
/* gcregCommandEnd:reserved */
unsigned int _reserved_5_7:3;
- /* gcregCommandEnd:GCREG_COMMAND_END_COMMAND_EVENT_ENABLE */
+ /* gcregCommandEnd:GCREG_COMMAND_END_EVENT_ENABLE */
unsigned int signal:1;
/* gcregCommandEnd:reserved */
unsigned int _reserved_9_26:18;
- /* gcregCommandEnd:GCREG_COMMAND_END_COMMAND_OPCODE */
+ /* gcregCommandEnd:GCREG_COMMAND_END_OPCODE */
unsigned int opcode:5;
};
@@ -1932,37 +1944,36 @@ struct gccmdend {
};
static const struct gcfldend gcfldend = {
- /* gcregCommandEnd:GCREG_COMMAND_END_COMMAND_EVENT_ID */
+ /* gcregCommandEnd:GCREG_COMMAND_END_EVENT_ID */
0,
/* gcregCommandEnd:reserved */
0,
- /* gcregCommandEnd:GCREG_COMMAND_END_COMMAND_EVENT_ENABLE */
- 0,
+ /* gcregCommandEnd:GCREG_COMMAND_END_EVENT */
+ GCREG_COMMAND_END_EVENT_DISABLE,
/* gcregCommandEnd:reserved */
0,
- /* gcregCommandEnd:GCREG_COMMAND_END_COMMAND_OPCODE */
- GCREG_COMMAND_END_COMMAND_OPCODE_END
+ /* gcregCommandEnd:GCREG_COMMAND_END_OPCODE */
+ GCREG_COMMAND_OPCODE_END
};
/*******************************************************************************
** Command gcregCommandNop
*/
-#define GCREG_COMMAND_NOP_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_NOP_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_NOP_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_NOP_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_NOP_COMMAND_OPCODE_NOP 0x03
+#define GCREG_COMMAND_NOP_OPCODE 31 : 27
+#define GCREG_COMMAND_NOP_OPCODE_End 31
+#define GCREG_COMMAND_NOP_OPCODE_Start 27
+#define GCREG_COMMAND_NOP_OPCODE_Type U05
struct gcfldnop {
/* gcregCommandNop:reserve */
unsigned int _reserved_0_26:27;
- /* gcregCommandNop:GCREG_COMMAND_NOP_COMMAND_OPCODE */
+ /* gcregCommandNop:GCREG_COMMAND_NOP_OPCODE */
unsigned int opcode:5;
};
@@ -1981,8 +1992,8 @@ static const struct gcfldnop gcfldnop = {
/* gcregCommandNop:reserve */
0,
- /* gcregCommandNop:GCREG_COMMAND_NOP_COMMAND_OPCODE */
- GCREG_COMMAND_NOP_COMMAND_OPCODE_NOP
+ /* gcregCommandNop:GCREG_COMMAND_NOP_OPCODE */
+ GCREG_COMMAND_OPCODE_NOP
};
/*******************************************************************************
@@ -1995,36 +2006,35 @@ static const struct gcfldnop gcfldnop = {
/* Number of 32-bit data words to send.
** The data follows the rectangles, aligned at 64-bit.
*/
-#define GCREG_COMMAND_START_DE_COMMAND_DATA_COUNT 26 : 16
-#define GCREG_COMMAND_START_DE_COMMAND_DATA_COUNT_End 26
-#define GCREG_COMMAND_START_DE_COMMAND_DATA_COUNT_Start 16
-#define GCREG_COMMAND_START_DE_COMMAND_DATA_COUNT_Type U11
+#define GCREG_COMMAND_STARTDE_DATA_COUNT 26 : 16
+#define GCREG_COMMAND_STARTDE_DATA_COUNT_End 26
+#define GCREG_COMMAND_STARTDE_DATA_COUNT_Start 16
+#define GCREG_COMMAND_STARTDE_DATA_COUNT_Type U11
/* Number of rectangles to send.
** The rectangles follow the command, aligned at 64-bit.
*/
-#define GCREG_COMMAND_START_DE_COMMAND_COUNT 15 : 8
-#define GCREG_COMMAND_START_DE_COMMAND_COUNT_End 15
-#define GCREG_COMMAND_START_DE_COMMAND_COUNT_Start 8
-#define GCREG_COMMAND_START_DE_COMMAND_COUNT_Type U08
+#define GCREG_COMMAND_STARTDE_COUNT 15 : 8
+#define GCREG_COMMAND_STARTDE_COUNT_End 15
+#define GCREG_COMMAND_STARTDE_COUNT_Start 8
+#define GCREG_COMMAND_STARTDE_COUNT_Type U08
-#define GCREG_COMMAND_START_DE_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_START_DE_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_START_DE_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_START_DE_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_START_DE_COMMAND_OPCODE_START_DE 0x04
+#define GCREG_COMMAND_STARTDE_OPCODE 31 : 27
+#define GCREG_COMMAND_STARTDE_OPCODE_End 31
+#define GCREG_COMMAND_STARTDE_OPCODE_Start 27
+#define GCREG_COMMAND_STARTDE_OPCODE_Type U05
struct gcfldstartde {
/* gcregCommandStartDE:reserved */
unsigned int _reserved_0_7:8;
- /* gcregCommandStartDE:GCREG_COMMAND_START_DE_COMMAND_COUNT */
+ /* gcregCommandStartDE:GCREG_COMMAND_STARTDE_COUNT */
unsigned int rectcount:8;
- /* gcregCommandStartDE:GCREG_COMMAND_START_DE_COMMAND_DATA_COUNT */
+ /* gcregCommandStartDE:GCREG_COMMAND_STARTDE_DATA_COUNT */
unsigned int datacount:11;
- /* gcregCommandStartDE:GCREG_COMMAND_START_DE_COMMAND_OPCODE */
+ /* gcregCommandStartDE:GCREG_COMMAND_STARTDE_OPCODE */
unsigned int opcode:5;
};
@@ -2042,14 +2052,14 @@ static const struct gcfldstartde gcfldstartde = {
/* gcregCommandStartDE:reserved */
0,
- /* gcregCommandStartDE:GCREG_COMMAND_START_DE_COMMAND_COUNT */
+ /* gcregCommandStartDE:GCREG_COMMAND_STARTDE_COUNT */
1,
- /* gcregCommandStartDE:GCREG_COMMAND_START_DE_COMMAND_DATA_COUNT */
+ /* gcregCommandStartDE:GCREG_COMMAND_STARTDE_DATA_COUNT */
0,
- /* gcregCommandStartDE:GCREG_COMMAND_START_DE_COMMAND_OPCODE */
- GCREG_COMMAND_START_DE_COMMAND_OPCODE_START_DE
+ /* gcregCommandStartDE:GCREG_COMMAND_STARTDE_OPCODE */
+ GCREG_COMMAND_OPCODE_STARTDE
};
/* Offset TopLeft
@@ -2097,25 +2107,24 @@ struct gccmdstartderect {
*/
/* Number of cycles to wait until the next command gets fetched. */
-#define GCREG_COMMAND_WAIT_COMMAND_DELAY 15 : 0
-#define GCREG_COMMAND_WAIT_COMMAND_DELAY_End 15
-#define GCREG_COMMAND_WAIT_COMMAND_DELAY_Start 0
-#define GCREG_COMMAND_WAIT_COMMAND_DELAY_Type U16
+#define GCREG_COMMAND_WAIT_DELAY 15 : 0
+#define GCREG_COMMAND_WAIT_DELAY_End 15
+#define GCREG_COMMAND_WAIT_DELAY_Start 0
+#define GCREG_COMMAND_WAIT_DELAY_Type U16
-#define GCREG_COMMAND_WAIT_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_WAIT_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_WAIT_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_WAIT_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_WAIT_COMMAND_OPCODE_WAIT 0x07
+#define GCREG_COMMAND_WAIT_OPCODE 31 : 27
+#define GCREG_COMMAND_WAIT_OPCODE_End 31
+#define GCREG_COMMAND_WAIT_OPCODE_Start 27
+#define GCREG_COMMAND_WAIT_OPCODE_Type U05
struct gcfldwait {
- /* gcregCommandWait:GCREG_COMMAND_WAIT_COMMAND_DELAY */
+ /* gcregCommandWait:GCREG_COMMAND_WAIT_DELAY */
unsigned int delay:16;
/* gcregCommandWait:reserved */
unsigned int _reserved_16_26:11;
- /* gcregCommandWait:GCREG_COMMAND_WAIT_COMMAND_OPCODE */
+ /* gcregCommandWait:GCREG_COMMAND_WAIT_OPCODE */
unsigned int opcode:5;
};
@@ -2130,14 +2139,14 @@ struct gccmdwait {
};
static const struct gcfldwait gcfldwait200 = {
- /* gcregCommandWait:GCREG_COMMAND_WAIT_COMMAND_DELAY */
+ /* gcregCommandWait:GCREG_COMMAND_WAIT_DELAY */
200,
/* gcregCommandWait:reserved */
0,
- /* gcregCommandWait:GCREG_COMMAND_WAIT_COMMAND_OPCODE */
- GCREG_COMMAND_WAIT_COMMAND_OPCODE_WAIT
+ /* gcregCommandWait:GCREG_COMMAND_WAIT_OPCODE */
+ GCREG_COMMAND_OPCODE_WAIT
};
/*******************************************************************************
@@ -2148,16 +2157,15 @@ static const struct gcfldwait gcfldwait200 = {
** nothing else will be fetched. So, make sure that the last command in the
** new command buffer is either an END, a LINK, a CALL, or a RETURN.
*/
-#define GCREG_COMMAND_LINK_COMMAND_PREFETCH 15 : 0
-#define GCREG_COMMAND_LINK_COMMAND_PREFETCH_End 15
-#define GCREG_COMMAND_LINK_COMMAND_PREFETCH_Start 0
-#define GCREG_COMMAND_LINK_COMMAND_PREFETCH_Type U16
+#define GCREG_COMMAND_LINK_PREFETCH 15 : 0
+#define GCREG_COMMAND_LINK_PREFETCH_End 15
+#define GCREG_COMMAND_LINK_PREFETCH_Start 0
+#define GCREG_COMMAND_LINK_PREFETCH_Type U16
-#define GCREG_COMMAND_LINK_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_LINK_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_LINK_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_LINK_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_LINK_COMMAND_OPCODE_LINK 0x08
+#define GCREG_COMMAND_LINK_OPCODE 31 : 27
+#define GCREG_COMMAND_LINK_OPCODE_End 31
+#define GCREG_COMMAND_LINK_OPCODE_Start 27
+#define GCREG_COMMAND_LINK_OPCODE_Type U05
/* Offset Address
** ~~~~~~~~~~~~~~ */
@@ -2170,13 +2178,13 @@ static const struct gcfldwait gcfldwait200 = {
#define GCREG_COMMAND_LINK_ADDRESS_ADDRESS_Type U31
struct gcfldlink {
- /* gcregCommandLink:GCREG_COMMAND_LINK_COMMAND_PREFETCH */
+ /* gcregCommandLink:GCREG_COMMAND_LINK_PREFETCH */
unsigned int count:16;
/* gcregCommandLink:reserved */
unsigned int _reserved_16_26:11;
- /* gcregCommandLink:GCREG_COMMAND_LINK_COMMAND_OPCODE */
+ /* gcregCommandLink:GCREG_COMMAND_LINK_OPCODE */
unsigned int opcode:5;
};
@@ -2190,15 +2198,26 @@ struct gccmdlink {
unsigned int address;
};
+static const struct gcfldlink gcfldlink2 = {
+ /* gcregCommandLink:GCREG_COMMAND_LINK_PREFETCH */
+ 2,
+
+ /* gcregCommandLink:reserved */
+ 0,
+
+ /* gcregCommandLink:GCREG_COMMAND_LINK_OPCODE */
+ GCREG_COMMAND_OPCODE_LINK
+};
+
static const struct gcfldlink gcfldlink4 = {
- /* gcregCommandLink:GCREG_COMMAND_LINK_COMMAND_PREFETCH */
+ /* gcregCommandLink:GCREG_COMMAND_LINK_PREFETCH */
4,
/* gcregCommandLink:reserved */
0,
- /* gcregCommandLink:GCREG_COMMAND_LINK_COMMAND_OPCODE */
- GCREG_COMMAND_LINK_COMMAND_OPCODE_LINK
+ /* gcregCommandLink:GCREG_COMMAND_LINK_OPCODE */
+ GCREG_COMMAND_OPCODE_LINK
};
/*******************************************************************************
@@ -2207,11 +2226,10 @@ static const struct gcfldlink gcfldlink4 = {
/* Offset Command
** ~~~~~~~~~~~~~~ */
-#define GCREG_COMMAND_STALL_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_STALL_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_STALL_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_STALL_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_STALL_COMMAND_OPCODE_STALL 0x09
+#define GCREG_COMMAND_STALL_OPCODE 31 : 27
+#define GCREG_COMMAND_STALL_OPCODE_End 31
+#define GCREG_COMMAND_STALL_OPCODE_Start 27
+#define GCREG_COMMAND_STALL_OPCODE_Type U05
/* Offset Stall
** ~~~~~~~~~~~~ */
@@ -2235,7 +2253,7 @@ struct gcfldstall {
/* gcregCommandStall:reserved */
unsigned int _reserved_0_26:27;
- /* gcregCommandStall:GCREG_COMMAND_STALL_COMMAND_OPCODE */
+ /* gcregCommandStall:GCREG_COMMAND_STALL_OPCODE */
unsigned int opcode:5;
};
@@ -2269,8 +2287,8 @@ static const struct gcfldstall gcfldstall = {
/* gcregCommandStall:reserved */
0,
- /* gcregCommandStall:GCREG_COMMAND_STALL_COMMAND_OPCODE */
- GCREG_COMMAND_STALL_COMMAND_OPCODE_STALL
+ /* gcregCommandStall:GCREG_COMMAND_STALL_OPCODE */
+ GCREG_COMMAND_OPCODE_STALL
};
static const struct gcfldstallarg gcfldstall_fe_pe = {
@@ -2298,16 +2316,15 @@ static const struct gcfldstallarg gcfldstall_fe_pe = {
** nothing else will be fetched. So, make sure that the last command in the
** new command buffer is either an END, a LINK, a CALL, or a RETURN.
*/
-#define GCREG_COMMAND_CALL_COMMAND_PREFETCH 15 : 0
-#define GCREG_COMMAND_CALL_COMMAND_PREFETCH_End 15
-#define GCREG_COMMAND_CALL_COMMAND_PREFETCH_Start 0
-#define GCREG_COMMAND_CALL_COMMAND_PREFETCH_Type U16
+#define GCREG_COMMAND_CALL_PREFETCH 15 : 0
+#define GCREG_COMMAND_CALL_PREFETCH_End 15
+#define GCREG_COMMAND_CALL_PREFETCH_Start 0
+#define GCREG_COMMAND_CALL_PREFETCH_Type U16
-#define GCREG_COMMAND_CALL_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_CALL_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_CALL_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_CALL_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_CALL_COMMAND_OPCODE_CALL 0x0A
+#define GCREG_COMMAND_CALL_OPCODE 31 : 27
+#define GCREG_COMMAND_CALL_OPCODE_End 31
+#define GCREG_COMMAND_CALL_OPCODE_Start 27
+#define GCREG_COMMAND_CALL_OPCODE_Type U05
/* Offset Address
** ~~~~~~~~~~~~~~ */
@@ -2338,13 +2355,13 @@ static const struct gcfldstallarg gcfldstall_fe_pe = {
#define GCREG_COMMAND_CALL_RETURN_ADDRESS_ADDRESS_Type U31
struct gccmdcall {
- /* gcregCommandCall:GCREG_COMMAND_CALL_COMMAND_PREFETCH */
+ /* gcregCommandCall:GCREG_COMMAND_CALL_PREFETCH */
unsigned int count:16;
/* gcregCommandCall:reserved */
unsigned int _reserved_16_26:11;
- /* gcregCommandCall:GCREG_COMMAND_CALL_COMMAND_OPCODE */
+ /* gcregCommandCall:GCREG_COMMAND_CALL_OPCODE */
unsigned int opcode:5;
/* gcregCommandCall:GCREG_COMMAND_CALL_ADDRESS_ADDRESS */
@@ -2361,17 +2378,16 @@ struct gccmdcall {
** Command gccmdCommandReturn
*/
-#define GCREG_COMMAND_RETURN_COMMAND_OPCODE 31 : 27
-#define GCREG_COMMAND_RETURN_COMMAND_OPCODE_End 31
-#define GCREG_COMMAND_RETURN_COMMAND_OPCODE_Start 27
-#define GCREG_COMMAND_RETURN_COMMAND_OPCODE_Type U05
-#define GCREG_COMMAND_RETURN_COMMAND_OPCODE_RETURN 0x0B
+#define GCREG_COMMAND_RETURN_OPCODE 31 : 27
+#define GCREG_COMMAND_RETURN_OPCODE_End 31
+#define GCREG_COMMAND_RETURN_OPCODE_Start 27
+#define GCREG_COMMAND_RETURN_OPCODE_Type U05
struct gcfldret {
/* gccmdCommandReturn:reserve */
unsigned int _reserved_0_26:27;
- /* gccmdCommandReturn:GCREG_COMMAND_RETURN_COMMAND_OPCODE */
+ /* gccmdCommandReturn:GCREG_COMMAND_RETURN_OPCODE */
unsigned int opcode:5;
};
@@ -2390,8 +2406,8 @@ static const struct gcfldret gcfldret = {
/* gccmdCommandReturn:reserve */
0,
- /* gccmdCommandReturn:GCREG_COMMAND_RETURN_COMMAND_OPCODE */
- GCREG_COMMAND_RETURN_COMMAND_OPCODE_RETURN
+ /* gccmdCommandReturn:GCREG_COMMAND_RETURN_OPCODE */
+ GCREG_COMMAND_OPCODE_RETURN
};
/*******************************************************************************
@@ -2469,6 +2485,14 @@ static const struct gcregpipeselect gcregpipeselect_2D = {
0
};
+static const struct gcregpipeselect gcregpipeselect_3D = {
+ /* gcregPipeSelectRegAddrs:GCREG_PIPE_SELECT_PIPE */
+ GCREG_PIPE_SELECT_PIPE_PIPE3D,
+
+ /* gcregPipeSelectRegAddrs:reserved */
+ 0
+};
+
/*******************************************************************************
** State gcregEvent
*/
@@ -8203,6 +8227,28 @@ struct gcmosema {
** Modular operations: mmuinit
*/
+struct gcmoterminator {
+ union {
+ struct gcmosignal done;
+ struct gccmdnop nop;
+ } u1;
+
+ union {
+ struct gccmdwait wait;
+ struct gccmdlink linknext;
+ struct gccmdend end;
+ } u2;
+
+ union {
+ struct gccmdlink linkwait;
+ struct gccmdnop nop;
+ } u3;
+};
+
+/*******************************************************************************
+** Modular operations: mmuinit
+*/
+
static const struct gccmdldstate gcmommuinit_safe_ldst =
GCLDSTATE(gcregMMUSafeAddressRegAddrs, 2);