upload tizen1.0 source
[kernel/linux-2.6.36.git] / drivers / media / video / s5p-mfc / s5p_mfc_reg.h
1 /*
2  * linux/drivers/media/video/s5p-mfc/s5p_mfc_reg.h
3  *
4  * Copyright (c) 2010 Samsung Electronics Co., Ltd.
5  *              http://www.samsung.com/
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  */
12
13 #ifndef __S5P_MFC_REG_H_
14 #define __S5P_MFC_REG_H_ __FILE__
15
16 #define MFC_SYS_SW_RESET_ADDR           S5P_FIMV_SW_RESET
17 #define MFC_SYS_SW_RESET_MASK           0x3FF
18 #define MFC_SYS_SW_RESET_SHFT           0x0
19 #define MFC_SYS_R2H_INT_ADDR            S5P_FIMV_RISC_HOST_INT
20 #define MFC_SYS_R2H_INT_MASK            0x1
21 #define MFC_SYS_R2H_INT_SHFT            0x0
22 #define MFC_SYS_H2R_CMD_ADDR            S5P_FIMV_HOST2RISC_CMD
23 #define MFC_SYS_H2R_ARG1_ADDR           S5P_FIMV_HOST2RISC_ARG1
24 #define MFC_SYS_CODEC_TYPE_ADDR         S5P_FIMV_HOST2RISC_ARG1
25 #define MFC_SYS_INST_ID_ADDR            S5P_FIMV_HOST2RISC_ARG1
26 #define MFC_SYS_FW_MEM_SIZE_ADDR        S5P_FIMV_HOST2RISC_ARG1
27 #define MFC_SYS_H2R_ARG2_ADDR           S5P_FIMV_HOST2RISC_ARG2
28 #define MFC_SYS_CRC_GEN_EN_ADDR         S5P_FIMV_HOST2RISC_ARG2
29 #define MFC_SYS_CRC_GEN_EN_MASK         0x1
30 #define MFC_SYS_CRC_GEN_EN_SHFT         0x1F
31 #define MFC_SYS_ENC_PIXEL_CACHE_ADDR    S5P_FIMV_HOST2RISC_ARG2
32 #define MFC_SYS_ENC_PIXEL_CACHE_MASK    0x2
33 #define MFC_SYS_ENC_PIXEL_CACHE_SHFT    0x0
34 #define MFC_SYS_DEC_PIXEL_CACHE_ADDR    S5P_FIMV_HOST2RISC_ARG2
35 #define MFC_SYS_DEC_PIXEL_CACHE_MASK    0x2
36 #define MFC_SYS_DEC_PIXEL_CACHE_SHFT    0x0
37 #define MFC_SYS_H2R_ARG3_ADDR           S5P_FIMV_HOST2RISC_ARG3
38
39 #define MFC_SYS_H2R_ARG4_ADDR           S5P_FIMV_HOST2RISC_ARG4
40
41 #define MFC_SYS_FW_VER_YEAR_ADDR        S5P_FIMV_FW_VERSION
42 #define MFC_SYS_FW_VER_YEAR_MASK        0xFF
43 #define MFC_SYS_FW_VER_YEAR_SHFT        16
44 #define MFC_SYS_FW_VER_MONTH_ADDR       S5P_FIMV_FW_VERSION
45 #define MFC_SYS_FW_VER_MONTH_MASK       0xFF
46 #define MFC_SYS_FW_VER_MONTH_SHFT       8
47 #define MFC_SYS_FW_VER_DATE_ADDR        S5P_FIMV_FW_VERSION
48 #define MFC_SYS_FW_VER_DATE_MASK        0xFF
49 #define MFC_SYS_FW_VER_DATE_SHFT        0
50
51 #define MFC_DEC_DISPLAY_Y_ADR_ADDR      S5P_FIMV_SI_DISPLAY_Y_ADR
52 #define MFC_DEC_DISPLAY_Y_ADR_MASK      0xFFFFFFFF
53 #define MFC_DEC_DISPLAY_Y_ADR_SHFT      S5P_FIMV_MEM_OFFSET
54 #define MFC_DEC_DISPLAY_C_ADR_ADDR      S5P_FIMV_SI_DISPLAY_C_ADR
55 #define MFC_DEC_DISPLAY_C_ADR_MASK      0xFFFFFFFF
56 #define MFC_DEC_DISPLAY_C_ADR_SHFT      S5P_FIMV_MEM_OFFSET
57
58 #define MFC_DEC_DISPLAY_STATUS_ADDR     MFC_SI_DISPLAY_STATUS
59 #define MFC_DEC_DISPLAY_STATUS_MASK     0x7
60 #define MFC_DEC_DISPLAY_STATUS_SHFT     0x0
61 #define MFC_DEC_DISPLAY_INTERACE_ADDR   MFC_SI_DISPLAY_STATUS
62 #define MFC_DEC_DISPLAY_INTERACE_MASK   0x1
63 #define MFC_DEC_DISPLAY_INTERACE_SHFT   0x3
64 #define MFC_DEC_DISPLAY_RES_CHG_ADDR    MFC_SI_DISPLAY_STATUS
65 #define MFC_DEC_DISPLAY_RES_CHG_MASK    0x3
66 #define MFC_DEC_DISPLAY_RES_CHG_SHFT    0x4
67
68 #define MFC_DEC_DECODE_FRAME_TYPE_ADDR  S5P_FIMV_DECODE_FRAME_TYPE
69 #define MFC_DEC_DECODE_FRAME_TYPE_MASK  0x7
70 #define MFC_DEC_DECODE_FRAME_TYPE_SHFT  0
71
72 #define MFC_DEC_DECODE_STATUS_ADDR      MFC_SI_DECODE_STATUS
73 #define MFC_DEC_DECODE_STATUS_MASK      0x7
74 #define MFC_DEC_DECODE_STATUS_SHFT      0x0
75 #define MFC_DEC_DECODE_INTERACE_ADDR    MFC_SI_DECODE_STATUS
76 #define MFC_DEC_DECODE_INTERACE_MASK    0x1
77 #define MFC_DEC_DECODE_INTERACE_SHFT    0x3
78 #define MFC_DEC_DECODE_NUM_CRC_ADDR     MFC_SI_DECODE_STATUS
79 #define MFC_DEC_DECODE_NUM_CRC_MASK     0x1
80 #define MFC_DEC_DECODE_NUM_CRC_SHFT     0x4
81 #define MFC_DEC_DECODE_GEN_CRC_ADDR     MFC_SI_DECODE_STATUS
82 #define MFC_DEC_DECODE_GEN_CRC_MASK     0x1
83 #define MFC_DEC_DECODE_GEN_CRC_SHFT     0x5
84
85 #define MFC_ENC_LEVEL_ADDR      MFC_ENC_PROFILE
86 #define MFC_ENC_LEVEL_MASK      0xFF
87 #define MFC_ENC_LEVEL_SHFT      0x8
88 #define MFC_ENC_PROFILE_ADDR    MFC_ENC_PROFILE
89 #define MFC_ENC_PROFILE_MASK    0x3
90 #define MFC_ENC_PROFILE_SHFT    0x0
91
92 #define _MFC_SET_REG(target, val)       s5p_mfc_write_reg(val, MFC_##target##_ADDR)
93 #define MFC_SET_REG(target, val, shadow)                                        \
94         do {                                                                    \
95                 shadow = s5p_mfc_read_reg(MFC_##target##_ADDR);                 \
96                 shadow &= ~(MFC_##target##_MASK << MFC_##target##_SHFT);        \
97                 shadow |= ((val & MFC_##target##_MASK) << MFC_##target##_SHFT); \
98                 s5p_mfc_write_reg(shadow, MFC_##target##_ADDR);                 \
99         } while (0)
100
101 #define _MFC_GET_REG(target)    s5p_mfc_read_reg(MFC_##target##_ADDR)
102 #define MFC_GET_REG(target)                                             \
103         ((s5p_mfc_read_reg(MFC_##target##_ADDR) >> MFC_##target##_SHFT) \
104         & MFC_##target##_MASK)
105
106 #define MFC_GET_ADR(target)                                             \
107         (s5p_mfc_read_reg(MFC_##target##_ADR_ADDR) << MFC_##target##_ADR_SHFT)
108
109 #define s5p_mfc_clear_int_flags()                               \
110         do {                                                    \
111                 s5p_mfc_write_reg(0, S5P_FIMV_RISC_HOST_INT);   \
112                 s5p_mfc_write_reg(0, S5P_FIMV_RISC2HOST_CMD);   \
113                 s5p_mfc_write_reg(0xffff, S5P_FIMV_SI_RTN_CHID);\
114         } while (0)
115
116 void s5p_mfc_init_reg(void __iomem *base);
117 void s5p_mfc_write_reg(unsigned int data, unsigned int offset);
118 unsigned int s5p_mfc_read_reg(unsigned int offset);
119 #endif /* __S5P_MFC_REG_H_ */