DACW
#define DXIR(A) (DACW(PALWTADD,MGADXI_##A),DACR(X_DATAREG))
#define DXIW(A,B) (DACW(PALWTADD,MGADXI_##A),DACW(X_DATAREG,B))
DACW(TVP_CUROVRWTADD,0x00);
DACW(TVP_CUROVRDATA,0xff);
DACW(TVP_CUROVRDATA,0xff);
DACW(TVP_CUROVRDATA,0xff);
DACW(TVP_CUROVRDATA,0xff);
DACW(TVP_CUROVRDATA,0xff);
DACW(TVP_CUROVRDATA,0xff);
DACW(TVP_CUROVRDATA,0x00);
DACW(TVP_CUROVRDATA,0x00);
DACW(TVP_CUROVRDATA,0x00);
DACW(TVP_CUROVRDATA,0x00);
DACW(TVP_CUROVRDATA,0x00);
DACW(TVP_CUROVRDATA,0x00);
DACW(PALWTADD,0x00);
DACW(TVP_CURRAMDATA,0x00);
DACW(PALWTADD, 0x00);
DACW(PALWTADD, (y * 8));
DACW(TVP_CURRAMDATA, ~*andMask++);
DACW(TVP_CURRAMDATA, ~*andMask++);
DACW(PALWTADD, 0x00);
DACW(PALWTADD, y*8);
DACW(TVP_CURRAMDATA, *xorMask++);
DACW(TVP_CURRAMDATA, *xorMask++);
DACW(CURSPOSXL,x&0xFF);
DACW(CURSPOSXH,x>>8);
DACW(CURSPOSYL,y&0xFF);
DACW(CURSPOSYH,y>>8);
DACW(PIXRDMSK,0xff);
DACW(PALWTADD,0);
DACW(PALDATA,r[i]);
DACW(PALDATA,g[i]);
DACW(PALDATA,b[i]);
DACW(PALRDADD,0);
DACW(CURPOS, ((x & 0x0fff) | ((y & 0x0fff) << 16)));
DACW(TV_SETUP, ((DACR(TV_SETUP) & ~0x00000003) | 0x01000000));
DACW(PLLSEL, 0x30000f00);
DACW(PLLSEL, 0x10000700);
DACW(TV_SETUP, ((DACR(TV_SETUP) & ~0x00000002) | 0x01000001));
DACW(PLLSEL, 0x20030f00);
DACW(PLLSEL, 0x00030700);
DACW(FP_DEBUG1, 0);
DACW(FP_HVALID_S, 0);
DACW(FP_HVALID_E, (si->ps.p1_timing.h_display - 1));
DACW(FP_VVALID_S, 0);
DACW(FP_VVALID_E, (si->ps.p1_timing.v_display - 1));
DACW(FP_DEBUG2, 0x00000000);
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) | 0x00000100));
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
DACW(FP_DEBUG2, ((1 << 28) | ((target.timing.v_display - 1) << 16)));
DACW(FP_DEBUG2, 0x00000000);
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
DACW(FP_DEBUG1, (((iscale_x >> 1) & 0x00000fff) | (1 << 12)));
DACW(FP_HVALID_S, diff);
DACW(FP_HVALID_E, ((si->ps.p1_timing.h_display - diff) - 1));
DACW(GENCTRL, genctrl);
DACW(FP_TG_CTRL, ((DACR(FP_TG_CTRL) & 0xcfffffcc) | panelsync));
DACW(FP_TG_CTRL, ((DACR(FP_TG_CTRL) & 0xcfffffcc) | 0x20000022));
DACW(NV10_CURSYNC, (DACR(NV10_CURSYNC) | 0x02000000));
if (si->ps.card_arch == NV40A) DACW(CURPOS, (DACR(CURPOS)));
if (si->ps.card_arch == NV40A) DACW(CURPOS, (DACR(CURPOS)));
DACW(PLLSEL, 0x100c0f00);
DACW(PLLSEL, 0x30000f00);
DACW(NV11_DITHER, (DACR(NV11_DITHER) | 0x00010000));
DACW(FP_DITH_PATT1, 0xe4e4e4e4);
DACW(FP_DITH_PATT2, 0xe4e4e4e4);
DACW(FP_DITH_PATT3, 0xe4e4e4e4);
DACW(FP_DITH_PATT4, 0x44444444);
DACW(FP_DITH_PATT5, 0x44444444);
DACW(FP_DITH_PATT6, 0x44444444);
DACW(FP_DITHER, (DACR(FP_DITHER) | 0x00000001));
DACW(NV11_DITHER, (DACR(NV11_DITHER) & ~0x00010000));
DACW(FP_DITHER, (DACR(FP_DITHER) & ~0x00000001));
DACW(NV30_PLLSETUP, (DACR(NV30_PLLSETUP) & ~0x000000f0));
DACW(PIXPLLC, ((p << 16) | (n << 8) | m));
if (si->ps.ext_pll) DACW(PIXPLLC2, 0x80000401);
DACW(PLLSEL, 0x30000f00);
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xfffeffff));
DACW(NV40_PLLSEL2, (DACR(NV40_PLLSEL2) & ~0x10000100));
DACW(PLLSEL, 0x30000f04);
DACW(PLLSEL, 0x10000700);
DACW(OUTPUT, (output & 0x0000feee));
DACW(PLLSEL, 0x30000f00);
DACW(PLLSEL, 0x10000700);
DACW(OUTPUT, (output & 0x0000ffee));
DACW(OUTPUT, (DACR(OUTPUT) | 0x00000001));
DACW(TSTDATA, ((0x2 << 30) | (0x140 << 20) | (0x140 << 10) | (0x140 << 0)));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00001000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xffffefff));
DACW(OUTPUT, output);
DACW(TSTCTRL, dac);
DACW(NV30_PLLSETUP, (DACR(NV30_PLLSETUP) & ~0x000000f0));
DACW(PLLSEL, 0x30000f00);
DACW(NV40_PLLSEL2, (DACR(NV40_PLLSEL2) & ~0x10000100));
DACW(PLLSEL, 0x30000f04);
DACW(PLLSEL, 0x30000f00);
DACW(TSTDATA, ((0x2 << 30) | (0x140 << 20) | (0x140 << 10) | (0x140 << 0)));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00001000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xffffefff));
DACW(OUTPUT, 0x00000101);
DACW(OUTPUT, 0x00000001);
DACW(GENCTRL, 0x00100100);
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xfffeefff));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00100000));
DACW(FP_TMDS_CTRL, ((1 << 16) | 0x04));
DACW(FP_DEBUG1, 0);
DACW(FP_HVALID_S, 0);
DACW(FP_HVALID_E, (si->ps.p1_timing.h_display - 1));
DACW(FP_VVALID_S, 0);
DACW(FP_VVALID_E, (si->ps.p1_timing.v_display - 1));
DACW(FP_DEBUG2, 0x00000000);
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) | 0x00000100));
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
DACW(FP_DEBUG2, ((1 << 28) | ((target.timing.v_display - 1) << 16)));
DACW(FP_DEBUG2, 0x00000000);
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
DACW(FP_DEBUG1, (((iscale_x >> 1) & 0x00000fff) | (1 << 12)));
DACW(FP_HVALID_S, diff);
DACW(FP_HVALID_E, ((si->ps.p1_timing.h_display - diff) - 1));
DACW(GENCTRL, genctrl);
DACW(FP_DEBUG0, (DACR(FP_DEBUG0) & 0xcfffffff));
DACW(FP_DEBUG0, (DACR(FP_DEBUG0) | 0x30000000));
DACW(CURPOS, ((x & 0x0fff) | ((y & 0x0fff) << 16)));
DACW(PIXPLLC, ((p << 16) | (n << 8) | m));
if (si->ps.ext_pll) DACW(PIXPLLC2, 0x80000401);
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xfffeffff));
DACW(OUTPUT, (output & 0x0000feee));
DACW(OUTPUT, (DACR(OUTPUT) | 0x00000001));
DACW(TSTDATA, ((0x2 << 30) | (0x140 << 20) | (0x140 << 10) | (0x140 << 0)));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00001000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xffffefff));
DACW(OUTPUT, output);
DACW(TSTCTRL, dac);
DACW(TSTDATA, ((0x2 << 30) | (0x140 << 20) | (0x140 << 10) | (0x140 << 0)));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00001000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xffffefff));
DACW(OUTPUT, 0x00000101);
DACW(OUTPUT, 0x00000001);
DACW(FP_DEBUG1, 0);
DACW(FP_HVALID_S, 0);
DACW(FP_HVALID_E, (si->ps.p1_timing.h_display - 1));
DACW(FP_VVALID_S, 0);
DACW(FP_VVALID_E, (si->ps.p1_timing.v_display - 1));
DACW(FP_DEBUG2, 0x00000000);
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) | 0x00000100));
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
DACW(FP_DEBUG2, ((1 << 28) | ((target.timing.v_display - 1) << 16)));
DACW(FP_DEBUG2, 0x00000000);
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
DACW(FP_DEBUG1, (((iscale_x >> 1) & 0x00000fff) | (1 << 12)));
DACW(FP_HVALID_S, diff);
DACW(FP_HVALID_E, ((si->ps.p1_timing.h_display - diff) - 1));
DACW(FP_DEBUG0, (DACR(FP_DEBUG0) & 0xcfffffff));
DACW(FP_DEBUG0, (DACR(FP_DEBUG0) | 0x30000000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xfffeffff));
DACW(OUTPUT, (output & 0x0000feee));
DACW(OUTPUT, (DACR(OUTPUT) | 0x00000001));
DACW(TSTDATA, ((0x2 << 30) | (0x140 << 20) | (0x140 << 10) | (0x140 << 0)));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00001000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xffffefff));
DACW(OUTPUT, output);
DACW(TSTCTRL, dac);
DACW(TSTDATA, ((0x2 << 30) | (0x140 << 20) | (0x140 << 10) | (0x140 << 0)));
DACW(TSTCTRL, (DACR(TSTCTRL) | 0x00001000));
DACW(TSTCTRL, (DACR(TSTCTRL) & 0xffffefff));
DACW(OUTPUT, 0x00000101);
DACW(OUTPUT, 0x00000001);