summaryrefslogtreecommitdiff
path: root/src/ast_2dtool.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast_2dtool.h')
-rw-r--r--src/ast_2dtool.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/ast_2dtool.h b/src/ast_2dtool.h
index b6ca79d..9af388b 100644
--- a/src/ast_2dtool.h
+++ b/src/ast_2dtool.h
@@ -83,6 +83,8 @@ typedef struct _PKT_SC
#define MASK_LINE_WIDTH 0x7FF
#define MASK_LINE_K1 0x3FFFFF
#define MASK_LINE_K2 0x3FFFFF
+#define MASK_AIPLINE_X 0xFFF
+#define MASK_AIPLINE_Y 0xFFF
#define MAX_PATReg_Size 256
@@ -113,6 +115,8 @@ typedef struct _PKT_SC
#define MMIOREG_LINE_K2 (pAST->MMIOVirtualAddr + 0x8028)
#define MMIOREG_LINE_STYLE1 (pAST->MMIOVirtualAddr + 0x802C)
#define MMIOREG_LINE_STYLE2 (pAST->MMIOVirtualAddr + 0x8030)
+#define MMIOREG_LINE_XY2 (pAST->MMIOVirtualAddr + 0x8014)
+#define MMIOREG_LINE_NUMBER (pAST->MMIOVirtualAddr + 0x8018)
/* CMDQ Reg */
#define CMDQREG_SRC_BASE (0x00 << 24)
@@ -140,12 +144,15 @@ typedef struct _PKT_SC
#define CMDQREG_LINE_K2 (0x0A << 24)
#define CMDQREG_LINE_STYLE1 (0x0B << 24)
#define CMDQREG_LINE_STYLE2 (0x0C << 24)
+#define CMDQREG_LINE_XY2 (0x05 << 24)
+#define CMDQREG_LINE_NUMBER (0x06 << 24)
/* CMD Reg. Definition */
#define CMD_BITBLT 0x00000000
#define CMD_LINEDRAW 0x00000001
#define CMD_COLOREXP 0x00000002
#define CMD_ENHCOLOREXP 0x00000003
+#define CMD_TRANSPARENTBLT 0x00000004
#define CMD_MASK 0x00000007
#define CMD_DISABLE_CLIP 0x00000000
@@ -172,6 +179,9 @@ typedef struct _PKT_SC
#define CMD_Y_INC 0x00000000
#define CMD_Y_DEC 0x00100000
+#define CMD_NT_LINE 0x00000000
+#define CMD_NORMAL_LINE 0x00400000
+
#define CMD_DRAW_LAST_PIXEL 0x00000000
#define CMD_NOT_DRAW_LAST_PIXEL 0x00800000
@@ -359,6 +369,30 @@ typedef struct {
*(ULONG *)(MMIOREG_LINE_STYLE2) = (ULONG)(pat); \
} while (*(volatile ULONG *)(MMIOREG_LINE_STYLE2) != (ULONG)(pat)); \
}
+
+/* AIP Line CMD */
+#define AIPSetupLineXY_MMIO(x, y) \
+ { \
+ ULONG linexy; \
+ linexy = (ULONG)(((x & MASK_AIPLINE_X) << 16) + (y & MASK_AIPLINE_Y)); \
+ do { \
+ *(ULONG *)(MMIOREG_LINE_XY) = linexy; \
+ } while (*(volatile ULONG *)(MMIOREG_LINE_XY) != linexy); \
+ }
+#define AIPSetupLineXY2_MMIO(x, y) \
+ { \
+ ULONG linexy; \
+ linexy = (ULONG)(((x & MASK_AIPLINE_X) << 16) + (y & MASK_AIPLINE_Y)); \
+ do { \
+ *(ULONG *)(MMIOREG_LINE_XY2) = linexy; \
+ } while (*(volatile ULONG *)(MMIOREG_LINE_XY2) != linexy); \
+ }
+#define AIPSetupLineNumber_MMIO(no) \
+ { \
+ do { \
+ *(ULONG *)(MMIOREG_LINE_NUMBER) = (ULONG) no; \
+ } while (*(volatile ULONG *)(MMIOREG_LINE_NUMBER) != (ULONG) no); \
+ }
/* CMDQ Mode Macro */
#define mUpdateWritePointer *(ULONG *) (pAST->CMDQInfo.pjWritePort) = (pAST->CMDQInfo.ulWritePointer >>3)
@@ -482,3 +516,20 @@ typedef struct {
addr->PKT_SC_dwHeader = (ULONG) (PKT_NULL_CMD); \
addr->PKT_SC_dwData[0] = (ULONG) 0; \
}
+
+/* AIP Line CMD */
+#define AIPSetupLineXY(addr, x, y) \
+ { \
+ addr->PKT_SC_dwHeader = (ULONG)(PKT_SINGLE_CMD_HEADER + CMDQREG_LINE_XY); \
+ addr->PKT_SC_dwData[0] = (ULONG)(((x & MASK_AIPLINE_X) << 16) + (y & MASK_AIPLINE_Y)); \
+ }
+#define AIPSetupLineXY2(addr, x, y) \
+ { \
+ addr->PKT_SC_dwHeader = (ULONG)(PKT_SINGLE_CMD_HEADER + CMDQREG_LINE_XY2); \
+ addr->PKT_SC_dwData[0] = (ULONG)(((x & MASK_AIPLINE_X) << 16) + (y & MASK_AIPLINE_Y)); \
+ }
+#define AIPSetupLineNumber(addr, no) \
+ { \
+ addr->PKT_SC_dwHeader = (ULONG)(PKT_SINGLE_CMD_HEADER + CMDQREG_LINE_NUMBER); \
+ addr->PKT_SC_dwData[0] = (ULONG)(no); \
+ }