Loading drivers/gpu/drm/ast/ast_dp501.c +31 −18 Original line number Diff line number Diff line Loading @@ -379,27 +379,12 @@ static bool ast_init_dvo(struct drm_device *dev) return true; } void ast_init_3rdtx(struct drm_device *dev) static void ast_init_analog(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; u8 jreg; u32 data; if (ast->chip == AST2300 || ast->chip == AST2400) { jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); switch (jreg & 0x0e) { case 0x04: ast_init_dvo(dev); break; case 0x08: ast_launch_m68k(dev); break; case 0x0c: ast_init_dvo(dev); break; default: if (ast->tx_chip_type == AST_TX_SIL164) ast_init_dvo(dev); else { /* * Set DAC source to VGA mode in SCU2C via the P2A * bridge. First configure the P2U to target the SCU Loading @@ -407,15 +392,43 @@ void ast_init_3rdtx(struct drm_device *dev) */ ast_write32(ast, 0xf004, 0x1e6e0000); ast_write32(ast, 0xf000, 0x1); /* Then unlock the SCU with the magic password */ ast_write32(ast, 0x12000, 0x1688a8a8); ast_write32(ast, 0x12000, 0x1688a8a8); ast_write32(ast, 0x12000, 0x1688a8a8); /* Finally, clear bits [17:16] of SCU2c */ data = ast_read32(ast, 0x1202c); data &= 0xfffcffff; ast_write32(ast, 0, data); /* Disable DVO */ ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xcf, 0x00); } void ast_init_3rdtx(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; u8 jreg; if (ast->chip == AST2300 || ast->chip == AST2400) { jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); switch (jreg & 0x0e) { case 0x04: ast_init_dvo(dev); break; case 0x08: ast_launch_m68k(dev); break; case 0x0c: ast_init_dvo(dev); break; default: if (ast->tx_chip_type == AST_TX_SIL164) ast_init_dvo(dev); else ast_init_analog(dev); } } } Loading
drivers/gpu/drm/ast/ast_dp501.c +31 −18 Original line number Diff line number Diff line Loading @@ -379,27 +379,12 @@ static bool ast_init_dvo(struct drm_device *dev) return true; } void ast_init_3rdtx(struct drm_device *dev) static void ast_init_analog(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; u8 jreg; u32 data; if (ast->chip == AST2300 || ast->chip == AST2400) { jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); switch (jreg & 0x0e) { case 0x04: ast_init_dvo(dev); break; case 0x08: ast_launch_m68k(dev); break; case 0x0c: ast_init_dvo(dev); break; default: if (ast->tx_chip_type == AST_TX_SIL164) ast_init_dvo(dev); else { /* * Set DAC source to VGA mode in SCU2C via the P2A * bridge. First configure the P2U to target the SCU Loading @@ -407,15 +392,43 @@ void ast_init_3rdtx(struct drm_device *dev) */ ast_write32(ast, 0xf004, 0x1e6e0000); ast_write32(ast, 0xf000, 0x1); /* Then unlock the SCU with the magic password */ ast_write32(ast, 0x12000, 0x1688a8a8); ast_write32(ast, 0x12000, 0x1688a8a8); ast_write32(ast, 0x12000, 0x1688a8a8); /* Finally, clear bits [17:16] of SCU2c */ data = ast_read32(ast, 0x1202c); data &= 0xfffcffff; ast_write32(ast, 0, data); /* Disable DVO */ ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xcf, 0x00); } void ast_init_3rdtx(struct drm_device *dev) { struct ast_private *ast = dev->dev_private; u8 jreg; if (ast->chip == AST2300 || ast->chip == AST2400) { jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); switch (jreg & 0x0e) { case 0x04: ast_init_dvo(dev); break; case 0x08: ast_launch_m68k(dev); break; case 0x0c: ast_init_dvo(dev); break; default: if (ast->tx_chip_type == AST_TX_SIL164) ast_init_dvo(dev); else ast_init_analog(dev); } } }