1 ////////////////////////////////////////////////////
2 // Parrot proprietary DCT registers
3 ////////////////////////////////////////////////////
5 // Parrot DCT address: 0xD00B0000
6 #define P6_BASE_ADDRESS 0xD00B0000
8 // H264 general registers
9 #define H264_STATUS 0x000 // Status Register
10 #define H264_ITEN 0x004 // Interrupt Enable Register
11 #define H264_ITACK 0x008 // Interrupt Acknowledge Register
12 #define H264_DMA 0x010 // Dma Register
13 #define H264_DMAINT 0x02C
14 #define H264_RESET 0x03C
15 #define H264_START 0x00C
16 #define H264_CONFIG 0x028
17 #define H264_LINESIZE 0x01C
18 #define H264_FRAMESIZE 0x020
19 #define H264_MB_ADDR 0x024
20 #define H264_QP 0x018 // ME/MC Y/CC quantizer
23 #define DCT_CONTROL 0x040 // Control Register
24 #define DCT_ORIG_Y_ADDR 0x044 // Address Register
25 #define DCT_ORIG_CU_ADDR 0x048 // Address Register
26 #define DCT_ORIG_CV_ADDR 0x04C // Address Register
27 #define DCT_DEST_Y_ADDR 0x050 // Address Register
28 #define DCT_DEST_CU_ADDR 0x054 // Address Register
29 #define DCT_DEST_CV_ADDR 0x058 // Address Register
30 #define DCT_LINEOFFSET 0x05C // Line size
31 #define DCT_Q_ADDR 0x064 // quantization table
32 //#define DCT_DEBUG 0x030? // Debug register
33 //#define DCT_SIGNATURE 0x034? // Signature Register
36 // Registers bitwise definitions
38 #define DCT_STATUS_END_OK (1<<0) // DCT Done
39 //#define DCT_STATUS_ERROR (1<<1) // DCT Error ?
41 // Interrupt enable register
42 #define DCT_ITEN_END_OK (1<<0) // IT Done enable
43 //#define DCT_ITEN_ERROR (1<<1) // IT Error enable ?
45 // Interrupt Acknowledge register
46 #define DCT_ITACK_END_OK (1<<0) // IT Done acknowledge
47 //#define DCT_ITACK_ERROR (1<<1) // IT Error acknowledge ?
49 // DCT control mode (forward or inverse dct)
50 #define DCT_CTRLMODE_FDCT 0
51 #define DCT_CTRLMODE_IDCT 1
54 DCT_DMA_INCR = 0, //!< 4 bytes DMA burst
55 DCT_DMA_INCR4 = 1, //!< 16 bytes DMA burst
56 DCT_DMA_INCR8 = 2, //!< 32 bytes DMA burst
57 DCT_DMA_INCR16 = 3, //!< 64 bytes DMA burst
62 #define ME_ALGORITHM 0x100 // I/P frame choice, disable/enable pred_intra
63 #define ME_RESULT 0x148 // in I-frame mode : intra mode result (intra 16x16 mod0/1/2/3 or intra 4x4)
64 #define ME_CMB_FRAME_ADDRY 0x11C // input frame (to be encoded) Y addr
65 #define ME_CMB_FRAME_ADDRCU 0x120 // input frame (to be encoded) U addr
66 #define ME_CMB_FRAME_ADDRCV 0x124 // input frame (to be encoded) V addr
67 #define ME_IPRED0 0x16C // intra4*4 pred mode results (first 8 4*4 blocks)
68 #define ME_IPRED1 0x170 // intra4*4 pred mode results (last 8 4*4 blocks)
69 #define ME_ANALYSIS 0x118 // define MB split pattern (P-frame)
70 #define ME_PAT_LIST 0x104 // define/enable search patterns (P-frame)
71 #define ME_PAT_RESIZE 0x108 //
72 #define ME_SW_FRAME_ADDRY 0x128 // luma reference frame for P-frame
73 #define ME_SW_FRAME_ADDRCC 0x12C // chroma reference frame for P-frame
74 #define ME_SW_CONFIG 0x140 // search window size
75 #define ME_PRED_BASE_REG 0x14C // MV result
79 #define ME_ALGO_DIS_MVP_INTRA_PRED (1<<5) // diasable intra pred and inter MV pred
80 #define ME_ALGO_I_FRAME (1<<4) // configure ME to encode en I frame
81 #define ME_ALGO_P_FRAME (0<<4) // configure ME to encode en I frame
83 #define ME_ANAL_4x4 (1<<22)
84 #define ME_ANAL_4x8 (1<<21)
85 #define ME_ANAL_8x4 (1<<20)
86 #define ME_ANAL_8x8 (1<<19)
87 #define ME_ANAL_8x16 (1<<18)
88 #define ME_ANAL_16x8 (1<<17)
89 #define ME_ANAL_16x16 (1<<16)
91 #define ME_PAT_SMALL_DIAMOND 0x08
92 #define ME_PAT_BIG_DIAMOND 0x09
93 #define ME_PAT_SMALL_SQUARE 0x0A
94 #define ME_PAT_BIG_SQUARE 0x0B
97 #define DEB_ME_FRAME_ADDRY 0x0A0 // deb reconstructed picture (reference)
98 #define DEB_ME_FRAME_ADDRCC 0x0A4 // deb reconstructed picture (reference)
99 #define DEB_ME_TMP_ADDR 0x0A8
100 #define DEB_MC_TMP_ADDR 0x0AC
101 #define DEB_CONFIG 0x080
102 #define DEB_PARAM 0x084
103 #define DEB_QPS_LEFT 0x08C
104 #define DEB_QPS_TOP 0x090
107 #define MC_MB_INFO 0x200
109 #define IS_INTRA_4x4(a) ((a&0x1F) == 0)
110 #define IS_INTRA_16x16(a) ((a&0x1F) != 0)
111 #define CHROMA_MODE(a) ((a>>16)&0x03)
112 #define INTRA_16x16_MODE(a) ((a&0x1F)-1 )
113 #define INTER_16_8_PARTITION(a) (a&0x1F)
115 #define I_MB_COMPLETION_FLAG 0x0010101
116 #define I_MB_COMPLETION_MASK 0x00FFFFF
117 #define P_MB_COMPLETION_FLAG 0x1010101
118 #define P_MB_COMPLETION_MASK 0xFFFFFFF