forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/video/rockchip/mpp/mpp_rkvdec2.h
....@@ -33,6 +33,10 @@
3333
3434 #define RKVDEC_DRIVER_NAME "mpp_rkvdec2"
3535
36
+#define RKVDEC_REG_IMPORTANT_BASE 0x2c
37
+#define RKVDEC_REG_IMPORTANT_INDEX 11
38
+#define RKVDEC_SOFTREST_EN BIT(20)
39
+
3640 #define RKVDEC_SESSION_MAX_BUFFERS 40
3741 /* The maximum registers number of all the version */
3842 #define RKVDEC_REG_NUM 279
....@@ -51,6 +55,8 @@
5155 #define RKVDEC_START_EN BIT(0)
5256
5357 #define RKVDEC_REG_YSTRIDE_INDEX 20
58
+#define RKVDEC_REG_CORE_CTRL_INDEX 28
59
+#define RKVDEC_REG_FILM_IDX_MASK (0x3ff0000)
5460
5561 #define RKVDEC_REG_RLC_BASE 0x200
5662 #define RKVDEC_REG_RLC_BASE_INDEX (128)
....@@ -71,6 +77,7 @@
7177 RKVDEC_BUF_EMPTY_STA |\
7278 RKVDEC_TIMEOUT_STA |\
7379 RKVDEC_ERROR_STA)
80
+#define RKVDEC_PERF_WORKING_CNT 0x41c
7481
7582 /* perf sel reference register */
7683 #define RKVDEC_PERF_SEL_OFFSET 0x20000
....@@ -143,8 +150,8 @@
143150 int slot_idx;
144151 u32 need_hack;
145152
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;
148155 };
149156
150157 struct rkvdec2_session_priv {
....@@ -169,6 +176,8 @@
169176 struct mpp_clk_info core_clk_info;
170177 struct mpp_clk_info cabac_clk_info;
171178 struct mpp_clk_info hevc_cabac_clk_info;
179
+ struct mpp_clk_info *cycle_clk;
180
+
172181 u32 default_max_load;
173182 #ifdef CONFIG_ROCKCHIP_MPP_PROC_FS
174183 struct proc_dir_entry *procfs;
....@@ -198,12 +207,26 @@
198207 dma_addr_t rcb_iova;
199208 struct page *rcb_page;
200209 u32 rcb_min_width;
210
+ u32 rcb_info_count;
211
+ u32 rcb_infos[RKVDEC_MAX_RCB_NUM * 2];
201212
202213 /* for link mode */
203214 struct rkvdec_link_dev *link_dec;
204215 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;
205224 };
206225
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);
207230 void *rkvdec2_alloc_task(struct mpp_session *session,
208231 struct mpp_task_msgs *msgs);
209232 int rkvdec2_free_task(struct mpp_session *session, struct mpp_task *mpp_task);
....@@ -212,5 +235,8 @@
212235
213236 int rkvdec2_result(struct mpp_dev *mpp, struct mpp_task *mpp_task,
214237 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);
215241
216242 #endif