diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/crypto/algapi.h | 40 | ||||
-rw-r--r-- | include/linux/msm_mdp.h | 78 | ||||
-rw-r--r-- | include/linux/padata.h | 55 |
3 files changed, 173 insertions, 0 deletions
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h index fc0d575c71e0..59c3e5bd2c06 100644 --- a/include/crypto/algapi.h +++ b/include/crypto/algapi.h | |||
@@ -103,6 +103,23 @@ struct blkcipher_walk { | |||
103 | unsigned int blocksize; | 103 | unsigned int blocksize; |
104 | }; | 104 | }; |
105 | 105 | ||
106 | struct ablkcipher_walk { | ||
107 | struct { | ||
108 | struct page *page; | ||
109 | unsigned int offset; | ||
110 | } src, dst; | ||
111 | |||
112 | struct scatter_walk in; | ||
113 | unsigned int nbytes; | ||
114 | struct scatter_walk out; | ||
115 | unsigned int total; | ||
116 | struct list_head buffers; | ||
117 | u8 *iv_buffer; | ||
118 | u8 *iv; | ||
119 | int flags; | ||
120 | unsigned int blocksize; | ||
121 | }; | ||
122 | |||
106 | extern const struct crypto_type crypto_ablkcipher_type; | 123 | extern const struct crypto_type crypto_ablkcipher_type; |
107 | extern const struct crypto_type crypto_aead_type; | 124 | extern const struct crypto_type crypto_aead_type; |
108 | extern const struct crypto_type crypto_blkcipher_type; | 125 | extern const struct crypto_type crypto_blkcipher_type; |
@@ -173,6 +190,12 @@ int blkcipher_walk_virt_block(struct blkcipher_desc *desc, | |||
173 | struct blkcipher_walk *walk, | 190 | struct blkcipher_walk *walk, |
174 | unsigned int blocksize); | 191 | unsigned int blocksize); |
175 | 192 | ||
193 | int ablkcipher_walk_done(struct ablkcipher_request *req, | ||
194 | struct ablkcipher_walk *walk, int err); | ||
195 | int ablkcipher_walk_phys(struct ablkcipher_request *req, | ||
196 | struct ablkcipher_walk *walk); | ||
197 | void __ablkcipher_walk_complete(struct ablkcipher_walk *walk); | ||
198 | |||
176 | static inline void *crypto_tfm_ctx_aligned(struct crypto_tfm *tfm) | 199 | static inline void *crypto_tfm_ctx_aligned(struct crypto_tfm *tfm) |
177 | { | 200 | { |
178 | return PTR_ALIGN(crypto_tfm_ctx(tfm), | 201 | return PTR_ALIGN(crypto_tfm_ctx(tfm), |
@@ -283,6 +306,23 @@ static inline void blkcipher_walk_init(struct blkcipher_walk *walk, | |||
283 | walk->total = nbytes; | 306 | walk->total = nbytes; |
284 | } | 307 | } |
285 | 308 | ||
309 | static inline void ablkcipher_walk_init(struct ablkcipher_walk *walk, | ||
310 | struct scatterlist *dst, | ||
311 | struct scatterlist *src, | ||
312 | unsigned int nbytes) | ||
313 | { | ||
314 | walk->in.sg = src; | ||
315 | walk->out.sg = dst; | ||
316 | walk->total = nbytes; | ||
317 | INIT_LIST_HEAD(&walk->buffers); | ||
318 | } | ||
319 | |||
320 | static inline void ablkcipher_walk_complete(struct ablkcipher_walk *walk) | ||
321 | { | ||
322 | if (unlikely(!list_empty(&walk->buffers))) | ||
323 | __ablkcipher_walk_complete(walk); | ||
324 | } | ||
325 | |||
286 | static inline struct crypto_async_request *crypto_get_backlog( | 326 | static inline struct crypto_async_request *crypto_get_backlog( |
287 | struct crypto_queue *queue) | 327 | struct crypto_queue *queue) |
288 | { | 328 | { |
diff --git a/include/linux/msm_mdp.h b/include/linux/msm_mdp.h new file mode 100644 index 000000000000..d11fe0f2f956 --- /dev/null +++ b/include/linux/msm_mdp.h | |||
@@ -0,0 +1,78 @@ | |||
1 | /* include/linux/msm_mdp.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google Incorporated | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | #ifndef _MSM_MDP_H_ | ||
15 | #define _MSM_MDP_H_ | ||
16 | |||
17 | #include <linux/types.h> | ||
18 | |||
19 | #define MSMFB_IOCTL_MAGIC 'm' | ||
20 | #define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int) | ||
21 | #define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int) | ||
22 | |||
23 | enum { | ||
24 | MDP_RGB_565, /* RGB 565 planar */ | ||
25 | MDP_XRGB_8888, /* RGB 888 padded */ | ||
26 | MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planar w/ Cb is in MSB */ | ||
27 | MDP_ARGB_8888, /* ARGB 888 */ | ||
28 | MDP_RGB_888, /* RGB 888 planar */ | ||
29 | MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planar w/ Cr is in MSB */ | ||
30 | MDP_YCRYCB_H2V1, /* YCrYCb interleave */ | ||
31 | MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planar w/ Cr is in MSB */ | ||
32 | MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planar w/ Cr is in MSB */ | ||
33 | MDP_RGBA_8888, /* ARGB 888 */ | ||
34 | MDP_BGRA_8888, /* ABGR 888 */ | ||
35 | MDP_IMGTYPE_LIMIT /* Non valid image type after this enum */ | ||
36 | }; | ||
37 | |||
38 | enum { | ||
39 | PMEM_IMG, | ||
40 | FB_IMG, | ||
41 | }; | ||
42 | |||
43 | /* flag values */ | ||
44 | #define MDP_ROT_NOP 0 | ||
45 | #define MDP_FLIP_LR 0x1 | ||
46 | #define MDP_FLIP_UD 0x2 | ||
47 | #define MDP_ROT_90 0x4 | ||
48 | #define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR) | ||
49 | #define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR) | ||
50 | #define MDP_DITHER 0x8 | ||
51 | #define MDP_BLUR 0x10 | ||
52 | |||
53 | #define MDP_TRANSP_NOP 0xffffffff | ||
54 | #define MDP_ALPHA_NOP 0xff | ||
55 | |||
56 | struct mdp_rect { | ||
57 | u32 x, y, w, h; | ||
58 | }; | ||
59 | |||
60 | struct mdp_img { | ||
61 | u32 width, height, format, offset; | ||
62 | int memory_id; /* the file descriptor */ | ||
63 | }; | ||
64 | |||
65 | struct mdp_blit_req { | ||
66 | struct mdp_img src; | ||
67 | struct mdp_img dst; | ||
68 | struct mdp_rect src_rect; | ||
69 | struct mdp_rect dst_rect; | ||
70 | u32 alpha, transp_mask, flags; | ||
71 | }; | ||
72 | |||
73 | struct mdp_blit_req_list { | ||
74 | u32 count; | ||
75 | struct mdp_blit_req req[]; | ||
76 | }; | ||
77 | |||
78 | #endif /* _MSM_MDP_H_ */ | ||
diff --git a/include/linux/padata.h b/include/linux/padata.h index 51611da9c498..8d8406246eef 100644 --- a/include/linux/padata.h +++ b/include/linux/padata.h | |||
@@ -24,7 +24,19 @@ | |||
24 | #include <linux/workqueue.h> | 24 | #include <linux/workqueue.h> |
25 | #include <linux/spinlock.h> | 25 | #include <linux/spinlock.h> |
26 | #include <linux/list.h> | 26 | #include <linux/list.h> |
27 | #include <linux/timer.h> | ||
27 | 28 | ||
29 | /** | ||
30 | * struct padata_priv - Embedded to the users data structure. | ||
31 | * | ||
32 | * @list: List entry, to attach to the padata lists. | ||
33 | * @pd: Pointer to the internal control structure. | ||
34 | * @cb_cpu: Callback cpu for serializatioon. | ||
35 | * @seq_nr: Sequence number of the parallelized data object. | ||
36 | * @info: Used to pass information from the parallel to the serial function. | ||
37 | * @parallel: Parallel execution function. | ||
38 | * @serial: Serial complete function. | ||
39 | */ | ||
28 | struct padata_priv { | 40 | struct padata_priv { |
29 | struct list_head list; | 41 | struct list_head list; |
30 | struct parallel_data *pd; | 42 | struct parallel_data *pd; |
@@ -35,11 +47,29 @@ struct padata_priv { | |||
35 | void (*serial)(struct padata_priv *padata); | 47 | void (*serial)(struct padata_priv *padata); |
36 | }; | 48 | }; |
37 | 49 | ||
50 | /** | ||
51 | * struct padata_list | ||
52 | * | ||
53 | * @list: List head. | ||
54 | * @lock: List lock. | ||
55 | */ | ||
38 | struct padata_list { | 56 | struct padata_list { |
39 | struct list_head list; | 57 | struct list_head list; |
40 | spinlock_t lock; | 58 | spinlock_t lock; |
41 | }; | 59 | }; |
42 | 60 | ||
61 | /** | ||
62 | * struct padata_queue - The percpu padata queues. | ||
63 | * | ||
64 | * @parallel: List to wait for parallelization. | ||
65 | * @reorder: List to wait for reordering after parallel processing. | ||
66 | * @serial: List to wait for serialization after reordering. | ||
67 | * @pwork: work struct for parallelization. | ||
68 | * @swork: work struct for serialization. | ||
69 | * @pd: Backpointer to the internal control structure. | ||
70 | * @num_obj: Number of objects that are processed by this cpu. | ||
71 | * @cpu_index: Index of the cpu. | ||
72 | */ | ||
43 | struct padata_queue { | 73 | struct padata_queue { |
44 | struct padata_list parallel; | 74 | struct padata_list parallel; |
45 | struct padata_list reorder; | 75 | struct padata_list reorder; |
@@ -51,6 +81,20 @@ struct padata_queue { | |||
51 | int cpu_index; | 81 | int cpu_index; |
52 | }; | 82 | }; |
53 | 83 | ||
84 | /** | ||
85 | * struct parallel_data - Internal control structure, covers everything | ||
86 | * that depends on the cpumask in use. | ||
87 | * | ||
88 | * @pinst: padata instance. | ||
89 | * @queue: percpu padata queues. | ||
90 | * @seq_nr: The sequence number that will be attached to the next object. | ||
91 | * @reorder_objects: Number of objects waiting in the reorder queues. | ||
92 | * @refcnt: Number of objects holding a reference on this parallel_data. | ||
93 | * @max_seq_nr: Maximal used sequence number. | ||
94 | * @cpumask: cpumask in use. | ||
95 | * @lock: Reorder lock. | ||
96 | * @timer: Reorder timer. | ||
97 | */ | ||
54 | struct parallel_data { | 98 | struct parallel_data { |
55 | struct padata_instance *pinst; | 99 | struct padata_instance *pinst; |
56 | struct padata_queue *queue; | 100 | struct padata_queue *queue; |
@@ -60,8 +104,19 @@ struct parallel_data { | |||
60 | unsigned int max_seq_nr; | 104 | unsigned int max_seq_nr; |
61 | cpumask_var_t cpumask; | 105 | cpumask_var_t cpumask; |
62 | spinlock_t lock; | 106 | spinlock_t lock; |
107 | struct timer_list timer; | ||
63 | }; | 108 | }; |
64 | 109 | ||
110 | /** | ||
111 | * struct padata_instance - The overall control structure. | ||
112 | * | ||
113 | * @cpu_notifier: cpu hotplug notifier. | ||
114 | * @wq: The workqueue in use. | ||
115 | * @pd: The internal control structure. | ||
116 | * @cpumask: User supplied cpumask. | ||
117 | * @lock: padata instance lock. | ||
118 | * @flags: padata flags. | ||
119 | */ | ||
65 | struct padata_instance { | 120 | struct padata_instance { |
66 | struct notifier_block cpu_notifier; | 121 | struct notifier_block cpu_notifier; |
67 | struct workqueue_struct *wq; | 122 | struct workqueue_struct *wq; |