1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/*
* drivers/media/video/samsung/mfc50/mfc_shared_mem.h
*
* Header file for Samsung MFC (Multi Function Codec - FIMV) driver
*
* Key-Young Park, Copyright (c) 2009 Samsung Electronics
* http://www.samsungsemi.com/
*
* Change Logs
* 2009.10.08 - Apply 9/30 firmware(Key Young, Park)
* 2009.11.06 - clean & invalidate shared mem area (Key Young, Park)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _MFC_SHARED_MEM_H_
#define _MFC_SHARED_MEM_H_
#define MEM_WRITE(ADDR, VALUE) (*(volatile unsigned int *)(ADDR) = (VALUE))
#define MEM_READ(ADDR) (*(volatile unsigned int *)(ADDR))
enum mfc_shared {
EXTENEDED_DECODE_STATUS = 0x0,
SET_FRAME_TAG = 0x4,
GET_FRAME_TAG_TOP = 0x8,
GET_FRAME_TAG_BOT = 0xC,
PIC_TIME_TOP = 0x10,
PIC_TIME_BOT = 0x14,
START_BYTE_NUM = 0x18,
DEC_FRM_SIZE = 0x1C,
CROP_INFO1 = 0x20,
CROP_INFO2 = 0x24,
EXT_ENC_CONTROL = 0x28,
ENC_PARAM_CHANGE = 0x2C,
VOP_TIMING = 0x30,
HEC_PERIOD = 0x34,
METADATA_ENABLE = 0x38,
METADATA_STATUS = 0x3C,
METADATA_DISPLAY_INDEX = 0x40,
EXT_METADATA_START_ADDR = 0x44,
PUT_EXTRADATA = 0x48,
DBG_INFO_OUTPUT0 = 0x4C,
DBG_INFO_OUTPUT1 = 0x50,
DBG_INFO_INPUT0 = 0x54,
DBG_INFO_INPUT1 = 0x58,
REF_L0_PHY_IDX = 0x5C,
REF_L1_PHY_IDX = 0x60,
ALLOCATED_LUMA_DPB_SIZE = 0x64,
ALLOCATED_CHROMA_DPB_SIZE = 0x68,
ALLOCATED_MV_SIZE = 0x6C,
P_B_FRAME_QP = 0x70,
RC_CONTROL_ENABLE = 0xA0,
P720_LIMIT_ENABLE = 0xB4,
SHARED_MEM_MAX = 0x1000,
};
struct mfc_shared_mem {
unsigned int num_dpb;
unsigned int allocated_dpb_size;
unsigned int extended_decode_status;
unsigned int set_frame_tag;
unsigned int get_frame_tag_top;
unsigned int get_frame_tag_bot;
unsigned int pic_time_top;
unsigned int pic_time_bot;
unsigned int start_byte_num;
unsigned int dec_frm_size;
unsigned int crop_info1;
unsigned int crop_info2;
unsigned int ext_enc_control;
unsigned int enc_param_change;
unsigned int vop_timing;
unsigned int hec_period;
unsigned int P_B_frame_qp;
unsigned int metadata_enable;
unsigned int metadata_status;
unsigned int metadata_display_index;
unsigned int ext_metadata_start_addr;
unsigned int put_extradata;
unsigned int dbg_info_output0;
unsigned int dbg_info_output1;
unsigned int dbg_info_input0;
unsigned int dbg_info_input1;
unsigned int ref_l0_phy_idx;
unsigned int ref_l1_phy_idx;
unsigned int allocated_luma_dpb_size;
unsigned int allocated_chroma_dpb_size;
unsigned int allocated_mv_size;
unsigned int p720_limit_enable;
};
void mfc_write_shared_mem(unsigned int host_wr_addr, struct mfc_shared_mem *shared_mem);
void mfc_read_shared_mem(unsigned int host_wr_addr, struct mfc_shared_mem *shared_mem);
void mfc_print_shared_mem(unsigned int host_wr_addr);
#endif
|