2 * linux/drivers/media/video/s5p-mfc/s5p_mfc_reg.h
4 * Copyright (c) 2010 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
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.
13 #ifndef __S5P_MFC_REG_H_
14 #define __S5P_MFC_REG_H_ __FILE__
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
39 #define MFC_SYS_H2R_ARG4_ADDR S5P_FIMV_HOST2RISC_ARG4
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
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
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
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
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
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
92 #define _MFC_SET_REG(target, val) s5p_mfc_write_reg(val, MFC_##target##_ADDR)
93 #define MFC_SET_REG(target, val, shadow) \
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); \
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)
106 #define MFC_GET_ADR(target) \
107 (s5p_mfc_read_reg(MFC_##target##_ADR_ADDR) << MFC_##target##_ADR_SHFT)
109 #define s5p_mfc_clear_int_flags() \
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);\
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_ */