drm/ast: Cleanup analog init code path
Move the MMIO mangling to a separate routine and actually disable the DVO output when using pure analog. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
		
							parent
							
								
									42fb142744
								
							
						
					
					
						commit
						37b9b81f30
					
				| @ -379,11 +379,39 @@ static bool ast_init_dvo(struct drm_device *dev) | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| static void ast_init_analog(struct drm_device *dev) | ||||
| { | ||||
| 	struct ast_private *ast = dev->dev_private; | ||||
| 	u32 data; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Set DAC source to VGA mode in SCU2C via the P2A | ||||
| 	 * bridge. First configure the P2U to target the SCU | ||||
| 	 * in case it isn't at this stage. | ||||
| 	 */ | ||||
| 	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; | ||||
| 	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) { | ||||
| @ -399,23 +427,8 @@ void ast_init_3rdtx(struct drm_device *dev) | ||||
| 		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 | ||||
| 				 * in case it isn't at this stage. | ||||
| 				 */ | ||||
| 				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); | ||||
| 			} | ||||
| 			else | ||||
| 				ast_init_analog(dev); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user