@@ -836,22 +836,24 @@ ast_crtc_helper_atomic_flush(struct drm_crtc *crtc,
836836static void ast_crtc_helper_atomic_enable (struct drm_crtc * crtc , struct drm_atomic_state * state )
837837{
838838 struct ast_device * ast = to_ast_device (crtc -> dev );
839+ u8 vgacr17 = 0x00 ;
840+ u8 vgacrb6 = 0xff ;
839841
840- ast_set_index_reg_mask (ast , AST_IO_VGACRI , 0xb6 , 0xfc , 0x00 );
841- ast_set_index_reg_mask (ast , AST_IO_VGASRI , 0x01 , 0xdf , 0x00 );
842+ vgacr17 |= AST_IO_VGACR17_SYNC_ENABLE ;
843+ vgacrb6 &= ~(AST_IO_VGACRB6_VSYNC_OFF | AST_IO_VGACRB6_HSYNC_OFF );
844+
845+ ast_set_index_reg_mask (ast , AST_IO_VGACRI , 0x17 , 0x7f , vgacr17 );
846+ ast_set_index_reg_mask (ast , AST_IO_VGACRI , 0xb6 , 0xfc , vgacrb6 );
842847}
843848
844849static void ast_crtc_helper_atomic_disable (struct drm_crtc * crtc , struct drm_atomic_state * state )
845850{
846851 struct drm_crtc_state * old_crtc_state = drm_atomic_get_old_crtc_state (state , crtc );
847852 struct ast_device * ast = to_ast_device (crtc -> dev );
848- u8 vgacrb6 ;
853+ u8 vgacr17 = 0xff ;
849854
850- ast_set_index_reg_mask (ast , AST_IO_VGASRI , 0x01 , 0xdf , AST_IO_VGASR1_SD );
851-
852- vgacrb6 = AST_IO_VGACRB6_VSYNC_OFF |
853- AST_IO_VGACRB6_HSYNC_OFF ;
854- ast_set_index_reg_mask (ast , AST_IO_VGACRI , 0xb6 , 0xfc , vgacrb6 );
855+ vgacr17 &= ~AST_IO_VGACR17_SYNC_ENABLE ;
856+ ast_set_index_reg_mask (ast , AST_IO_VGACRI , 0x17 , 0x7f , vgacr17 );
855857
856858 /*
857859 * HW cursors require the underlying primary plane and CRTC to
0 commit comments