diff options
author | Luc Verhaegen <libv@skynet.be> | 2006-04-23 21:38:57 +0200 |
---|---|---|
committer | Luc Verhaegen <libv@skynet.be> | 2006-04-23 21:38:57 +0200 |
commit | 171cbc92125f3b171bfb245577b2f709280e41b8 (patch) | |
tree | e52ffe1082992614a5772ae8f29f4c7d5642b0e9 | |
parent | aeee25950086cff78ee93da343ee29e3544b68a7 (diff) |
Remove pATIHW define for the real thing.
-rw-r--r-- | src/atipreinit.c | 387 |
1 files changed, 192 insertions, 195 deletions
diff --git a/src/atipreinit.c b/src/atipreinit.c index 0ba7c11..1006866 100644 --- a/src/atipreinit.c +++ b/src/atipreinit.c @@ -632,9 +632,6 @@ Mach64PreInitGetClockInfo(ScrnInfoPtr pScrn, GDevPtr pGDev) } } -/* kill me */ -#define pATIHW (&pATI->OldHW) - /* * Call this before going into the BIOS code, as the BIOS * code depends on LCDPanelID. @@ -650,17 +647,17 @@ Mach64PanelScratchInfoGet(ATIPtr pATI) if (pATI->Chip == ATI_CHIP_264LT) { pATI->LCDPanelID = GetBits(IOValue, CFG_PANEL_ID); - pATIHW->horz_stretching = inr(HORZ_STRETCHING); - pATIHW->vert_stretching = inr(VERT_STRETCHING); - pATIHW->lcd_gen_ctrl = inr(LCD_GEN_CTRL); + pATI->OldHW.horz_stretching = inr(HORZ_STRETCHING); + pATI->OldHW.vert_stretching = inr(VERT_STRETCHING); + pATI->OldHW.lcd_gen_ctrl = inr(LCD_GEN_CTRL); } else if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) { pATI->LCDPanelID = GetBits(IOValue, CFG_PANEL_ID); - pATIHW->lcd_index = inr(LCD_INDEX); - pATIHW->horz_stretching = ATIMach64GetLCDReg(LCD_HORZ_STRETCHING); - pATI->LCDHorizontal = GetBits(pATIHW->horz_stretching, + pATI->OldHW.lcd_index = inr(LCD_INDEX); + pATI->OldHW.horz_stretching = ATIMach64GetLCDReg(LCD_HORZ_STRETCHING); + pATI->LCDHorizontal = GetBits(pATI->OldHW.horz_stretching, HORZ_PANEL_SIZE); if (pATI->LCDHorizontal) { if (pATI->LCDHorizontal == MaxBits(HORZ_PANEL_SIZE)) @@ -668,8 +665,8 @@ Mach64PanelScratchInfoGet(ATIPtr pATI) else pATI->LCDHorizontal = (pATI->LCDHorizontal + 1) << 3; } - pATIHW->ext_vert_stretch = ATIMach64GetLCDReg(LCD_EXT_VERT_STRETCH); - pATI->LCDVertical = GetBits(pATIHW->ext_vert_stretch, + pATI->OldHW.ext_vert_stretch = ATIMach64GetLCDReg(LCD_EXT_VERT_STRETCH); + pATI->LCDVertical = GetBits(pATI->OldHW.ext_vert_stretch, VERT_PANEL_SIZE); if (pATI->LCDVertical) { if (pATI->LCDVertical == MaxBits(VERT_PANEL_SIZE)) @@ -677,9 +674,9 @@ Mach64PanelScratchInfoGet(ATIPtr pATI) else pATI->LCDVertical++; } - pATIHW->vert_stretching = ATIMach64GetLCDReg(LCD_VERT_STRETCHING); - pATIHW->lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL); - outr(LCD_INDEX, pATIHW->lcd_index); + pATI->OldHW.vert_stretching = ATIMach64GetLCDReg(LCD_VERT_STRETCHING); + pATI->OldHW.lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL); + outr(LCD_INDEX, pATI->OldHW.lcd_index); } /* @@ -687,9 +684,9 @@ Mach64PanelScratchInfoGet(ATIPtr pATI) * enabled. */ if ((pATI->LCDPanelID >= 0) && - !(pATIHW->horz_stretching & HORZ_STRETCH_EN) && - !(pATIHW->vert_stretching & VERT_STRETCH_EN) && - !(pATIHW->lcd_gen_ctrl & LCD_ON)) { + !(pATI->OldHW.horz_stretching & HORZ_STRETCH_EN) && + !(pATI->OldHW.vert_stretching & VERT_STRETCH_EN) && + !(pATI->OldHW.lcd_gen_ctrl & LCD_ON)) { /* * At this point, if an XL or Mobility BIOS hasn't set * panel dimensions, then there is no panel. Otherwise, @@ -726,65 +723,65 @@ Mach64PanelInfoGet(ATIPtr pATI) */ if (pATI->Chip == ATI_CHIP_264LT) { - pATIHW->lcd_gen_ctrl = inr(LCD_GEN_CTRL); + pATI->OldHW.lcd_gen_ctrl = inr(LCD_GEN_CTRL); /* Set up to read non-shadow registers */ - if (pATIHW->lcd_gen_ctrl & SHADOW_RW_EN) - outr(LCD_GEN_CTRL, pATIHW->lcd_gen_ctrl & ~SHADOW_RW_EN); + if (pATI->OldHW.lcd_gen_ctrl & SHADOW_RW_EN) + outr(LCD_GEN_CTRL, pATI->OldHW.lcd_gen_ctrl & ~SHADOW_RW_EN); } else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) */ { - pATIHW->lcd_index = inr(LCD_INDEX); - pATIHW->config_panel = ATIMach64GetLCDReg(LCD_CONFIG_PANEL); - pATIHW->lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL); + pATI->OldHW.lcd_index = inr(LCD_INDEX); + pATI->OldHW.config_panel = ATIMach64GetLCDReg(LCD_CONFIG_PANEL); + pATI->OldHW.lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL); /* Set up to read non-shadow registers */ - if (pATIHW->lcd_gen_ctrl & SHADOW_RW_EN) - ATIMach64PutLCDReg(LCD_GEN_CNTL, pATIHW->lcd_gen_ctrl & ~SHADOW_RW_EN); + if (pATI->OldHW.lcd_gen_ctrl & SHADOW_RW_EN) + ATIMach64PutLCDReg(LCD_GEN_CNTL, pATI->OldHW.lcd_gen_ctrl & ~SHADOW_RW_EN); } #ifndef AVOID_CPIO - if (!(pATIHW->crtc_gen_cntl & CRTC_EXT_DISP_EN)) { + if (!(pATI->OldHW.crtc_gen_cntl & CRTC_EXT_DISP_EN)) { unsigned HBlankStart, HSyncStart, HSyncEnd, HBlankEnd, HTotal; unsigned VBlankStart, VSyncStart, VSyncEnd, VBlankEnd, VTotal; - pATIHW->clock = (inb(R_GENMO) & 0x0CU) >> 2; + pATI->OldHW.clock = (inb(R_GENMO) & 0x0CU) >> 2; - pATIHW->crt[2] = GetReg(CRTX(pATI->CPIO_VGABase), 0x02U); - pATIHW->crt[3] = GetReg(CRTX(pATI->CPIO_VGABase), 0x03U); - pATIHW->crt[5] = GetReg(CRTX(pATI->CPIO_VGABase), 0x05U); - pATIHW->crt[7] = GetReg(CRTX(pATI->CPIO_VGABase), 0x07U); - pATIHW->crt[9] = GetReg(CRTX(pATI->CPIO_VGABase), 0x09U); - pATIHW->crt[21] = GetReg(CRTX(pATI->CPIO_VGABase), 0x15U); - pATIHW->crt[22] = GetReg(CRTX(pATI->CPIO_VGABase), 0x16U); + pATI->OldHW.crt[2] = GetReg(CRTX(pATI->CPIO_VGABase), 0x02U); + pATI->OldHW.crt[3] = GetReg(CRTX(pATI->CPIO_VGABase), 0x03U); + pATI->OldHW.crt[5] = GetReg(CRTX(pATI->CPIO_VGABase), 0x05U); + pATI->OldHW.crt[7] = GetReg(CRTX(pATI->CPIO_VGABase), 0x07U); + pATI->OldHW.crt[9] = GetReg(CRTX(pATI->CPIO_VGABase), 0x09U); + pATI->OldHW.crt[21] = GetReg(CRTX(pATI->CPIO_VGABase), 0x15U); + pATI->OldHW.crt[22] = GetReg(CRTX(pATI->CPIO_VGABase), 0x16U); - pATIHW->crtc_h_total_disp = inr(CRTC_H_TOTAL_DISP); - pATIHW->crtc_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); - pATIHW->crtc_v_total_disp = inr(CRTC_V_TOTAL_DISP); - pATIHW->crtc_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); + pATI->OldHW.crtc_h_total_disp = inr(CRTC_H_TOTAL_DISP); + pATI->OldHW.crtc_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); + pATI->OldHW.crtc_v_total_disp = inr(CRTC_V_TOTAL_DISP); + pATI->OldHW.crtc_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); /* Switch to shadow registers */ if (pATI->Chip == ATI_CHIP_264LT) - outr(LCD_GEN_CTRL, pATIHW->lcd_gen_ctrl | SHADOW_RW_EN); + outr(LCD_GEN_CTRL, pATI->OldHW.lcd_gen_ctrl | SHADOW_RW_EN); else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) */ - ATIMach64PutLCDReg(LCD_GEN_CNTL, pATIHW->lcd_gen_ctrl | SHADOW_RW_EN); + ATIMach64PutLCDReg(LCD_GEN_CNTL, pATI->OldHW.lcd_gen_ctrl | SHADOW_RW_EN); - pATIHW->shadow_vga[2] = GetReg(CRTX(pATI->CPIO_VGABase), 0x02U); - pATIHW->shadow_vga[3] = GetReg(CRTX(pATI->CPIO_VGABase), 0x03U); - pATIHW->shadow_vga[5] = GetReg(CRTX(pATI->CPIO_VGABase), 0x05U); - pATIHW->shadow_vga[7] = GetReg(CRTX(pATI->CPIO_VGABase), 0x07U); - pATIHW->shadow_vga[9] = GetReg(CRTX(pATI->CPIO_VGABase), 0x09U); - pATIHW->shadow_vga[21] = GetReg(CRTX(pATI->CPIO_VGABase), 0x15U); - pATIHW->shadow_vga[22] = GetReg(CRTX(pATI->CPIO_VGABase), 0x16U); + pATI->OldHW.shadow_vga[2] = GetReg(CRTX(pATI->CPIO_VGABase), 0x02U); + pATI->OldHW.shadow_vga[3] = GetReg(CRTX(pATI->CPIO_VGABase), 0x03U); + pATI->OldHW.shadow_vga[5] = GetReg(CRTX(pATI->CPIO_VGABase), 0x05U); + pATI->OldHW.shadow_vga[7] = GetReg(CRTX(pATI->CPIO_VGABase), 0x07U); + pATI->OldHW.shadow_vga[9] = GetReg(CRTX(pATI->CPIO_VGABase), 0x09U); + pATI->OldHW.shadow_vga[21] = GetReg(CRTX(pATI->CPIO_VGABase), 0x15U); + pATI->OldHW.shadow_vga[22] = GetReg(CRTX(pATI->CPIO_VGABase), 0x16U); - pATIHW->shadow_h_total_disp = inr(CRTC_H_TOTAL_DISP); - pATIHW->shadow_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); - pATIHW->shadow_v_total_disp = inr(CRTC_V_TOTAL_DISP); - pATIHW->shadow_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); + pATI->OldHW.shadow_h_total_disp = inr(CRTC_H_TOTAL_DISP); + pATI->OldHW.shadow_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); + pATI->OldHW.shadow_v_total_disp = inr(CRTC_V_TOTAL_DISP); + pATI->OldHW.shadow_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); /* * HSyncStart and HSyncEnd should equal their shadow @@ -797,7 +794,7 @@ Mach64PanelInfoGet(ATIPtr pATI) * * Note that this hardware bug does not affect the CRT output. */ - if (((pATIHW->crtc_h_sync_strt_wid ^ pATIHW->shadow_h_sync_strt_wid) & + if (((pATI->OldHW.crtc_h_sync_strt_wid ^ pATI->OldHW.shadow_h_sync_strt_wid) & (CRTC_H_SYNC_STRT | CRTC_H_SYNC_STRT_HI | CRTC_H_SYNC_WID))) { xf86DrvMsgVerb(pATI->scrnIndex, X_NOTICE, 0, "Invalid horizontal " "sync pulse timing detected in mode on server " @@ -808,45 +805,45 @@ Mach64PanelInfoGet(ATIPtr pATI) } /* Merge in shadow registers as appropriate */ - if (pATIHW->lcd_gen_ctrl & SHADOW_EN) { - pATIHW->crt[2] = pATIHW->shadow_vga[2]; - pATIHW->crt[3] = pATIHW->shadow_vga[3]; - pATIHW->crt[5] = pATIHW->shadow_vga[5]; + if (pATI->OldHW.lcd_gen_ctrl & SHADOW_EN) { + pATI->OldHW.crt[2] = pATI->OldHW.shadow_vga[2]; + pATI->OldHW.crt[3] = pATI->OldHW.shadow_vga[3]; + pATI->OldHW.crt[5] = pATI->OldHW.shadow_vga[5]; /* XXX Does this apply to VGA? If so, what about the LT? */ if ((pATI->Chip < ATI_CHIP_264LTPRO) || - !(pATIHW->config_panel & DONT_SHADOW_HEND)) { - pATIHW->crtc_h_total_disp &= ~CRTC_H_DISP; - pATIHW->crtc_h_total_disp |= - pATIHW->shadow_h_total_disp & CRTC_H_DISP; + !(pATI->OldHW.config_panel & DONT_SHADOW_HEND)) { + pATI->OldHW.crtc_h_total_disp &= ~CRTC_H_DISP; + pATI->OldHW.crtc_h_total_disp |= + pATI->OldHW.shadow_h_total_disp & CRTC_H_DISP; } - pATIHW->crtc_h_total_disp &= ~CRTC_H_TOTAL; - pATIHW->crtc_h_total_disp |= - pATIHW->shadow_h_total_disp & CRTC_H_TOTAL; - pATIHW->crtc_h_sync_strt_wid = pATIHW->shadow_h_sync_strt_wid; + pATI->OldHW.crtc_h_total_disp &= ~CRTC_H_TOTAL; + pATI->OldHW.crtc_h_total_disp |= + pATI->OldHW.shadow_h_total_disp & CRTC_H_TOTAL; + pATI->OldHW.crtc_h_sync_strt_wid = pATI->OldHW.shadow_h_sync_strt_wid; /* XXX Does this apply to VGA? */ - if (pATIHW->lcd_gen_ctrl & USE_SHADOWED_VEND) { - pATIHW->crtc_v_total_disp &= ~CRTC_V_DISP; - pATIHW->crtc_v_total_disp |= - pATIHW->shadow_v_total_disp & CRTC_V_DISP; + if (pATI->OldHW.lcd_gen_ctrl & USE_SHADOWED_VEND) { + pATI->OldHW.crtc_v_total_disp &= ~CRTC_V_DISP; + pATI->OldHW.crtc_v_total_disp |= + pATI->OldHW.shadow_v_total_disp & CRTC_V_DISP; } - if (!(pATIHW->lcd_gen_ctrl & DONT_SHADOW_VPAR)) { - pATIHW->crt[7] = pATIHW->shadow_vga[7]; - pATIHW->crt[9] = pATIHW->shadow_vga[9]; - pATIHW->crt[21] = pATIHW->shadow_vga[21]; - pATIHW->crt[22] = pATIHW->shadow_vga[22]; + if (!(pATI->OldHW.lcd_gen_ctrl & DONT_SHADOW_VPAR)) { + pATI->OldHW.crt[7] = pATI->OldHW.shadow_vga[7]; + pATI->OldHW.crt[9] = pATI->OldHW.shadow_vga[9]; + pATI->OldHW.crt[21] = pATI->OldHW.shadow_vga[21]; + pATI->OldHW.crt[22] = pATI->OldHW.shadow_vga[22]; - pATIHW->crtc_v_total_disp &= ~CRTC_V_TOTAL; - pATIHW->crtc_v_total_disp |= - pATIHW->shadow_v_total_disp & CRTC_V_TOTAL; + pATI->OldHW.crtc_v_total_disp &= ~CRTC_V_TOTAL; + pATI->OldHW.crtc_v_total_disp |= + pATI->OldHW.shadow_v_total_disp & CRTC_V_TOTAL; } } - if (!(pATIHW->lcd_gen_ctrl & DONT_SHADOW_VPAR)) - pATIHW->crtc_v_sync_strt_wid = pATIHW->shadow_v_sync_strt_wid; + if (!(pATI->OldHW.lcd_gen_ctrl & DONT_SHADOW_VPAR)) + pATI->OldHW.crtc_v_sync_strt_wid = pATI->OldHW.shadow_v_sync_strt_wid; /* * Decipher input timing. This is complicated by the fact that @@ -858,37 +855,37 @@ Mach64PanelInfoGet(ATIPtr pATI) * Note that, in VGA mode, the accelerator's sync width fields * are actually end positions, not widths. */ - HDisplay = GetBits(pATIHW->crtc_h_total_disp, CRTC_H_DISP); - HSyncStart = (GetBits(pATIHW->crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT_HI) * + HDisplay = GetBits(pATI->OldHW.crtc_h_total_disp, CRTC_H_DISP); + HSyncStart = (GetBits(pATI->OldHW.crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT_HI) * (MaxBits(CRTC_H_SYNC_STRT) + 1)) | - GetBits(pATIHW->crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT); + GetBits(pATI->OldHW.crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT); HSyncEnd = (HSyncStart & ~MaxBits(CRTC_H_SYNC_WID)) | - GetBits(pATIHW->crtc_h_sync_strt_wid, CRTC_H_SYNC_WID); + GetBits(pATI->OldHW.crtc_h_sync_strt_wid, CRTC_H_SYNC_WID); if (HSyncStart >= HSyncEnd) HSyncEnd += MaxBits(CRTC_H_SYNC_WID) + 1; - HTotal = GetBits(pATIHW->crtc_h_total_disp, CRTC_H_TOTAL); + HTotal = GetBits(pATI->OldHW.crtc_h_total_disp, CRTC_H_TOTAL); - HBlankStart = (HDisplay & ~0xFFU) | pATIHW->crt[2]; + HBlankStart = (HDisplay & ~0xFFU) | pATI->OldHW.crt[2]; if (HDisplay > HBlankStart) HBlankStart += 0x0100U; - HBlankEnd = (HSyncEnd & ~0x3FU) | ((pATIHW->crt[5] >> 2) & 0x20U) | - (pATIHW->crt[3] & 0x1FU); + HBlankEnd = (HSyncEnd & ~0x3FU) | ((pATI->OldHW.crt[5] >> 2) & 0x20U) | + (pATI->OldHW.crt[3] & 0x1FU); if (HSyncEnd > (HBlankEnd + 1)) HBlankEnd += 0x40U; - VDisplay = GetBits(pATIHW->crtc_v_total_disp, CRTC_V_DISP); - VSyncStart = GetBits(pATIHW->crtc_v_sync_strt_wid, CRTC_V_SYNC_STRT); + VDisplay = GetBits(pATI->OldHW.crtc_v_total_disp, CRTC_V_DISP); + VSyncStart = GetBits(pATI->OldHW.crtc_v_sync_strt_wid, CRTC_V_SYNC_STRT); VSyncEnd = (VSyncStart & ~MaxBits(CRTC_V_SYNC_END_VGA)) | - GetBits(pATIHW->crtc_v_sync_strt_wid, CRTC_V_SYNC_END_VGA); + GetBits(pATI->OldHW.crtc_v_sync_strt_wid, CRTC_V_SYNC_END_VGA); if (VSyncStart > VSyncEnd) VSyncEnd += MaxBits(CRTC_V_SYNC_END_VGA) + 1; - VTotal = GetBits(pATIHW->crtc_v_total_disp, CRTC_V_TOTAL); + VTotal = GetBits(pATI->OldHW.crtc_v_total_disp, CRTC_V_TOTAL); - VBlankStart = (VDisplay & ~0x03FFU) | ((pATIHW->crt[9] << 4) & 0x0200U) | - ((pATIHW->crt[7] << 5) & 0x0100U) | pATIHW->crt[21]; + VBlankStart = (VDisplay & ~0x03FFU) | ((pATI->OldHW.crt[9] << 4) & 0x0200U) | + ((pATI->OldHW.crt[7] << 5) & 0x0100U) | pATI->OldHW.crt[21]; if (VDisplay > VBlankStart) VBlankStart += 0x0400U; - VBlankEnd = (VSyncEnd & ~0x00FFU) | pATIHW->crt[22]; + VBlankEnd = (VSyncEnd & ~0x00FFU) | pATI->OldHW.crt[22]; if (VSyncEnd > (VBlankEnd + 1)) VBlankEnd += 0x0100U; @@ -907,28 +904,28 @@ Mach64PanelInfoGet(ATIPtr pATI) #endif /* AVOID_CPIO */ { - pATIHW->clock = inr(CLOCK_CNTL) & 0x03U; + pATI->OldHW.clock = inr(CLOCK_CNTL) & 0x03U; - pATIHW->crtc_h_total_disp = inr(CRTC_H_TOTAL_DISP); - pATIHW->crtc_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); - pATIHW->crtc_v_total_disp = inr(CRTC_V_TOTAL_DISP); - pATIHW->crtc_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); - pATIHW->ovr_wid_left_right = inr(OVR_WID_LEFT_RIGHT); - pATIHW->ovr_wid_top_bottom = inr(OVR_WID_TOP_BOTTOM); + pATI->OldHW.crtc_h_total_disp = inr(CRTC_H_TOTAL_DISP); + pATI->OldHW.crtc_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); + pATI->OldHW.crtc_v_total_disp = inr(CRTC_V_TOTAL_DISP); + pATI->OldHW.crtc_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); + pATI->OldHW.ovr_wid_left_right = inr(OVR_WID_LEFT_RIGHT); + pATI->OldHW.ovr_wid_top_bottom = inr(OVR_WID_TOP_BOTTOM); /* Switch to shadow registers */ if (pATI->Chip == ATI_CHIP_264LT) - outr(LCD_GEN_CTRL, pATIHW->lcd_gen_ctrl | SHADOW_RW_EN); + outr(LCD_GEN_CTRL, pATI->OldHW.lcd_gen_ctrl | SHADOW_RW_EN); else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) */ - ATIMach64PutLCDReg(LCD_GEN_CNTL, pATIHW->lcd_gen_ctrl | SHADOW_RW_EN); + ATIMach64PutLCDReg(LCD_GEN_CNTL, pATI->OldHW.lcd_gen_ctrl | SHADOW_RW_EN); /* Oddly enough, there are no shadow overscan registers */ - pATIHW->shadow_h_total_disp = inr(CRTC_H_TOTAL_DISP); - pATIHW->shadow_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); - pATIHW->shadow_v_total_disp = inr(CRTC_V_TOTAL_DISP); - pATIHW->shadow_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); + pATI->OldHW.shadow_h_total_disp = inr(CRTC_H_TOTAL_DISP); + pATI->OldHW.shadow_h_sync_strt_wid = inr(CRTC_H_SYNC_STRT_WID); + pATI->OldHW.shadow_v_total_disp = inr(CRTC_V_TOTAL_DISP); + pATI->OldHW.shadow_v_sync_strt_wid = inr(CRTC_V_SYNC_STRT_WID); /* * HSyncStart and HSyncEnd should equal their shadow @@ -941,7 +938,7 @@ Mach64PanelInfoGet(ATIPtr pATI) * * Note that this hardware bug does not affect the CRT output. */ - if (((pATIHW->crtc_h_sync_strt_wid ^ pATIHW->shadow_h_sync_strt_wid) & + if (((pATI->OldHW.crtc_h_sync_strt_wid ^ pATI->OldHW.shadow_h_sync_strt_wid) & (CRTC_H_SYNC_STRT | CRTC_H_SYNC_STRT_HI | CRTC_H_SYNC_WID))) { xf86DrvMsgVerb(pATI->scrnIndex, X_NOTICE, 0, "Invalid horizontal sync pulse timing detected " @@ -952,59 +949,59 @@ Mach64PanelInfoGet(ATIPtr pATI) } /* Merge in shadow registers as appropriate */ - if (pATIHW->lcd_gen_ctrl & SHADOW_EN) { + if (pATI->OldHW.lcd_gen_ctrl & SHADOW_EN) { /* XXX What about the LT? */ if ((pATI->Chip < ATI_CHIP_264LTPRO) || - !(pATIHW->config_panel & DONT_SHADOW_HEND)) { - pATIHW->crtc_h_total_disp &= ~CRTC_H_DISP; - pATIHW->crtc_h_total_disp |= - pATIHW->shadow_h_total_disp & CRTC_H_DISP; + !(pATI->OldHW.config_panel & DONT_SHADOW_HEND)) { + pATI->OldHW.crtc_h_total_disp &= ~CRTC_H_DISP; + pATI->OldHW.crtc_h_total_disp |= + pATI->OldHW.shadow_h_total_disp & CRTC_H_DISP; } - pATIHW->crtc_h_total_disp &= ~CRTC_H_TOTAL; - pATIHW->crtc_h_total_disp |= - pATIHW->shadow_h_total_disp & CRTC_H_TOTAL; - pATIHW->crtc_h_sync_strt_wid = pATIHW->shadow_h_sync_strt_wid; + pATI->OldHW.crtc_h_total_disp &= ~CRTC_H_TOTAL; + pATI->OldHW.crtc_h_total_disp |= + pATI->OldHW.shadow_h_total_disp & CRTC_H_TOTAL; + pATI->OldHW.crtc_h_sync_strt_wid = pATI->OldHW.shadow_h_sync_strt_wid; - if (pATIHW->lcd_gen_ctrl & USE_SHADOWED_VEND) { - pATIHW->crtc_v_total_disp &= ~CRTC_V_DISP; - pATIHW->crtc_v_total_disp |= - pATIHW->shadow_v_total_disp & CRTC_V_DISP; + if (pATI->OldHW.lcd_gen_ctrl & USE_SHADOWED_VEND) { + pATI->OldHW.crtc_v_total_disp &= ~CRTC_V_DISP; + pATI->OldHW.crtc_v_total_disp |= + pATI->OldHW.shadow_v_total_disp & CRTC_V_DISP; } - if (!(pATIHW->lcd_gen_ctrl & DONT_SHADOW_VPAR)) { - pATIHW->crtc_v_total_disp &= ~CRTC_V_TOTAL; - pATIHW->crtc_v_total_disp |= - pATIHW->shadow_v_total_disp & CRTC_V_TOTAL; + if (!(pATI->OldHW.lcd_gen_ctrl & DONT_SHADOW_VPAR)) { + pATI->OldHW.crtc_v_total_disp &= ~CRTC_V_TOTAL; + pATI->OldHW.crtc_v_total_disp |= + pATI->OldHW.shadow_v_total_disp & CRTC_V_TOTAL; } } - if (!(pATIHW->lcd_gen_ctrl & DONT_SHADOW_VPAR)) - pATIHW->crtc_v_sync_strt_wid = pATIHW->shadow_v_sync_strt_wid; + if (!(pATI->OldHW.lcd_gen_ctrl & DONT_SHADOW_VPAR)) + pATI->OldHW.crtc_v_sync_strt_wid = pATI->OldHW.shadow_v_sync_strt_wid; /* Decipher input timing */ - HDisplay = GetBits(pATIHW->crtc_h_total_disp, CRTC_H_DISP) + - GetBits(pATIHW->ovr_wid_left_right, OVR_WID_LEFT) + - GetBits(pATIHW->ovr_wid_left_right, OVR_WID_RIGHT); - VDisplay = GetBits(pATIHW->crtc_v_total_disp, CRTC_V_DISP) + - GetBits(pATIHW->ovr_wid_top_bottom, OVR_WID_TOP) + - GetBits(pATIHW->ovr_wid_top_bottom, OVR_WID_BOTTOM); + HDisplay = GetBits(pATI->OldHW.crtc_h_total_disp, CRTC_H_DISP) + + GetBits(pATI->OldHW.ovr_wid_left_right, OVR_WID_LEFT) + + GetBits(pATI->OldHW.ovr_wid_left_right, OVR_WID_RIGHT); + VDisplay = GetBits(pATI->OldHW.crtc_v_total_disp, CRTC_V_DISP) + + GetBits(pATI->OldHW.ovr_wid_top_bottom, OVR_WID_TOP) + + GetBits(pATI->OldHW.ovr_wid_top_bottom, OVR_WID_BOTTOM); pATI->LCDHSyncStart = - (GetBits(pATIHW->crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT_HI) * + (GetBits(pATI->OldHW.crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT_HI) * (MaxBits(CRTC_H_SYNC_STRT) + 1)) + - GetBits(pATIHW->crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT) - + GetBits(pATI->OldHW.crtc_h_sync_strt_wid, CRTC_H_SYNC_STRT) - HDisplay; pATI->LCDHSyncWidth = - GetBits(pATIHW->crtc_h_sync_strt_wid, CRTC_H_SYNC_WID); + GetBits(pATI->OldHW.crtc_h_sync_strt_wid, CRTC_H_SYNC_WID); pATI->LCDHBlankWidth = - GetBits(pATIHW->crtc_h_total_disp, CRTC_H_TOTAL) - HDisplay; + GetBits(pATI->OldHW.crtc_h_total_disp, CRTC_H_TOTAL) - HDisplay; pATI->LCDVSyncStart = - GetBits(pATIHW->crtc_v_sync_strt_wid, CRTC_V_SYNC_STRT) - VDisplay; + GetBits(pATI->OldHW.crtc_v_sync_strt_wid, CRTC_V_SYNC_STRT) - VDisplay; pATI->LCDVSyncWidth = - GetBits(pATIHW->crtc_v_sync_strt_wid, CRTC_V_SYNC_WID); + GetBits(pATI->OldHW.crtc_v_sync_strt_wid, CRTC_V_SYNC_WID); pATI->LCDVBlankWidth = - GetBits(pATIHW->crtc_v_total_disp, CRTC_V_TOTAL) - VDisplay; + GetBits(pATI->OldHW.crtc_v_total_disp, CRTC_V_TOTAL) - VDisplay; HDisplay++; VDisplay++; @@ -1012,12 +1009,12 @@ Mach64PanelInfoGet(ATIPtr pATI) /* Restore LCD registers */ if (pATI->Chip == ATI_CHIP_264LT) { - outr(LCD_GEN_CTRL, pATIHW->lcd_gen_ctrl); + outr(LCD_GEN_CTRL, pATI->OldHW.lcd_gen_ctrl); } else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) */ { - ATIMach64PutLCDReg(LCD_GEN_CNTL, pATIHW->lcd_gen_ctrl); - outr(LCD_INDEX, pATIHW->lcd_index); + ATIMach64PutLCDReg(LCD_GEN_CNTL, pATI->OldHW.lcd_gen_ctrl); + outr(LCD_INDEX, pATI->OldHW.lcd_index); } HDisplay <<= 3; @@ -1026,20 +1023,20 @@ Mach64PanelInfoGet(ATIPtr pATI) pATI->LCDHBlankWidth <<= 3; /* Calculate panel dimensions implied by the input timing */ - if ((pATIHW->horz_stretching & (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) == + if ((pATI->OldHW.horz_stretching & (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) == HORZ_STRETCH_EN) { - if (pATIHW->horz_stretching & HORZ_STRETCH_MODE) { - if (pATIHW->horz_stretching & HORZ_STRETCH_BLEND) + if (pATI->OldHW.horz_stretching & HORZ_STRETCH_MODE) { + if (pATI->OldHW.horz_stretching & HORZ_STRETCH_BLEND) HDisplay = (HDisplay * (MaxBits(HORZ_STRETCH_BLEND) + 1)) / - GetBits(pATIHW->horz_stretching, HORZ_STRETCH_BLEND); - } else if (((pATIHW->horz_stretching & HORZ_STRETCH_LOOP) > HORZ_STRETCH_LOOP15) || - (pATIHW->horz_stretching & SetBits(1, HORZ_STRETCH_RATIO))) { + GetBits(pATI->OldHW.horz_stretching, HORZ_STRETCH_BLEND); + } else if (((pATI->OldHW.horz_stretching & HORZ_STRETCH_LOOP) > HORZ_STRETCH_LOOP15) || + (pATI->OldHW.horz_stretching & SetBits(1, HORZ_STRETCH_RATIO))) { xf86DrvMsg(pATI->scrnIndex, X_WARNING, "Ignoring invalid horizontal" " stretch ratio in mode on server entry.\n"); } else { - IOValue = GetBits(pATIHW->horz_stretching, HORZ_STRETCH_RATIO); + IOValue = GetBits(pATI->OldHW.horz_stretching, HORZ_STRETCH_RATIO); - switch (GetBits(pATIHW->horz_stretching, HORZ_STRETCH_LOOP)) { + switch (GetBits(pATI->OldHW.horz_stretching, HORZ_STRETCH_LOOP)) { case GetBits(HORZ_STRETCH_LOOP09, HORZ_STRETCH_LOOP): i = 9; IOValue &= (1 << 9) - 1; @@ -1078,16 +1075,16 @@ Mach64PanelInfoGet(ATIPtr pATI) } } - if ((pATIHW->vert_stretching & VERT_STRETCH_EN) && - !(pATIHW->ext_vert_stretch & AUTO_VERT_RATIO)) { - if ((pATIHW->vert_stretching & VERT_STRETCH_USE0) || (VDisplay <= 350)) - IOValue = GetBits(pATIHW->vert_stretching, VERT_STRETCH_RATIO0); + if ((pATI->OldHW.vert_stretching & VERT_STRETCH_EN) && + !(pATI->OldHW.ext_vert_stretch & AUTO_VERT_RATIO)) { + if ((pATI->OldHW.vert_stretching & VERT_STRETCH_USE0) || (VDisplay <= 350)) + IOValue = GetBits(pATI->OldHW.vert_stretching, VERT_STRETCH_RATIO0); else if (VDisplay <= 400) - IOValue = GetBits(pATIHW->vert_stretching, VERT_STRETCH_RATIO1); - else if ((VDisplay <= 480) || !(pATIHW->ext_vert_stretch & VERT_STRETCH_RATIO3)) - IOValue = GetBits(pATIHW->vert_stretching, VERT_STRETCH_RATIO2); + IOValue = GetBits(pATI->OldHW.vert_stretching, VERT_STRETCH_RATIO1); + else if ((VDisplay <= 480) || !(pATI->OldHW.ext_vert_stretch & VERT_STRETCH_RATIO3)) + IOValue = GetBits(pATI->OldHW.vert_stretching, VERT_STRETCH_RATIO2); else - IOValue = GetBits(pATIHW->ext_vert_stretch, VERT_STRETCH_RATIO3); + IOValue = GetBits(pATI->OldHW.ext_vert_stretch, VERT_STRETCH_RATIO3); if (IOValue) VDisplay = (VDisplay * (MaxBits(VERT_STRETCH_RATIO0) + 1)) / IOValue; @@ -1095,11 +1092,11 @@ Mach64PanelInfoGet(ATIPtr pATI) /* Match calculated dimensions to probed dimensions */ if (!pATI->LCDHorizontal) { - if ((pATIHW->horz_stretching & (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) != + if ((pATI->OldHW.horz_stretching & (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) != (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) pATI->LCDHorizontal = HDisplay; } else if (pATI->LCDHorizontal != (int)HDisplay) { - if ((pATIHW->horz_stretching & (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) != + if ((pATI->OldHW.horz_stretching & (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) != (HORZ_STRETCH_EN | AUTO_HORZ_RATIO)) xf86DrvMsgVerb(pATI->scrnIndex, X_WARNING, 4, "Inconsistent panel " "horizontal dimension: %d and %d.\n", @@ -1108,12 +1105,12 @@ Mach64PanelInfoGet(ATIPtr pATI) } if (!pATI->LCDVertical) { - if (!(pATIHW->vert_stretching & VERT_STRETCH_EN) || - !(pATIHW->ext_vert_stretch & AUTO_VERT_RATIO)) + if (!(pATI->OldHW.vert_stretching & VERT_STRETCH_EN) || + !(pATI->OldHW.ext_vert_stretch & AUTO_VERT_RATIO)) pATI->LCDVertical = VDisplay; } else if (pATI->LCDVertical != (int)VDisplay) { - if (!(pATIHW->vert_stretching & VERT_STRETCH_EN) || - !(pATIHW->ext_vert_stretch & AUTO_VERT_RATIO)) + if (!(pATI->OldHW.vert_stretching & VERT_STRETCH_EN) || + !(pATI->OldHW.ext_vert_stretch & AUTO_VERT_RATIO)) xf86DrvMsgVerb(pATI->scrnIndex, X_WARNING, 4, "Inconsistent panel " "vertical dimension: %d and %d.\n", pATI->LCDVertical, VDisplay); @@ -1131,7 +1128,7 @@ Mach64PanelInfoGet(ATIPtr pATI) } /* If the mode on entry wasn't stretched, adjust timings */ - if (!(pATIHW->horz_stretching & HORZ_STRETCH_EN) && + if (!(pATI->OldHW.horz_stretching & HORZ_STRETCH_EN) && (pATI->LCDHorizontal > (int)HDisplay)) { HDisplay = pATI->LCDHorizontal - HDisplay; if (pATI->LCDHSyncStart >= HDisplay) @@ -1144,7 +1141,7 @@ Mach64PanelInfoGet(ATIPtr pATI) pATI->LCDHBlankWidth = HDisplay; } - if (!(pATIHW->vert_stretching & VERT_STRETCH_EN) && + if (!(pATI->OldHW.vert_stretching & VERT_STRETCH_EN) && (pATI->LCDVertical > (int)VDisplay)) { VDisplay = pATI->LCDVertical - VDisplay; if (pATI->LCDVSyncStart >= VDisplay) @@ -1174,14 +1171,14 @@ Mach64PanelInfoGet(ATIPtr pATI) * Get post divider. A GCC bug has caused the following expression * to be broken down into its individual components. */ - ClockMask = PLL_VCLK0_XDIV << pATIHW->clock; - PostMask = PLL_VCLK0_POST_DIV << (pATIHW->clock * 2); + ClockMask = PLL_VCLK0_XDIV << pATI->OldHW.clock; + PostMask = PLL_VCLK0_POST_DIV << (pATI->OldHW.clock * 2); i = GetBits(ATIMach64GetPLLReg(PLL_XCLK_CNTL), ClockMask); i *= MaxBits(PLL_VCLK0_POST_DIV) + 1; i |= GetBits(ATIMach64GetPLLReg(PLL_VCLK_POST_DIV), PostMask); /* Calculate clock of mode on entry */ - Numerator = ATIMach64GetPLLReg(PLL_VCLK0_FB_DIV + pATIHW->clock) * + Numerator = ATIMach64GetPLLReg(PLL_VCLK0_FB_DIV + pATI->OldHW.clock) * pATI->ReferenceNumerator; Denominator = pATI->ClockDescriptor.MinM * pATI->ReferenceDenominator * pATI->ClockDescriptor.PostDividers[i]; @@ -1664,8 +1661,8 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) pATI->nFIFOEntries = 16; /* For now */ pATI->Audio = ATI_AUDIO_NONE; - pATIHW->crtc_gen_cntl = inr(CRTC_GEN_CNTL); - if (!(pATIHW->crtc_gen_cntl & CRTC_EN) && + pATI->OldHW.crtc_gen_cntl = inr(CRTC_GEN_CNTL); + if (!(pATI->OldHW.crtc_gen_cntl & CRTC_EN) && (pATI->Chip >= ATI_CHIP_264CT)) { xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR, "Adapter has not been initialised.\n"); @@ -1676,7 +1673,7 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) #ifdef AVOID_CPIO - if (!(pATIHW->crtc_gen_cntl & CRTC_EXT_DISP_EN)) { + if (!(pATI->OldHW.crtc_gen_cntl & CRTC_EXT_DISP_EN)) { xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR, "Adapters found to be in VGA mode on server entry are not" " supported by the MMIO-only version of this driver.\n"); @@ -1687,14 +1684,14 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) #endif /* AVOID_CPIO */ - pATIHW->mem_cntl = inr(MEM_CNTL); + pATI->OldHW.mem_cntl = inr(MEM_CNTL); if (pATI->Chip < ATI_CHIP_264VTB) { - pATI->VideoRAM = videoRamSizes[GetBits(pATIHW->mem_cntl, + pATI->VideoRAM = videoRamSizes[GetBits(pATI->OldHW.mem_cntl, CTL_MEM_SIZE) + 2]; } else { pATI->nFIFOEntries = (unsigned int)(-1) >> 1; /* Don't care */ - IOValue = GetBits(pATIHW->mem_cntl, CTL_MEM_SIZEB); + IOValue = GetBits(pATI->OldHW.mem_cntl, CTL_MEM_SIZEB); if (IOValue < 8) pATI->VideoRAM = (IOValue + 1) * 512; else if (IOValue < 12) @@ -1972,12 +1969,12 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) { /* Get adapter's linear aperture configuration */ - pATIHW->config_cntl = inr(CONFIG_CNTL); + pATI->OldHW.config_cntl = inr(CONFIG_CNTL); pATI->LinearBase = - GetBits(pATIHW->config_cntl, CFG_MEM_AP_LOC) << 22; - if ((pATIHW->config_cntl & CFG_MEM_AP_SIZE) != CFG_MEM_AP_SIZE) { + GetBits(pATI->OldHW.config_cntl, CFG_MEM_AP_LOC) << 22; + if ((pATI->OldHW.config_cntl & CFG_MEM_AP_SIZE) != CFG_MEM_AP_SIZE) { pATI->LinearSize = - GetBits(pATIHW->config_cntl, CFG_MEM_AP_SIZE) << 22; + GetBits(pATI->OldHW.config_cntl, CFG_MEM_AP_SIZE) << 22; /* * Linear aperture could have been disabled (but still @@ -2209,11 +2206,11 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) #endif /* AVOID_CPIO */ { - pATIHW->crtc = pATI->NewHW.crtc; + pATI->OldHW.crtc = pATI->NewHW.crtc; #ifndef AVOID_CPIO - pATIHW->SetBank = (ATIBankProcPtr)NoopDDA; + pATI->OldHW.SetBank = (ATIBankProcPtr)NoopDDA; pATI->BankInfo.BankSize = 0; /* No banking */ #endif /* AVOID_CPIO */ @@ -2224,38 +2221,38 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) else { - pATIHW->crtc = ATI_CRTC_VGA; + pATI->OldHW.crtc = ATI_CRTC_VGA; if (pATI->LockData.crtc_gen_cntl & CRTC_EXT_DISP_EN) - pATIHW->crtc = ATI_CRTC_MACH64; + pATI->OldHW.crtc = ATI_CRTC_MACH64; pATI->BankInfo.nBankDepth = pATI->depth; pATI->NewHW.nPlane = 1; - if ((pATIHW->crtc != ATI_CRTC_VGA) || (GetReg(SEQX, 0x04U) & 0x08U)) - pATIHW->nPlane = 1; + if ((pATI->OldHW.crtc != ATI_CRTC_VGA) || (GetReg(SEQX, 0x04U) & 0x08U)) + pATI->OldHW.nPlane = 1; else - pATIHW->nPlane = 4; + pATI->OldHW.nPlane = 4; - pATIHW->nBank = ATIDivide(pATI->VideoRAM, - pATIHW->nPlane * pATI->BankInfo.BankSize, 10, 1); + pATI->OldHW.nBank = ATIDivide(pATI->VideoRAM, + pATI->OldHW.nPlane * pATI->BankInfo.BankSize, 10, 1); pATI->NewHW.nBank = ATIDivide(pATI->VideoRAM, pATI->NewHW.nPlane * pATI->BankInfo.BankSize, 10, 1); if (!pATI->UseSmallApertures) { - pATIHW->SetBank = pATI->NewHW.SetBank; - } else if ((pATIHW->crtc == ATI_CRTC_VGA) && + pATI->OldHW.SetBank = pATI->NewHW.SetBank; + } else if ((pATI->OldHW.crtc == ATI_CRTC_VGA) && !(pATI->LockData.config_cntl & CFG_MEM_VGA_AP_EN)) { - pATIHW->SetBank = (ATIBankProcPtr)NoopDDA; - pATIHW->nBank = 1; + pATI->OldHW.SetBank = (ATIBankProcPtr)NoopDDA; + pATI->OldHW.nBank = 1; } - else if (pATIHW->nPlane == 1) + else if (pATI->OldHW.nPlane == 1) { - pATIHW->SetBank = ATIMach64SetBankPacked; + pATI->OldHW.SetBank = ATIMach64SetBankPacked; } else { - pATIHW->SetBank = ATIMach64SetBankPlanar; + pATI->OldHW.SetBank = ATIMach64SetBankPlanar; } if (((ApertureSize * pATI->depth) / pATI->BankInfo.nBankDepth) >= |