CRTC2W
CRTC2W(FIFO_LWM, 0x20);
CRTC2W(PIXEL, ((CRTC2R(PIXEL) & 0xc7) | 0x80));
CRTC2W(LCD, (CRTC2R(LCD) & 0xfe));
CRTC2W(TREG, 0x80);
CRTC2W(VSYNCE, (CRTC2R(VSYNCE) & 0x7f));
CRTC2W(HTOTAL, (htotal & 0xff));
CRTC2W(HDISPE, (hdisp_e & 0xff));
CRTC2W(HBLANKS, (hblnk_s & 0xff));
CRTC2W(HBLANKE, ((hblnk_e & 0x1f) | 0x80));
CRTC2W(HSYNCS, (hsync_s & 0xff));
CRTC2W(HSYNCE, ((hsync_e & 0x1f) | ((hblnk_e & 0x20) << 2)));
CRTC2W(VTOTAL, (vtotal & 0xff));
CRTC2W(OVERFLOW,
CRTC2W(PRROWSCN, 0x00); /* not used */
CRTC2W(MAXSCLIN, (((vblnk_s & 0x200) >> (9 - 5)) | ((linecomp & 0x200) >> (9 - 6))));
CRTC2W(VSYNCS, (vsync_s & 0xff));
CRTC2W(VSYNCE, ((CRTC2R(VSYNCE) & 0xf0) | (vsync_e & 0x0f)));
CRTC2W(VDISPE, (vdisp_e & 0xff));
CRTC2W(VBLANKS, (vblnk_s & 0xff));
CRTC2W(VBLANKE, (vblnk_e & 0xff));
CRTC2W(LINECOMP, (linecomp & 0xff));
CRTC2W(HEB, (CRTC2R(HEB) & 0xe0) |
CRTC2W(LSR,
CRTC2W(EXTRA,
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xfb));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x04));
CRTC2W(INTERLACE, 0xff);
if (!(si->ps.monitors & CRTC2_TMDS)) CRTC2W(PIXEL, (CRTC2R(PIXEL) & 0x7f));
CRTC2W(FP_HTIMING, 0);
CRTC2W(FP_VTIMING, 0);
CRTC2W(PIXEL, ((CRTC2R(PIXEL) & 0xfc) | viddelay));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0x7f));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x80));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xbf));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x40));
CRTC2W(FIFO, 0x03);
CRTC2W(FIFO_LWM, 0x20);
CRTC2W(PITCHL, (offset & 0x00ff));
CRTC2W(REPAINT0, ((CRTC2R(REPAINT0) & 0x1f) | ((offset & 0x0700) >> 3)));
CRTC2W(CURCTL0, ((curadd & 0x0001f800) >> 9));
CRTC2W(CURCTL1, (((curadd & 0x00fe0000) >> 17) | 0x80));
CRTC2W(CURCTL2, ((curadd & 0xff000000) >> 24));
CRTC2W(FIFO, 0x01);
CRTC2W(FIFO_LWM, 0x40);
CRTC2W(CURCTL0, (CRTC2R(CURCTL0) | 0x01));
CRTC2W(CURCTL0, (CRTC2R(CURCTL0) & 0xfe));
CRTC2W(FIFO, 0x02);
CRTC2W(FIFO_LWM, 0x40);
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xbf));
if (!(si->ps.slaved_tmds2)) CRTC2W(PIXEL, (CRTC2R(PIXEL) & 0x03));
CRTC2W(FIFO, 0x03);
CRTC2W(TREG, 0x00);
if (si->ps.slaved_tmds2) CRTC2W(LCD, (CRTC2R(LCD) | 0x01));
CRTC2W(OWNER, 0xff);
CRTC2W(OWNER, 0x03);
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
CRTC2W(BUFFER, 0xff);
CRTC2W(BUFFER, 0xfb);
CRTC2W(MODECTL, 0xc3);
CRTC2W(REPAINT1, 0x04);
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTC2R(VSYNCE) & 0x7f));
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
CRTC2W(VSYNCE, (CRTC2R(VSYNCE) & 0x7f));
CRTC2W(HTOTAL, (htotal & 0xff));
CRTC2W(HDISPE, (hdisp_e & 0xff));
CRTC2W(HBLANKS, (hblnk_s & 0xff));
CRTC2W(HBLANKE, ((hblnk_e & 0x1f) | 0x80));
CRTC2W(HSYNCS, (hsync_s & 0xff));
CRTC2W(HSYNCE, ((hsync_e & 0x1f) | ((hblnk_e & 0x20) << 2)));
CRTC2W(VTOTAL, (vtotal & 0xff));
CRTC2W(OVERFLOW,
CRTC2W(PRROWSCN, 0x00); /* not used */
CRTC2W(MAXSCLIN, (((vblnk_s & 0x200) >> (9 - 5)) | ((linecomp & 0x200) >> (9 - 6))));
CRTC2W(VSYNCS, (vsync_s & 0xff));
CRTC2W(VSYNCE, ((CRTC2R(VSYNCE) & 0xf0) | (vsync_e & 0x0f)));
CRTC2W(VDISPE, (vdisp_e & 0xff));
CRTC2W(VBLANKS, (vblnk_s & 0xff));
CRTC2W(VBLANKE, (vblnk_e & 0xff));
CRTC2W(LINECOMP, (linecomp & 0xff));
CRTC2W(HEB, (CRTC2R(HEB) & 0xe0) |
CRTC2W(LSR,
CRTC2W(EXTRA,
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xfb));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x04));
CRTC2W(INTERLACE, 0xff);
if (!si->ps.tmds2_active) CRTC2W(PIXEL, (CRTC2R(PIXEL) & 0x7f));
CRTC2W(FP_HTIMING, 0);
CRTC2W(FP_VTIMING, 0);
CRTC2W(PIXEL, ((CRTC2R(PIXEL) & 0xfc) | viddelay));
CRTC2W(0x59, (CRTC2R(0x59) | 0x01));
CRTC2W(0x59, (CRTC2R(0x59) & 0xfe));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0x7f));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x80));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xbf));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x40));
CRTC2W(PITCHL, (offset & 0x00ff));
CRTC2W(REPAINT0, ((CRTC2R(REPAINT0) & 0x1f) | ((offset & 0x0700) >> 3)));
CRTC2W(CURCTL0, ((curadd & 0x0001f800) >> 9));
CRTC2W(CURCTL1, (((curadd & 0x00fe0000) >> 17) | 0x80));
CRTC2W(CURCTL2, ((curadd & 0xff000000) >> 24));
CRTC2W(CURCTL0, (CRTC2R(CURCTL0) | 0x01));
CRTC2W(CURCTL0, (CRTC2R(CURCTL0) & 0xfe));
CRTC2W(OWNER, 0xff);
CRTC2W(OWNER, 0x03);
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
CRTC2W(BUFFER, 0xff);
CRTC2W(BUFFER, 0xfb);
CRTC2W(MODECTL, 0xc3);
CRTC2W(REPAINT1, 0x04);
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTC2R(VSYNCE) & 0x7f));
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
CRTC2W(VSYNCE, (CRTC2R(VSYNCE) & 0x7f));
CRTC2W(HTOTAL, (htotal & 0xff));
CRTC2W(HDISPE, (hdisp_e & 0xff));
CRTC2W(HBLANKS, (hblnk_s & 0xff));
CRTC2W(HBLANKE, ((hblnk_e & 0x1f) | 0x80));
CRTC2W(HSYNCS, (hsync_s & 0xff));
CRTC2W(HSYNCE, ((hsync_e & 0x1f) | ((hblnk_e & 0x20) << 2)));
CRTC2W(VTOTAL, (vtotal & 0xff));
CRTC2W(OVERFLOW,
CRTC2W(PRROWSCN, 0x00); /* not used */
CRTC2W(MAXSCLIN, (((vblnk_s & 0x200) >> (9 - 5)) | ((linecomp & 0x200) >> (9 - 6))));
CRTC2W(VSYNCS, (vsync_s & 0xff));
CRTC2W(VSYNCE, ((CRTC2R(VSYNCE) & 0xf0) | (vsync_e & 0x0f)));
CRTC2W(VDISPE, (vdisp_e & 0xff));
CRTC2W(VBLANKS, (vblnk_s & 0xff));
CRTC2W(VBLANKE, (vblnk_e & 0xff));
CRTC2W(LINECOMP, (linecomp & 0xff));
CRTC2W(HEB, (CRTC2R(HEB) & 0xe0) |
CRTC2W(LSR,
CRTC2W(EXTRA,
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xfb));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x04));
CRTC2W(INTERLACE, 0xff);
if (!si->ps.tmds2_active) CRTC2W(PIXEL, (CRTC2R(PIXEL) & 0x7f));
CRTC2W(FP_HTIMING, 0);
CRTC2W(FP_VTIMING, 0);
CRTC2W(PIXEL, ((CRTC2R(PIXEL) & 0xfc) | viddelay));
CRTC2W(0x59, (CRTC2R(0x59) | 0x01));
CRTC2W(0x59, (CRTC2R(0x59) & 0xfe));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0x7f));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x80));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) & 0xbf));
CRTC2W(REPAINT1, (CRTC2R(REPAINT1) | 0x40));
CRTC2W(PITCHL, (offset & 0x00ff));
CRTC2W(REPAINT0, ((CRTC2R(REPAINT0) & 0x1f) | ((offset & 0x0700) >> 3)));
CRTC2W(CURCTL0, ((curadd & 0x0001f800) >> 9));
CRTC2W(CURCTL1, (((curadd & 0x00fe0000) >> 17) | 0x80));
CRTC2W(CURCTL2, ((curadd & 0xff000000) >> 24));
CRTC2W(CURCTL0, (CRTC2R(CURCTL0) | 0x01));
CRTC2W(CURCTL0, (CRTC2R(CURCTL0) & 0xfe));
CRTC2W(OWNER, 0xff);
CRTC2W(OWNER, 0x03);
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTC2R(VSYNCE) & 0x7f));