Skip to content

Commit

Permalink
drm/ast: Fix AST2400 POST failure without BMC FW or VBIOS
Browse files Browse the repository at this point in the history
The current POST code for the AST2300/2400 family doesn't work properly
if the chip hasn't been initialized previously by either the BMC own FW
or the VBIOS. This fixes it.

Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
ycchen0221 authored and ozbenh committed Feb 23, 2017
1 parent 747ae0a commit 22c3e3e
Showing 1 changed file with 35 additions and 3 deletions.
38 changes: 35 additions & 3 deletions drivers/gpu/drm/ast/ast_post.c
Expand Up @@ -1638,12 +1638,44 @@ static void ast_init_dram_2300(struct drm_device *dev)
temp |= 0x73;
ast_write32(ast, 0x12008, temp);

param.dram_freq = 396;
param.dram_type = AST_DDR3;
temp = ast_mindwm(ast, 0x1e6e2070);
if (temp & 0x01000000)
param.dram_type = AST_DDR2;
param.dram_chipid = ast->dram_type;
param.dram_freq = ast->mclk;
param.vram_size = ast->vram_size;
switch (temp & 0x18000000) {
case 0:
param.dram_chipid = AST_DRAM_512Mx16;
break;
default:
case 0x08000000:
param.dram_chipid = AST_DRAM_1Gx16;
break;
case 0x10000000:
param.dram_chipid = AST_DRAM_2Gx16;
break;
case 0x18000000:
param.dram_chipid = AST_DRAM_4Gx16;
break;
}
switch (temp & 0x0c) {
default:
case 0x00:
param.vram_size = AST_VIDMEM_SIZE_8M;
break;

case 0x04:
param.vram_size = AST_VIDMEM_SIZE_16M;
break;

case 0x08:
param.vram_size = AST_VIDMEM_SIZE_32M;
break;

case 0x0c:
param.vram_size = AST_VIDMEM_SIZE_64M;
break;
}

if (param.dram_type == AST_DDR3) {
get_ddr3_info(ast, &param);
Expand Down

0 comments on commit 22c3e3e

Please sign in to comment.