aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/ast/ast_main.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 556d065590cc..48998b2102a5 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -158,16 +158,22 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
158 /* 158 /*
159 * VGACRA3 Enhanced Color Mode Register, check if DVO is already 159 * VGACRA3 Enhanced Color Mode Register, check if DVO is already
160 * enabled, in that case, assume we have a SIL164 TMDS transmitter 160 * enabled, in that case, assume we have a SIL164 TMDS transmitter
161 *
162 * Don't make that assumption if we the chip wasn't enabled and
163 * is at power-on reset, otherwise we'll incorrectly "detect" a
164 * SIL164 when there is none.
161 */ 165 */
162 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xff); 166 if (!*need_post) {
163 if (jreg & 0x80) 167 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xff);
164 ast->tx_chip_type = AST_TX_SIL164; 168 if (jreg & 0x80)
169 ast->tx_chip_type = AST_TX_SIL164;
170 }
165 171
166 if ((ast->chip == AST2300) || (ast->chip == AST2400)) { 172 if ((ast->chip == AST2300) || (ast->chip == AST2400)) {
167 /* 173 /*
168 * On AST2300 and 2400, look the configuration set by the SoC in 174 * On AST2300 and 2400, look the configuration set by the SoC in
169 * the SOC scratch register #1 bits 11:8 (interestingly marked 175 * the SOC scratch register #1 bits 11:8 (interestingly marked
170 * as "reserved" in the spec 176 * as "reserved" in the spec)
171 */ 177 */
172 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); 178 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff);
173 switch (jreg) { 179 switch (jreg) {