upload tizen1.0 source
[kernel/linux-2.6.36.git] / arch / arm / mach-s5pv310 / include / mach / regs-mfc.h
1 /*
2  * linux/arch/arm/mach-s5pv310/include/mach/regs-mfc.h
3  *
4  * Copyright (c) 2010 Samsung Electronics Co., Ltd.
5  *              http://www.samsung.com/
6  *
7  * Register definition for Samsung MFC (Multi Function Codec - FIMV) driver
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 2 as
11  * published by the Free Software Foundation.
12  */
13
14 #ifndef __REGS_MFC_H
15 #define __REGS_MFC_H __FILE__
16
17 #define S5P_MFCREG(x)                   (x)
18
19 #define MFC_START_ADDR                  S5P_MFCREG(0x0000)
20 #define MFC_END_ADDR                    S5P_MFCREG(0xe008)
21
22 #define MFC_SW_RESET                    S5P_MFCREG(0x0000)
23 #define MFC_RISC_HOST_INT               S5P_MFCREG(0x0008)
24
25 /* Command from HOST to RISC */
26 #define MFC_HOST2RISC_CMD               S5P_MFCREG(0x0030)
27 #define MFC_HOST2RISC_ARG1              S5P_MFCREG(0x0034)
28 #define MFC_HOST2RISC_ARG2              S5P_MFCREG(0x0038)
29 #define MFC_HOST2RISC_ARG3              S5P_MFCREG(0x003c)
30 #define MFC_HOST2RISC_ARG4              S5P_MFCREG(0x0040)
31
32 /* Command from RISC to HOST */
33 #define MFC_RISC2HOST_CMD               S5P_MFCREG(0x0044)
34 #define MFC_RISC2HOST_ARG1              S5P_MFCREG(0x0048)
35 #define MFC_RISC2HOST_ARG2              S5P_MFCREG(0x004c)
36 #define MFC_RISC2HOST_ARG3              S5P_MFCREG(0x0050)
37 #define MFC_RISC2HOST_ARG4              S5P_MFCREG(0x0054)
38
39 #define MFC_FW_VERSION                  S5P_MFCREG(0x0058)
40 #define MFC_SYS_MEM_SZ                  S5P_MFCREG(0x005c)
41 #define MFC_FW_STATUS                   S5P_MFCREG(0x0080)
42
43 /* Memory controller register */
44 #define MFC_MC_DRAMBASE_ADR_A           S5P_MFCREG(0x0508)
45 #define MFC_MC_DRAMBASE_ADR_B           S5P_MFCREG(0x050c)
46 #define MFC_MC_STATUS                   S5P_MFCREG(0x0510)
47
48 /* Common register */
49 #define MFC_SYS_MEM_ADR                 S5P_MFCREG(0x0600) /* firmware buffer */
50 #define MFC_CPB_BUF_ADR                 S5P_MFCREG(0x0604) /* stream buffer */
51 #define MFC_DESC_BUF_ADR                S5P_MFCREG(0x0608) /* descriptor buffer */
52 #define MFC_LUMA_ADR                    S5P_MFCREG(0x0700) /* Luma0 ~ Luma18 */
53 #define MFC_CHROMA_ADR                  S5P_MFCREG(0x0600) /* Chroma0 ~ Chroma18 */
54
55 #define MFC_B_RECON_LUMA_ADR            S5P_MFCREG(0x062c)
56 #define MFC_B_RECON_CHROMA_ADR          S5P_MFCREG(0x0630)
57
58 /* H264 decoding */
59 #define MFC_VERT_NB_MV_ADR              S5P_MFCREG(0x068c) /* vertical neighbor motion vector */
60 #define MFC_VERT_NB_IP_ADR              S5P_MFCREG(0x0690) /* neighbor pixels for intra pred */
61 #define MFC_MV_ADR                      S5P_MFCREG(0x0780) /* H264 motion vector */
62
63 /* H263/MPEG4/MPEG2/VC-1 decoding */
64 #define MFC_NB_DCAC_ADR                 S5P_MFCREG(0x068c) /* neighbor AC/DC coeff. buffer */
65 #define MFC_UP_NB_MV_ADR                S5P_MFCREG(0x0690) /* upper neighbor motion vector buffer */
66 #define MFC_SA_MV_ADR                   S5P_MFCREG(0x0694) /* subseq. anchor motion vector buffer */
67 #define MFC_OT_LINE_ADR                 S5P_MFCREG(0x0698) /* overlap transform line buffer */
68 #define MFC_BITPLANE3_ADR               S5P_MFCREG(0x069c) /* bitplane3 addr */
69 #define MFC_BITPLANE2_ADR               S5P_MFCREG(0x06a0) /* bitplane2 addr */
70 #define MFC_BITPLANE1_ADR               S5P_MFCREG(0x06a4) /* bitplane1 addr */
71 #define MFC_SP_ADR                      S5P_MFCREG(0x06a8) /* syntax parser addr */
72
73 /* Encoder register */
74 #define MFC_UP_MV_ADR                   S5P_MFCREG(0x0600) /* upper motion vector addr */
75 #define MFC_COLZERO_FLAG_ADR            S5P_MFCREG(0x0610) /* direct colocaated zero flag addr */
76 #define MFC_UP_INTRA_MD_ADR             S5P_MFCREG(0x0608) /* upper intra MD addr */
77 #define MFC_UP_INTRA_PRED_ADR           S5P_MFCREG(0x0740) /* upper intra PRED addr */
78 #define MFC_NBOR_INFO_ADR               S5P_MFCREG(0x0604) /* entropy engine's neighbor inform and AC/DC coeff. */
79
80 #define MFC_ENC_REF0_LUMA_ADR           S5P_MFCREG(0x061c) /* ref0 Luma addr */
81 #define MFC_ENC_REF0_CHROMA_ADR         S5P_MFCREG(0x0700) /* ref0 Chroma addr */
82 #define MFC_ENC_REF1_LUMA_ADR           S5P_MFCREG(0x0620) /* ref1 Luma addr */
83 #define MFC_ENC_REF1_CHROMA_ADR         S5P_MFCREG(0x0704) /* ref1 Chroma addr */
84 #define MFC_ENC_REF2_LUMA_ADR           S5P_MFCREG(0x0710) /* ref2 Luma addr */
85 #define MFC_ENC_REF2_CHROMA_ADR         S5P_MFCREG(0x0708) /* ref2 Chroma addr */
86 #define MFC_ENC_REF3_LUMA_ADR           S5P_MFCREG(0x0714) /* ref3 Luma addr */
87 #define MFC_ENC_REF3_CHROMA_ADR         S5P_MFCREG(0x070c) /* ref3 Chroma addr */
88
89 /* Codec common register */
90 #define MFC_ENC_HSIZE_PX                S5P_MFCREG(0x0818) /* frame width at encoder */
91 #define MFC_ENC_VSIZE_PX                S5P_MFCREG(0x081c) /* frame height at encoder */
92 #define MFC_ENC_PROFILE                 S5P_MFCREG(0x0830) /* profile register */
93 #define MFC_ENC_PIC_STRUCT              S5P_MFCREG(0x083c) /* picture field/frame flag */
94 #define MFC_ENC_LF_CTRL                 S5P_MFCREG(0x0848) /* loop filter control */
95 #define MFC_ENC_ALPHA_OFF               S5P_MFCREG(0x084c) /* loop filter alpha offset */
96 #define MFC_ENC_BETA_OFF                S5P_MFCREG(0x0850) /* loop filter beta offset */
97 #define MFC_MR_BUSIF_CTRL               S5P_MFCREG(0x0854) /* hidden, bus interface ctrl */
98 #define MFC_ENC_PXL_CACHE_CTRL          S5P_MFCREG(0x0a00) /* pixel cache control */
99
100 /* Channel & stream interface register */
101 #define MFC_SI_RTN_CHID                 S5P_MFCREG(0x2000) /* Return CH instance ID register */
102 #define MFC_SI_CH1_INST_ID              S5P_MFCREG(0x2040) /* codec instance ID */
103 #define MFC_SI_CH2_INST_ID              S5P_MFCREG(0x2080) /* codec instance ID */
104
105 /* Decoder */
106 #define MFC_SI_VRESOL                   S5P_MFCREG(0x2004) /* vertical resolution of decoder */
107 #define MFC_SI_HRESOL                   S5P_MFCREG(0x2008) /* horizontal resolution of decoder */
108 #define MFC_SI_BUF_NUMBER               S5P_MFCREG(0x200c) /* number of frames in the decoded pic */
109 #define MFC_SI_DISPLAY_Y_ADR            S5P_MFCREG(0x2010) /* luma address of displayed pic */
110 #define MFC_SI_DISPLAY_C_ADR            S5P_MFCREG(0x2014) /* chroma address of displayed pic */
111 #define MFC_SI_FRM_COUNT                S5P_MFCREG(0x2018) /* the number of frames so far decoded */
112 #define MFC_SI_DISPLAY_STATUS           S5P_MFCREG(0x201c) /* Display status of decoded picture */
113 #define MFC_SI_FRAME_TYPE               S5P_MFCREG(0x2020) /* frame type such as skip/I/P/B */
114 #define MFC_SI_DECODE_Y_ADR             S5P_MFCREG(0x2024) /* luma address of decoded pic */
115 #define MFC_SI_DECODE_C_ADR             S5P_MFCREG(0x2028) /* chroma address of decoded pic */
116 #define MFC_SI_DECODE_STATUS            S5P_MFCREG(0x202c) /* decoded status */
117
118 #define MFC_SI_CH1_ES_ADR               S5P_MFCREG(0x2044) /* start addr of stream buf */
119 #define MFC_SI_CH1_ES_SIZE              S5P_MFCREG(0x2048) /* size of stream buf */
120 #define MFC_SI_CH1_DESC_ADR             S5P_MFCREG(0x204c) /* addr of descriptor buf */
121 #define MFC_SI_CH1_CPB_SIZE             S5P_MFCREG(0x2058) /* max size of coded pic. buf */
122 #define MFC_SI_CH1_DESC_SIZE            S5P_MFCREG(0x205c) /* max size of descriptor buf */
123 #define MFC_SI_CH1_RELEASE_BUF          S5P_MFCREG(0x2060) /* release buffer register */
124 #define MFC_SI_CH1_HOST_WR_ADR          S5P_MFCREG(0x2064) /* shared memory address */
125 #define MFC_SI_CH1_DPB_CONF_CTRL        S5P_MFCREG(0x2068) /* DPB Configuration Control Register */
126
127 #define MFC_SI_CH2_ES_ADR               S5P_MFCREG(0x2084) /* start addr of stream buf */
128 #define MFC_SI_CH2_ES_SIZE              S5P_MFCREG(0x2088) /* size of stream buf */
129 #define MFC_SI_CH2_DESC_ADR             S5P_MFCREG(0x208c) /* addr of descriptor buf */
130 #define MFC_SI_CH2_CPB_SIZE             S5P_MFCREG(0x2098) /* max size of coded pic. buf */
131 #define MFC_SI_CH2_DESC_SIZE            S5P_MFCREG(0x209c) /* max size of descriptor buf */
132 #define MFC_SI_CH2_RELEASE_BUF          S5P_MFCREG(0x20a0) /* release buffer register */
133 #define MFC_SI_CH2_HOST_WR_ADR          S5P_MFCREG(0x20a4) /* shared memory address */
134 #define MFC_SI_CH2_DPB_CONF_CTRL        S5P_MFCREG(0x20a8) /* DPB Configuration Control Register */
135
136 #define MFC_SI_FIMV1_VRESOL             S5P_MFCREG(0x2050) /* vertical resolution */
137 #define MFC_SI_FIMV1_HRESOL             S5P_MFCREG(0x2054) /* horizontal resolution */
138 #define MFC_CRC_LUMA0                   S5P_MFCREG(0x2030) /* luma crc data per frame(or top field) */
139 #define MFC_CRC_CHROMA0                 S5P_MFCREG(0x2034) /* chroma crc data per frame(or top field) */
140 #define MFC_CRC_LUMA1                   S5P_MFCREG(0x2038) /* luma crc data per bottom field */
141 #define MFC_CRC_CHROMA1                 S5P_MFCREG(0x203c) /* chroma crc data per bottom field */
142
143 /* Encoder */
144 #define MFC_ENC_SI_STRM_SIZE            S5P_MFCREG(0x2004) /* stream size */
145 #define MFC_ENC_SI_PIC_CNT              S5P_MFCREG(0x2008) /* picture count */
146 #define MFC_ENC_SI_WRITE_PTR            S5P_MFCREG(0x200c) /* write pointer */
147 #define MFC_ENC_SI_SLICE_TYPE           S5P_MFCREG(0x2010) /* slice type(I/P/B/IDR) */
148 #define MFC_ENCODED_Y_ADDR              S5P_MFCREG(0x2014) /* the address of the encoded luminance picture */
149 #define MFC_ENCODED_C_ADDR              S5P_MFCREG(0x2018) /* the address of the encoded chrominance picture */
150
151 #define MFC_ENC_SI_CH1_SB_ADR           S5P_MFCREG(0x2044) /* addr of stream buf */
152 #define MFC_ENC_SI_CH1_SB_SIZE          S5P_MFCREG(0x204c) /* size of stream buf */
153 #define MFC_ENC_SI_CH1_CUR_Y_ADR        S5P_MFCREG(0x2050) /* current Luma addr */
154 #define MFC_ENC_SI_CH1_CUR_C_ADR        S5P_MFCREG(0x2054) /* current Chroma addr */
155 #define MFC_ENC_SI_CH1_FRAME_INS        S5P_MFCREG(0x2058) /* frame insertion control register */
156
157 #define MFC_ENC_SI_CH2_SB_ADR           S5P_MFCREG(0x2084) /* addr of stream buf */
158 #define MFC_ENC_SI_CH2_SB_SIZE          S5P_MFCREG(0x208c) /* size of stream buf */
159 #define MFC_ENC_SI_CH2_CUR_Y_ADR        S5P_MFCREG(0x2090) /* current Luma addr */
160 #define MFC_ENC_SI_CH2_CUR_C_ADR        S5P_MFCREG(0x2094) /* current Chroma addr */
161 #define MFC_ENC_SI_CH2_FRAME_INS        S5P_MFCREG(0x2098) /* frame insertion control register */
162
163 #define MFC_ENC_PIC_TYPE_CTRL           S5P_MFCREG(0xc504) /* pic type level control */
164 #define MFC_ENC_B_RECON_WRITE_ON        S5P_MFCREG(0xc508) /* B frame recon data write cotrl */
165 #define MFC_ENC_MSLICE_CTRL             S5P_MFCREG(0xc50c) /* multi slice control */
166 #define MFC_ENC_MSLICE_MB               S5P_MFCREG(0xc510) /* MB number in the one slice */
167 #define MFC_ENC_MSLICE_BIT              S5P_MFCREG(0xc514) /* bit count number for one slice */
168 #define MFC_ENC_CIR_CTRL                S5P_MFCREG(0xc518) /* number of intra refresh MB */
169 #define MFC_ENC_MAP_FOR_CUR             S5P_MFCREG(0xc51c) /* linear or 64x32 tiled mode */
170 #define MFC_ENC_PADDING_CTRL            S5P_MFCREG(0xc520) /* padding control */
171
172 #define MFC_ENC_INTRA_BIAS              S5P_MFCREG(0xc588) /* intra mode bias for the MB mode */
173 #define MFC_ENC_BI_DIRECT_BIAS          S5P_MFCREG(0xc58c) /* bi-directional mode bias for the MB mode */
174
175 #define MFC_ENC_RC_CONFIG               S5P_MFCREG(0xc5a0) /* RC config */
176 #define MFC_ENC_RC_BIT_RATE             S5P_MFCREG(0xc5a8) /* bit rate */
177 #define MFC_ENC_RC_QBOUND               S5P_MFCREG(0xc5ac) /* max/min QP */
178 #define MFC_ENC_RC_RPARA                S5P_MFCREG(0xc5b0) /* rate control reaction coeff. */
179 #define MFC_ENC_RC_MB_CTRL              S5P_MFCREG(0xc5b4) /* MB adaptive scaling */
180
181 /* Encoder for H264 */
182 #define MFC_ENC_H264_ENTRP_MODE         S5P_MFCREG(0xd004) /* CAVLC or CABAC */
183 #define MFC_ENC_H264_ALPHA_OFF          S5P_MFCREG(0xd008) /* loop filter alpha offset */
184 #define MFC_ENC_H264_BETA_OFF           S5P_MFCREG(0xd00c) /* loop filter beta offset */
185 #define MFC_ENC_H264_NUM_OF_REF         S5P_MFCREG(0xd010) /* number of reference for P/B */
186 #define MFC_ENC_H264_TRANS_FLAG         S5P_MFCREG(0xd034) /* 8x8 transform flag in PPS & high profile */
187
188 #define MFC_ENC_RC_FRAME_RATE           S5P_MFCREG(0xd0d0) /* frame rate */
189
190 /* Encoder for MPEG4 */
191 #define MFC_ENC_MPEG4_QUART_PXL         S5P_MFCREG(0xe008) /* quarter pel interpolation control */
192
193 #endif /* __REGS_MFC_H */