Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa...
[pandora-kernel.git] / drivers / staging / msm / mdp_ppp_dq.h
1 /* Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved.
2  *
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 and
5  * only version 2 as published by the Free Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  */
12
13 #ifndef MDP_PPP_DQ_H
14 #define MDP_PPP_DQ_H
15
16 #include "msm_fb_def.h"
17
18 #define MDP_PPP_DEBUG_MSG MSM_FB_DEBUG
19
20 /* The maximum number of <Reg,Val> pairs in an mdp_ppp_roi_cmd_set structure (a
21  * node)
22  */
23 #define MDP_PPP_ROI_NODE_SIZE 32
24
25 /* ROI config command (<Reg,Val> pair) for MDP PPP block */
26 struct mdp_ppp_roi_cmd {
27         uint32_t reg;
28         uint32_t val;
29 };
30
31 /* ROI config commands for MDP PPP block are stored in a list of
32  * mdp_ppp_roi_cmd_set structures (nodes).
33  */
34 struct mdp_ppp_roi_cmd_set {
35         struct list_head node;
36         uint32_t ncmds; /* number of commands in this set (node). */
37         struct mdp_ppp_roi_cmd cmd[MDP_PPP_ROI_NODE_SIZE];
38 };
39
40 /* MDP PPP Display Job (DJob) */
41 struct mdp_ppp_djob {
42         struct list_head entry;
43         /* One ROI per MDP PPP DJob */
44         struct list_head roi_cmd_list;
45         struct mdp_blit_req req;
46         struct fb_info *info;
47         struct delayed_work cleaner;
48         struct file *p_src_file, *p_dst_file;
49 };
50
51 extern struct completion mdp_ppp_comp;
52 extern boolean mdp_ppp_waiting;
53 extern unsigned long mdp_timer_duration;
54
55 unsigned int mdp_ppp_async_op_get(void);
56 void mdp_ppp_async_op_set(unsigned int flag);
57 void msm_fb_ensure_mem_coherency_after_dma(struct fb_info *info,
58         struct mdp_blit_req *req_list, int req_list_count);
59 void mdp_ppp_put_img(struct file *p_src_file, struct file *p_dst_file);
60 void mdp_ppp_dq_init(void);
61 void mdp_ppp_outdw(uint32_t addr, uint32_t data);
62 struct mdp_ppp_djob *mdp_ppp_new_djob(void);
63 void mdp_ppp_clear_curr_djob(void);
64 void mdp_ppp_process_curr_djob(void);
65 int mdp_ppp_get_ret_code(void);
66 void mdp_ppp_djob_done(void);
67 void mdp_ppp_wait(void);
68
69 #endif /* MDP_PPP_DQ_H */