diff options
Diffstat (limited to 'drivers/video/omap2/dss/dss_features.c')
-rw-r--r-- | drivers/video/omap2/dss/dss_features.c | 66 |
1 files changed, 63 insertions, 3 deletions
diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c index 867f68de125..cf3ef696e14 100644 --- a/drivers/video/omap2/dss/dss_features.c +++ b/drivers/video/omap2/dss/dss_features.c | |||
@@ -82,6 +82,18 @@ static const enum omap_display_type omap3_dss_supported_displays[] = { | |||
82 | OMAP_DISPLAY_TYPE_VENC, | 82 | OMAP_DISPLAY_TYPE_VENC, |
83 | }; | 83 | }; |
84 | 84 | ||
85 | static const enum omap_display_type omap4_dss_supported_displays[] = { | ||
86 | /* OMAP_DSS_CHANNEL_LCD */ | ||
87 | OMAP_DISPLAY_TYPE_DBI | OMAP_DISPLAY_TYPE_DSI, | ||
88 | |||
89 | /* OMAP_DSS_CHANNEL_DIGIT */ | ||
90 | OMAP_DISPLAY_TYPE_VENC, | ||
91 | |||
92 | /* OMAP_DSS_CHANNEL_LCD2 */ | ||
93 | OMAP_DISPLAY_TYPE_DPI | OMAP_DISPLAY_TYPE_DBI | | ||
94 | OMAP_DISPLAY_TYPE_DSI, | ||
95 | }; | ||
96 | |||
85 | static const enum omap_color_mode omap2_dss_supported_color_modes[] = { | 97 | static const enum omap_color_mode omap2_dss_supported_color_modes[] = { |
86 | /* OMAP_DSS_GFX */ | 98 | /* OMAP_DSS_GFX */ |
87 | OMAP_DSS_COLOR_CLUT1 | OMAP_DSS_COLOR_CLUT2 | | 99 | OMAP_DSS_COLOR_CLUT1 | OMAP_DSS_COLOR_CLUT2 | |
@@ -127,6 +139,10 @@ static struct omap_dss_features omap2_dss_features = { | |||
127 | .reg_fields = omap2_dss_reg_fields, | 139 | .reg_fields = omap2_dss_reg_fields, |
128 | .num_reg_fields = ARRAY_SIZE(omap2_dss_reg_fields), | 140 | .num_reg_fields = ARRAY_SIZE(omap2_dss_reg_fields), |
129 | 141 | ||
142 | .has_feature = | ||
143 | FEAT_LCDENABLEPOL | FEAT_LCDENABLESIGNAL | | ||
144 | FEAT_PCKFREEENABLE | FEAT_FUNCGATED, | ||
145 | |||
130 | .num_mgrs = 2, | 146 | .num_mgrs = 2, |
131 | .num_ovls = 3, | 147 | .num_ovls = 3, |
132 | .supported_displays = omap2_dss_supported_displays, | 148 | .supported_displays = omap2_dss_supported_displays, |
@@ -134,11 +150,29 @@ static struct omap_dss_features omap2_dss_features = { | |||
134 | }; | 150 | }; |
135 | 151 | ||
136 | /* OMAP3 DSS Features */ | 152 | /* OMAP3 DSS Features */ |
137 | static struct omap_dss_features omap3_dss_features = { | 153 | static struct omap_dss_features omap3430_dss_features = { |
154 | .reg_fields = omap3_dss_reg_fields, | ||
155 | .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), | ||
156 | |||
157 | .has_feature = | ||
158 | FEAT_GLOBAL_ALPHA | FEAT_LCDENABLEPOL | | ||
159 | FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | | ||
160 | FEAT_FUNCGATED, | ||
161 | |||
162 | .num_mgrs = 2, | ||
163 | .num_ovls = 3, | ||
164 | .supported_displays = omap3_dss_supported_displays, | ||
165 | .supported_color_modes = omap3_dss_supported_color_modes, | ||
166 | }; | ||
167 | |||
168 | static struct omap_dss_features omap3630_dss_features = { | ||
138 | .reg_fields = omap3_dss_reg_fields, | 169 | .reg_fields = omap3_dss_reg_fields, |
139 | .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), | 170 | .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), |
140 | 171 | ||
141 | .has_feature = FEAT_GLOBAL_ALPHA, | 172 | .has_feature = |
173 | FEAT_GLOBAL_ALPHA | FEAT_LCDENABLEPOL | | ||
174 | FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | | ||
175 | FEAT_PRE_MULT_ALPHA | FEAT_FUNCGATED, | ||
142 | 176 | ||
143 | .num_mgrs = 2, | 177 | .num_mgrs = 2, |
144 | .num_ovls = 3, | 178 | .num_ovls = 3, |
@@ -146,6 +180,21 @@ static struct omap_dss_features omap3_dss_features = { | |||
146 | .supported_color_modes = omap3_dss_supported_color_modes, | 180 | .supported_color_modes = omap3_dss_supported_color_modes, |
147 | }; | 181 | }; |
148 | 182 | ||
183 | /* OMAP4 DSS Features */ | ||
184 | static struct omap_dss_features omap4_dss_features = { | ||
185 | .reg_fields = omap3_dss_reg_fields, | ||
186 | .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), | ||
187 | |||
188 | .has_feature = | ||
189 | FEAT_GLOBAL_ALPHA | FEAT_PRE_MULT_ALPHA | | ||
190 | FEAT_MGR_LCD2, | ||
191 | |||
192 | .num_mgrs = 3, | ||
193 | .num_ovls = 3, | ||
194 | .supported_displays = omap4_dss_supported_displays, | ||
195 | .supported_color_modes = omap3_dss_supported_color_modes, | ||
196 | }; | ||
197 | |||
149 | /* Functions returning values related to a DSS feature */ | 198 | /* Functions returning values related to a DSS feature */ |
150 | int dss_feat_get_num_mgrs(void) | 199 | int dss_feat_get_num_mgrs(void) |
151 | { | 200 | { |
@@ -167,6 +216,13 @@ enum omap_color_mode dss_feat_get_supported_color_modes(enum omap_plane plane) | |||
167 | return omap_current_dss_features->supported_color_modes[plane]; | 216 | return omap_current_dss_features->supported_color_modes[plane]; |
168 | } | 217 | } |
169 | 218 | ||
219 | bool dss_feat_color_mode_supported(enum omap_plane plane, | ||
220 | enum omap_color_mode color_mode) | ||
221 | { | ||
222 | return omap_current_dss_features->supported_color_modes[plane] & | ||
223 | color_mode; | ||
224 | } | ||
225 | |||
170 | /* DSS has_feature check */ | 226 | /* DSS has_feature check */ |
171 | bool dss_has_feature(enum dss_feat_id id) | 227 | bool dss_has_feature(enum dss_feat_id id) |
172 | { | 228 | { |
@@ -186,6 +242,10 @@ void dss_features_init(void) | |||
186 | { | 242 | { |
187 | if (cpu_is_omap24xx()) | 243 | if (cpu_is_omap24xx()) |
188 | omap_current_dss_features = &omap2_dss_features; | 244 | omap_current_dss_features = &omap2_dss_features; |
245 | else if (cpu_is_omap3630()) | ||
246 | omap_current_dss_features = &omap3630_dss_features; | ||
247 | else if (cpu_is_omap34xx()) | ||
248 | omap_current_dss_features = &omap3430_dss_features; | ||
189 | else | 249 | else |
190 | omap_current_dss_features = &omap3_dss_features; | 250 | omap_current_dss_features = &omap4_dss_features; |
191 | } | 251 | } |