|
@@ -796,38 +796,78 @@ static void _dispc_set_color_mode(enum omap_plane plane,
|
|
|
enum omap_color_mode color_mode)
|
|
|
{
|
|
|
u32 m = 0;
|
|
|
-
|
|
|
- switch (color_mode) {
|
|
|
- case OMAP_DSS_COLOR_CLUT1:
|
|
|
- m = 0x0; break;
|
|
|
- case OMAP_DSS_COLOR_CLUT2:
|
|
|
- m = 0x1; break;
|
|
|
- case OMAP_DSS_COLOR_CLUT4:
|
|
|
- m = 0x2; break;
|
|
|
- case OMAP_DSS_COLOR_CLUT8:
|
|
|
- m = 0x3; break;
|
|
|
- case OMAP_DSS_COLOR_RGB12U:
|
|
|
- m = 0x4; break;
|
|
|
- case OMAP_DSS_COLOR_ARGB16:
|
|
|
- m = 0x5; break;
|
|
|
- case OMAP_DSS_COLOR_RGB16:
|
|
|
- m = 0x6; break;
|
|
|
- case OMAP_DSS_COLOR_RGB24U:
|
|
|
- m = 0x8; break;
|
|
|
- case OMAP_DSS_COLOR_RGB24P:
|
|
|
- m = 0x9; break;
|
|
|
- case OMAP_DSS_COLOR_YUV2:
|
|
|
- m = 0xa; break;
|
|
|
- case OMAP_DSS_COLOR_UYVY:
|
|
|
- m = 0xb; break;
|
|
|
- case OMAP_DSS_COLOR_ARGB32:
|
|
|
- m = 0xc; break;
|
|
|
- case OMAP_DSS_COLOR_RGBA32:
|
|
|
- m = 0xd; break;
|
|
|
- case OMAP_DSS_COLOR_RGBX32:
|
|
|
- m = 0xe; break;
|
|
|
- default:
|
|
|
- BUG(); break;
|
|
|
+ if (plane != OMAP_DSS_GFX) {
|
|
|
+ switch (color_mode) {
|
|
|
+ case OMAP_DSS_COLOR_NV12:
|
|
|
+ m = 0x0; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB12U:
|
|
|
+ m = 0x1; break;
|
|
|
+ case OMAP_DSS_COLOR_RGBA16:
|
|
|
+ m = 0x2; break;
|
|
|
+ case OMAP_DSS_COLOR_RGBX16:
|
|
|
+ m = 0x4; break;
|
|
|
+ case OMAP_DSS_COLOR_ARGB16:
|
|
|
+ m = 0x5; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB16:
|
|
|
+ m = 0x6; break;
|
|
|
+ case OMAP_DSS_COLOR_ARGB16_1555:
|
|
|
+ m = 0x7; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB24U:
|
|
|
+ m = 0x8; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB24P:
|
|
|
+ m = 0x9; break;
|
|
|
+ case OMAP_DSS_COLOR_YUV2:
|
|
|
+ m = 0xa; break;
|
|
|
+ case OMAP_DSS_COLOR_UYVY:
|
|
|
+ m = 0xb; break;
|
|
|
+ case OMAP_DSS_COLOR_ARGB32:
|
|
|
+ m = 0xc; break;
|
|
|
+ case OMAP_DSS_COLOR_RGBA32:
|
|
|
+ m = 0xd; break;
|
|
|
+ case OMAP_DSS_COLOR_RGBX32:
|
|
|
+ m = 0xe; break;
|
|
|
+ case OMAP_DSS_COLOR_XRGB16_1555:
|
|
|
+ m = 0xf; break;
|
|
|
+ default:
|
|
|
+ BUG(); break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ switch (color_mode) {
|
|
|
+ case OMAP_DSS_COLOR_CLUT1:
|
|
|
+ m = 0x0; break;
|
|
|
+ case OMAP_DSS_COLOR_CLUT2:
|
|
|
+ m = 0x1; break;
|
|
|
+ case OMAP_DSS_COLOR_CLUT4:
|
|
|
+ m = 0x2; break;
|
|
|
+ case OMAP_DSS_COLOR_CLUT8:
|
|
|
+ m = 0x3; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB12U:
|
|
|
+ m = 0x4; break;
|
|
|
+ case OMAP_DSS_COLOR_ARGB16:
|
|
|
+ m = 0x5; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB16:
|
|
|
+ m = 0x6; break;
|
|
|
+ case OMAP_DSS_COLOR_ARGB16_1555:
|
|
|
+ m = 0x7; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB24U:
|
|
|
+ m = 0x8; break;
|
|
|
+ case OMAP_DSS_COLOR_RGB24P:
|
|
|
+ m = 0x9; break;
|
|
|
+ case OMAP_DSS_COLOR_YUV2:
|
|
|
+ m = 0xa; break;
|
|
|
+ case OMAP_DSS_COLOR_UYVY:
|
|
|
+ m = 0xb; break;
|
|
|
+ case OMAP_DSS_COLOR_ARGB32:
|
|
|
+ m = 0xc; break;
|
|
|
+ case OMAP_DSS_COLOR_RGBA32:
|
|
|
+ m = 0xd; break;
|
|
|
+ case OMAP_DSS_COLOR_RGBX32:
|
|
|
+ m = 0xe; break;
|
|
|
+ case OMAP_DSS_COLOR_XRGB16_1555:
|
|
|
+ m = 0xf; break;
|
|
|
+ default:
|
|
|
+ BUG(); break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), m, 4, 1);
|
|
@@ -1203,12 +1243,17 @@ static int color_mode_to_bpp(enum omap_color_mode color_mode)
|
|
|
case OMAP_DSS_COLOR_CLUT4:
|
|
|
return 4;
|
|
|
case OMAP_DSS_COLOR_CLUT8:
|
|
|
+ case OMAP_DSS_COLOR_NV12:
|
|
|
return 8;
|
|
|
case OMAP_DSS_COLOR_RGB12U:
|
|
|
case OMAP_DSS_COLOR_RGB16:
|
|
|
case OMAP_DSS_COLOR_ARGB16:
|
|
|
case OMAP_DSS_COLOR_YUV2:
|
|
|
case OMAP_DSS_COLOR_UYVY:
|
|
|
+ case OMAP_DSS_COLOR_RGBA16:
|
|
|
+ case OMAP_DSS_COLOR_RGBX16:
|
|
|
+ case OMAP_DSS_COLOR_ARGB16_1555:
|
|
|
+ case OMAP_DSS_COLOR_XRGB16_1555:
|
|
|
return 16;
|
|
|
case OMAP_DSS_COLOR_RGB24P:
|
|
|
return 24;
|