.. | .. |
---|
33 | 33 | |
---|
34 | 34 | #define RKVDEC_DRIVER_NAME "mpp_rkvdec2" |
---|
35 | 35 | |
---|
| 36 | +#define RKVDEC_REG_IMPORTANT_BASE 0x2c |
---|
| 37 | +#define RKVDEC_REG_IMPORTANT_INDEX 11 |
---|
| 38 | +#define RKVDEC_SOFTREST_EN BIT(20) |
---|
| 39 | + |
---|
36 | 40 | #define RKVDEC_SESSION_MAX_BUFFERS 40 |
---|
37 | 41 | /* The maximum registers number of all the version */ |
---|
38 | 42 | #define RKVDEC_REG_NUM 279 |
---|
.. | .. |
---|
51 | 55 | #define RKVDEC_START_EN BIT(0) |
---|
52 | 56 | |
---|
53 | 57 | #define RKVDEC_REG_YSTRIDE_INDEX 20 |
---|
| 58 | +#define RKVDEC_REG_CORE_CTRL_INDEX 28 |
---|
| 59 | +#define RKVDEC_REG_FILM_IDX_MASK (0x3ff0000) |
---|
54 | 60 | |
---|
55 | 61 | #define RKVDEC_REG_RLC_BASE 0x200 |
---|
56 | 62 | #define RKVDEC_REG_RLC_BASE_INDEX (128) |
---|
.. | .. |
---|
71 | 77 | RKVDEC_BUF_EMPTY_STA |\ |
---|
72 | 78 | RKVDEC_TIMEOUT_STA |\ |
---|
73 | 79 | RKVDEC_ERROR_STA) |
---|
| 80 | +#define RKVDEC_PERF_WORKING_CNT 0x41c |
---|
74 | 81 | |
---|
75 | 82 | /* perf sel reference register */ |
---|
76 | 83 | #define RKVDEC_PERF_SEL_OFFSET 0x20000 |
---|
.. | .. |
---|
143 | 150 | int slot_idx; |
---|
144 | 151 | u32 need_hack; |
---|
145 | 152 | |
---|
146 | | - /* event for task wait timeout or session timeout */ |
---|
147 | | - wait_queue_head_t wait; |
---|
| 153 | + /* link table DMA buffer */ |
---|
| 154 | + struct mpp_dma_buffer *table; |
---|
148 | 155 | }; |
---|
149 | 156 | |
---|
150 | 157 | struct rkvdec2_session_priv { |
---|
.. | .. |
---|
169 | 176 | struct mpp_clk_info core_clk_info; |
---|
170 | 177 | struct mpp_clk_info cabac_clk_info; |
---|
171 | 178 | struct mpp_clk_info hevc_cabac_clk_info; |
---|
| 179 | + struct mpp_clk_info *cycle_clk; |
---|
| 180 | + |
---|
172 | 181 | u32 default_max_load; |
---|
173 | 182 | #ifdef CONFIG_ROCKCHIP_MPP_PROC_FS |
---|
174 | 183 | struct proc_dir_entry *procfs; |
---|
.. | .. |
---|
198 | 207 | dma_addr_t rcb_iova; |
---|
199 | 208 | struct page *rcb_page; |
---|
200 | 209 | u32 rcb_min_width; |
---|
| 210 | + u32 rcb_info_count; |
---|
| 211 | + u32 rcb_infos[RKVDEC_MAX_RCB_NUM * 2]; |
---|
201 | 212 | |
---|
202 | 213 | /* for link mode */ |
---|
203 | 214 | struct rkvdec_link_dev *link_dec; |
---|
204 | 215 | struct mpp_dma_buffer *fix; |
---|
| 216 | + |
---|
| 217 | + /* for ccu link mode */ |
---|
| 218 | + struct rkvdec2_ccu *ccu; |
---|
| 219 | + u32 core_mask; |
---|
| 220 | + u32 task_index; |
---|
| 221 | + /* mmu info */ |
---|
| 222 | + void __iomem *mmu_base; |
---|
| 223 | + u32 mmu_fault; |
---|
205 | 224 | }; |
---|
206 | 225 | |
---|
| 226 | +int mpp_set_rcbbuf(struct mpp_dev *mpp, struct mpp_session *session, |
---|
| 227 | + struct mpp_task *task); |
---|
| 228 | +int rkvdec2_task_init(struct mpp_dev *mpp, struct mpp_session *session, |
---|
| 229 | + struct rkvdec2_task *task, struct mpp_task_msgs *msgs); |
---|
207 | 230 | void *rkvdec2_alloc_task(struct mpp_session *session, |
---|
208 | 231 | struct mpp_task_msgs *msgs); |
---|
209 | 232 | int rkvdec2_free_task(struct mpp_session *session, struct mpp_task *mpp_task); |
---|
.. | .. |
---|
212 | 235 | |
---|
213 | 236 | int rkvdec2_result(struct mpp_dev *mpp, struct mpp_task *mpp_task, |
---|
214 | 237 | struct mpp_task_msgs *msgs); |
---|
| 238 | +int rkvdec2_reset(struct mpp_dev *mpp); |
---|
| 239 | + |
---|
| 240 | +void mpp_devfreq_set_core_rate(struct mpp_dev *mpp, enum MPP_CLOCK_MODE mode); |
---|
215 | 241 | |
---|
216 | 242 | #endif |
---|