2 * linux/arch/arm/mach-s5pv310/include/mach/regs-mfc.h
4 * Copyright (c) 2010 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
7 * Register definition for Samsung MFC (Multi Function Codec - FIMV) driver
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.
15 #define __REGS_MFC_H __FILE__
17 #define S5P_MFCREG(x) (x)
19 #define MFC_START_ADDR S5P_MFCREG(0x0000)
20 #define MFC_END_ADDR S5P_MFCREG(0xe008)
22 #define MFC_SW_RESET S5P_MFCREG(0x0000)
23 #define MFC_RISC_HOST_INT S5P_MFCREG(0x0008)
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)
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)
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)
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)
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 */
55 #define MFC_B_RECON_LUMA_ADR S5P_MFCREG(0x062c)
56 #define MFC_B_RECON_CHROMA_ADR S5P_MFCREG(0x0630)
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 */
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 */
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. */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
188 #define MFC_ENC_RC_FRAME_RATE S5P_MFCREG(0xd0d0) /* frame rate */
190 /* Encoder for MPEG4 */
191 #define MFC_ENC_MPEG4_QUART_PXL S5P_MFCREG(0xe008) /* quarter pel interpolation control */
193 #endif /* __REGS_MFC_H */