/* gamma table is used as color palette */
drm_crtc_fill_palette_8(crtc, ast_set_gamma_lut);
break;
+ case DRM_FORMAT_XRGB1555:
case DRM_FORMAT_RGB565:
- /* also uses 8-bit gamma ramp on low-color modes */
+ /* also uses 24-bit gamma correction on high-color modes */
fallthrough;
case DRM_FORMAT_XRGB8888:
drm_crtc_fill_gamma_888(crtc, ast_set_gamma_lut);
/* gamma table is used as color palette */
drm_crtc_load_palette_8(crtc, lut, ast_set_gamma_lut);
break;
+ case DRM_FORMAT_XRGB1555:
case DRM_FORMAT_RGB565:
- /* also uses 8-bit gamma ramp on low-color modes */
+ /* also uses 24-bit gamma correction on high-color modes */
fallthrough;
case DRM_FORMAT_XRGB8888:
drm_crtc_load_gamma_888(crtc, lut, ast_set_gamma_lut);
vgacr8c |= AST_IO_VGACR8C_CUR_MODE_VGA;
vgacr92 = 8;
break;
+ case DRM_FORMAT_XRGB1555:
+ vgacr8c |= AST_IO_VGACR8C_CUR_MODE_15_BPP;
+ vgacr92 = 15;
+ break;
case DRM_FORMAT_RGB565:
vgacr8c |= AST_IO_VGACR8C_CUR_MODE_16_BPP;
vgacr92 = 16;
vgacra8 &= ~AST_IO_VGACRA8_GAMMA_CORRECTION_ENABLED;
break;
case DRM_FORMAT_XRGB1555:
+ vgacra3 |= AST_IO_VGACRA3_15_BPP;
+ vgacra8 |= AST_IO_VGACRA8_GAMMA_CORRECTION_ENABLED;
+ break;
case DRM_FORMAT_RGB565:
vgacra3 |= AST_IO_VGACRA3_16_BPP;
vgacra8 |= AST_IO_VGACRA8_GAMMA_CORRECTION_ENABLED;
static const uint32_t ast_primary_plane_formats[] = {
DRM_FORMAT_XRGB8888,
DRM_FORMAT_RGB565,
+ DRM_FORMAT_XRGB1555,
DRM_FORMAT_C8,
};
case DRM_FORMAT_C8:
ast_state->std_table = &vbios_stdtable[VGAModeIndex];
break;
+ case DRM_FORMAT_XRGB1555:
case DRM_FORMAT_RGB565:
ast_state->std_table = &vbios_stdtable[HiCModeIndex];
break;
#define AST_IO_VGACRA3_DVO_ENABLED BIT(7)
#define AST_IO_VGACRA3_32_BPP BIT(3)
#define AST_IO_VGACRA3_16_BPP BIT(2)
+#define AST_IO_VGACRA3_15_BPP BIT(1)
#define AST_IO_VGACRA3_256_COLORS BIT(0)
#define AST_IO_VGACRA8_GAMMA_CORRECTION_ENABLED BIT(1)