| .. | .. |
|---|
| 55 | 55 | #define RKVDEC_START_EN BIT(0) |
|---|
| 56 | 56 | |
|---|
| 57 | 57 | #define RKVDEC_REG_YSTRIDE_INDEX 20 |
|---|
| 58 | +#define RKVDEC_REG_CORE_CTRL_INDEX 28 |
|---|
| 59 | +#define RKVDEC_REG_FILM_IDX_MASK (0x3ff0000) |
|---|
| 58 | 60 | |
|---|
| 59 | 61 | #define RKVDEC_REG_RLC_BASE 0x200 |
|---|
| 60 | 62 | #define RKVDEC_REG_RLC_BASE_INDEX (128) |
|---|
| .. | .. |
|---|
| 148 | 150 | int slot_idx; |
|---|
| 149 | 151 | u32 need_hack; |
|---|
| 150 | 152 | |
|---|
| 151 | | - /* event for task wait timeout or session timeout */ |
|---|
| 152 | | - wait_queue_head_t wait; |
|---|
| 153 | + /* link table DMA buffer */ |
|---|
| 154 | + struct mpp_dma_buffer *table; |
|---|
| 153 | 155 | }; |
|---|
| 154 | 156 | |
|---|
| 155 | 157 | struct rkvdec2_session_priv { |
|---|
| .. | .. |
|---|
| 174 | 176 | struct mpp_clk_info core_clk_info; |
|---|
| 175 | 177 | struct mpp_clk_info cabac_clk_info; |
|---|
| 176 | 178 | struct mpp_clk_info hevc_cabac_clk_info; |
|---|
| 179 | + struct mpp_clk_info *cycle_clk; |
|---|
| 180 | + |
|---|
| 177 | 181 | u32 default_max_load; |
|---|
| 178 | 182 | #ifdef CONFIG_ROCKCHIP_MPP_PROC_FS |
|---|
| 179 | 183 | struct proc_dir_entry *procfs; |
|---|
| .. | .. |
|---|
| 203 | 207 | dma_addr_t rcb_iova; |
|---|
| 204 | 208 | struct page *rcb_page; |
|---|
| 205 | 209 | u32 rcb_min_width; |
|---|
| 210 | + u32 rcb_info_count; |
|---|
| 211 | + u32 rcb_infos[RKVDEC_MAX_RCB_NUM * 2]; |
|---|
| 206 | 212 | |
|---|
| 207 | 213 | /* for link mode */ |
|---|
| 208 | 214 | struct rkvdec_link_dev *link_dec; |
|---|
| 209 | 215 | struct mpp_dma_buffer *fix; |
|---|
| 210 | 216 | |
|---|
| 211 | | - u32 err_ref_hack; |
|---|
| 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; |
|---|
| 212 | 224 | }; |
|---|
| 213 | 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); |
|---|
| 214 | 230 | void *rkvdec2_alloc_task(struct mpp_session *session, |
|---|
| 215 | 231 | struct mpp_task_msgs *msgs); |
|---|
| 216 | 232 | int rkvdec2_free_task(struct mpp_session *session, struct mpp_task *mpp_task); |
|---|
| .. | .. |
|---|
| 219 | 235 | |
|---|
| 220 | 236 | int rkvdec2_result(struct mpp_dev *mpp, struct mpp_task *mpp_task, |
|---|
| 221 | 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); |
|---|
| 222 | 241 | |
|---|
| 223 | 242 | #endif |
|---|