@@ -40,29 +40,40 @@ static void ast_detect_widescreen(struct ast_device *ast)
{
u8 vgacrd0;
- /* Check if we support wide screen */
- switch (AST_GEN(ast)) {
- case 1:
- ast->support_wide_screen = false;
- break;
- default:
+ ast->support_wide_screen = false;
+
+ if (AST_GEN(ast) >= 7) {
+ ast->support_wide_screen = true;
+ } else if (AST_GEN(ast) >= 6) {
+ vgacrd0 = ast_get_index_reg(ast, AST_IO_VGACRI, 0xd0);
+ if (!(vgacrd0 & AST_IO_VGACRD0_VRAM_INIT_BY_BMC))
+ ast->support_wide_screen = true;
+ else if (vgacrd0 & AST_IO_VGACRD0_IKVM_WIDESCREEN)
+ ast->support_wide_screen = true;
+ else if (ast->chip == AST2510)
+ ast->support_wide_screen = true;
+ } else if (AST_GEN(ast) >= 5) {
+ vgacrd0 = ast_get_index_reg(ast, AST_IO_VGACRI, 0xd0);
+ if (!(vgacrd0 & AST_IO_VGACRD0_VRAM_INIT_BY_BMC))
+ ast->support_wide_screen = true;
+ else if (vgacrd0 & AST_IO_VGACRD0_IKVM_WIDESCREEN)
+ ast->support_wide_screen = true;
+ else if (ast->chip == AST1400)
+ ast->support_wide_screen = true;
+ } else if (AST_GEN(ast) >= 4) {
+ vgacrd0 = ast_get_index_reg(ast, AST_IO_VGACRI, 0xd0);
+ if (!(vgacrd0 & AST_IO_VGACRD0_VRAM_INIT_BY_BMC))
+ ast->support_wide_screen = true;
+ else if (vgacrd0 & AST_IO_VGACRD0_IKVM_WIDESCREEN)
+ ast->support_wide_screen = true;
+ else if (ast->chip == AST1300)
+ ast->support_wide_screen = true;
+ } else if (AST_GEN(ast) >= 2) {
vgacrd0 = ast_get_index_reg(ast, AST_IO_VGACRI, 0xd0);
if (!(vgacrd0 & AST_IO_VGACRD0_VRAM_INIT_BY_BMC))
ast->support_wide_screen = true;
else if (vgacrd0 & AST_IO_VGACRD0_IKVM_WIDESCREEN)
ast->support_wide_screen = true;
- else {
- ast->support_wide_screen = false;
- if (ast->chip == AST1300)
- ast->support_wide_screen = true;
- if (ast->chip == AST1400)
- ast->support_wide_screen = true;
- if (ast->chip == AST2510)
- ast->support_wide_screen = true;
- if (IS_AST_GEN7(ast))
- ast->support_wide_screen = true;
- }
- break;
}
}
Testing for support of widescreen modes mixes up various hardware Gens. First branch by hardware Gen, then do specific tests for each Gen. By default, widesscreen support is disabled. Later patches will add more specific tests for each Gen. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/gpu/drm/ast/ast_main.c | 47 +++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 18 deletions(-)