diff options
-rw-r--r-- | drivers/gpu/drm/ast/ast_main.c | 14 |
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) { |