blob: 56b65d4bd45edcd7c59d67d758d50fcaeba947de [file] [log] [blame]
Abhijit Kulkarni3e3e0d22016-06-24 17:56:13 -04001/* Copyright (c) 2015-2016, The Linux Foundation. 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#include <linux/kernel.h>
14#include "sde_mdp_formats.h"
15
16static struct sde_mdp_format_params sde_mdp_format_map[] = {
17 INTERLEAVED_RGB_FMT(ARGB8888,
18 COLOR_8BIT, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
19 C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
20 true, 4, 0),
21
22 INTERLEAVED_RGB_FMT(ABGR8888,
23 COLOR_8BIT, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
24 C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
25 true, 4, 0),
26
27 INTERLEAVED_RGB_FMT(RGBA8888,
28 COLOR_8BIT, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
29 C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
30 true, 4, 0),
31
32 INTERLEAVED_RGB_FMT(BGRA8888,
33 COLOR_8BIT, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
34 C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
35 true, 4, 0),
36
37 INTERLEAVED_RGB_FMT(XRGB8888,
38 COLOR_8BIT, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
39 C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
40 true, 4, 0),
41
42 INTERLEAVED_RGB_FMT(RGB888,
43 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
44 C1_B_Cb, C0_G_Y, C2_R_Cr, 0,
45 false, 3, 0),
46
47 INTERLEAVED_RGB_FMT(BGR888,
48 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
49 C2_R_Cr, C0_G_Y, C1_B_Cb, 0,
50 false, 3, 0),
51
52 INTERLEAVED_RGB_FMT(RGB565,
53 0, COLOR_5BIT, COLOR_6BIT, COLOR_5BIT,
54 C1_B_Cb, C0_G_Y, C2_R_Cr, 0,
55 false, 2, 0),
56
57 INTERLEAVED_RGB_FMT(BGR565,
58 0, 5, 6, 5,
59 C2_R_Cr, C0_G_Y, C1_B_Cb, 0,
60 false, 2, 0),
61
62 PSEDUO_YUV_FMT(NV12,
63 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
64 C1_B_Cb, C2_R_Cr,
65 SDE_MDP_CHROMA_420, 0),
66
67 PSEDUO_YUV_FMT(NV21,
68 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
69 C2_R_Cr, C1_B_Cb,
70 SDE_MDP_CHROMA_420, 0),
71
72 PSEDUO_YUV_FMT(NV16,
73 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
74 C1_B_Cb, C2_R_Cr,
75 SDE_MDP_CHROMA_H2V1, 0),
76
77 PSEDUO_YUV_FMT(NV61,
78 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
79 C2_R_Cr, C1_B_Cb,
80 SDE_MDP_CHROMA_H2V1, 0),
81
82 INTERLEAVED_YUV_FMT(VYUY,
83 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
84 C2_R_Cr, C0_G_Y, C1_B_Cb, C0_G_Y,
85 false, SDE_MDP_CHROMA_H2V1, 4, 2,
86 0),
87
88 INTERLEAVED_YUV_FMT(UYVY,
89 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
90 C1_B_Cb, C0_G_Y, C2_R_Cr, C0_G_Y,
91 false, SDE_MDP_CHROMA_H2V1, 4, 2,
92 0),
93
94 INTERLEAVED_YUV_FMT(YUYV,
95 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
96 C0_G_Y, C1_B_Cb, C0_G_Y, C2_R_Cr,
97 false, SDE_MDP_CHROMA_H2V1, 4, 2,
98 0),
99
100 INTERLEAVED_YUV_FMT(YVYU,
101 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
102 C0_G_Y, C2_R_Cr, C0_G_Y, C1_B_Cb,
103 false, SDE_MDP_CHROMA_H2V1, 4, 2,
104 0),
105
106 PLANAR_YUV_FMT(YUV420,
107 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
108 C2_R_Cr, C1_B_Cb, C0_G_Y,
109 false, SDE_MDP_CHROMA_420, 2,
110 0),
111
112 PLANAR_YUV_FMT(YVU420,
113 0, COLOR_8BIT, COLOR_8BIT, COLOR_8BIT,
114 C1_B_Cb, C2_R_Cr, C0_G_Y,
115 false, SDE_MDP_CHROMA_420, 2,
116 0),
117};
118
119struct sde_mdp_format_params *sde_mdp_get_format_params(u32 format,
120 u32 fmt_modifier)
121{
122 u32 i = 0;
123 struct sde_mdp_format_params *fmt = NULL;
124
125 for (i = 0; i < sizeof(sde_mdp_format_map)/sizeof(*sde_mdp_format_map);
126 i++)
127 if (format == sde_mdp_format_map[i].format) {
128 fmt = &sde_mdp_format_map[i];
129 break;
130 }
131
132 return fmt;
133}
134