diff options
-rw-r--r-- | src/nv_bios.c | 6 | ||||
-rw-r--r-- | src/nv_crtc.c | 12 | ||||
-rw-r--r-- | src/nv_driver.c | 4 | ||||
-rw-r--r-- | src/nv_type.h | 2 | ||||
-rw-r--r-- | src/nvreg.h | 59 |
5 files changed, 42 insertions, 41 deletions
diff --git a/src/nv_bios.c b/src/nv_bios.c index 99ffc26..0291a3c 100644 --- a/src/nv_bios.c +++ b/src/nv_bios.c @@ -1961,7 +1961,7 @@ static bool init_configure_mem(ScrnInfoPtr pScrn, bios_t *bios, uint16_t offset, if (bios->major_version > 2) return false; - uint16_t meminitoffs = bios->legacy.mem_init_tbl_ptr + MEM_INIT_SIZE * (nv_idx_port_rd(pScrn, CRTC_INDEX_COLOR, NV_VGA_CRTCX_3C) >> 4); + uint16_t meminitoffs = bios->legacy.mem_init_tbl_ptr + MEM_INIT_SIZE * (nv_idx_port_rd(pScrn, CRTC_INDEX_COLOR, NV_VGA_CRTCX_SCRATCH4) >> 4); uint16_t seqtbloffs = bios->legacy.sdr_seq_tbl_ptr, meminitdata = meminitoffs + 6; uint32_t reg, data; @@ -2013,7 +2013,7 @@ static bool init_configure_clk(ScrnInfoPtr pScrn, bios_t *bios, uint16_t offset, if (bios->major_version > 2) return false; - uint16_t meminitoffs = bios->legacy.mem_init_tbl_ptr + MEM_INIT_SIZE * (nv_idx_port_rd(pScrn, CRTC_INDEX_COLOR, NV_VGA_CRTCX_3C) >> 4); + uint16_t meminitoffs = bios->legacy.mem_init_tbl_ptr + MEM_INIT_SIZE * (nv_idx_port_rd(pScrn, CRTC_INDEX_COLOR, NV_VGA_CRTCX_SCRATCH4) >> 4); int clock; clock = le16_to_cpu(*(uint16_t *)&bios->data[meminitoffs + 4]) * 10; @@ -2046,7 +2046,7 @@ static bool init_configure_preinit(ScrnInfoPtr pScrn, bios_t *bios, uint16_t off uint32_t straps = nv32_rd(pScrn, NV_PEXTDEV_BOOT_0); uint8_t cr3c = ((straps << 2) & 0xf0) | (straps & (1 << 6)); - nv_idx_port_wr(pScrn, CRTC_INDEX_COLOR, NV_VGA_CRTCX_3C, cr3c); + nv_idx_port_wr(pScrn, CRTC_INDEX_COLOR, NV_VGA_CRTCX_SCRATCH4, cr3c); return true; } diff --git a/src/nv_crtc.c b/src/nv_crtc.c index b6b723c..06547b3 100644 --- a/src/nv_crtc.c +++ b/src/nv_crtc.c @@ -1449,7 +1449,7 @@ nv_crtc_mode_set_regs(xf86CrtcPtr crtc, DisplayModePtr mode, DisplayModePtr adju /* These values seem to vary */ /* This register seems to be used by the bios to make certain decisions on some G70 cards? */ - regp->CRTC[NV_VGA_CRTCX_3C] = savep->CRTC[NV_VGA_CRTCX_3C]; + regp->CRTC[NV_VGA_CRTCX_SCRATCH4] = savep->CRTC[NV_VGA_CRTCX_SCRATCH4]; if (NVMatchModePrivate(mode, NV_MODE_VGA)) { regp->CRTC[NV_VGA_CRTCX_45] = 0x0; @@ -1486,7 +1486,7 @@ nv_crtc_mode_set_regs(xf86CrtcPtr crtc, DisplayModePtr mode, DisplayModePtr adju if (pNv->twoHeads) /* The exact purpose of this register is unknown, but we copy value from crtc0 */ - regp->unk81c = NVReadCRTC(pNv, 0, NV_CRTC_081C); + regp->gpio_ext = NVReadCRTC(pNv, 0, NV_PCRTC_GPIO_EXT); if (NVMatchModePrivate(mode, NV_MODE_VGA)) { regp->unk830 = 0; @@ -2372,7 +2372,7 @@ static void nv_crtc_load_state_ext(xf86CrtcPtr crtc, RIVA_HW_STATE *state, Bool NVCrtcWriteCRTC(crtc, NV_CRTC_0834, regp->unk834); if (pNv->Architecture == NV_ARCH_40) { NVCrtcWriteCRTC(crtc, NV_CRTC_0850, regp->unk850); - NVCrtcWriteCRTC(crtc, NV_CRTC_081C, regp->unk81c); + NVCrtcWriteCRTC(crtc, NV_PCRTC_GPIO_EXT, regp->gpio_ext); } if (pNv->Architecture == NV_ARCH_40) { @@ -2409,7 +2409,7 @@ static void nv_crtc_load_state_ext(xf86CrtcPtr crtc, RIVA_HW_STATE *state, Bool NVWriteVgaCrtc(crtc, NV_VGA_CRTCX_26, regp->CRTC[NV_VGA_CRTCX_26]); NVWriteVgaCrtc(crtc, NV_VGA_CRTCX_3B, regp->CRTC[NV_VGA_CRTCX_3B]); - NVWriteVgaCrtc(crtc, NV_VGA_CRTCX_3C, regp->CRTC[NV_VGA_CRTCX_3C]); + NVWriteVgaCrtc(crtc, NV_VGA_CRTCX_SCRATCH4, regp->CRTC[NV_VGA_CRTCX_SCRATCH4]); if (pNv->Architecture >= NV_ARCH_10) { NVWriteVgaCrtc(crtc, NV_VGA_CRTCX_EXTRA, regp->CRTC[NV_VGA_CRTCX_EXTRA]); NVWriteVgaCrtc(crtc, NV_VGA_CRTCX_43, regp->CRTC[NV_VGA_CRTCX_43]); @@ -2497,7 +2497,7 @@ static void nv_crtc_save_state_ext(xf86CrtcPtr crtc, RIVA_HW_STATE *state) regp->unk834 = NVCrtcReadCRTC(crtc, NV_CRTC_0834); if (pNv->Architecture == NV_ARCH_40) { regp->unk850 = NVCrtcReadCRTC(crtc, NV_CRTC_0850); - regp->unk81c = NVCrtcReadCRTC(crtc, NV_CRTC_081C); + regp->gpio_ext = NVCrtcReadCRTC(crtc, NV_PCRTC_GPIO_EXT); } if (pNv->twoHeads) { regp->head = NVCrtcReadCRTC(crtc, NV_CRTC_FSEL); @@ -2511,7 +2511,7 @@ static void nv_crtc_save_state_ext(xf86CrtcPtr crtc, RIVA_HW_STATE *state) regp->CRTC[NV_VGA_CRTCX_26] = NVReadVgaCrtc(crtc, NV_VGA_CRTCX_26); regp->CRTC[NV_VGA_CRTCX_3B] = NVReadVgaCrtc(crtc, NV_VGA_CRTCX_3B); - regp->CRTC[NV_VGA_CRTCX_3C] = NVReadVgaCrtc(crtc, NV_VGA_CRTCX_3C); + regp->CRTC[NV_VGA_CRTCX_SCRATCH4] = NVReadVgaCrtc(crtc, NV_VGA_CRTCX_SCRATCH4); if (pNv->Architecture >= NV_ARCH_10) { regp->CRTC[NV_VGA_CRTCX_EXTRA] = NVReadVgaCrtc(crtc, NV_VGA_CRTCX_EXTRA); regp->CRTC[NV_VGA_CRTCX_43] = NVReadVgaCrtc(crtc, NV_VGA_CRTCX_43); diff --git a/src/nv_driver.c b/src/nv_driver.c index eadaa6c..51dffda 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -2266,13 +2266,13 @@ static void NVBacklightEnable(NVPtr pNv, Bool on) /* NV17,18,34 Apple iMac, iBook, PowerBook */ CARD32 tmp_pmc, tmp_pcrt; tmp_pmc = nvReadMC(pNv, 0x10F0) & 0x7FFFFFFF; - tmp_pcrt = nvReadCRTC0(pNv, NV_CRTC_081C) & 0xFFFFFFFC; + tmp_pcrt = nvReadCRTC0(pNv, NV_PCRTC_GPIO_EXT) & 0xFFFFFFFC; if(on) { tmp_pmc |= (1 << 31); tmp_pcrt |= 0x1; } nvWriteMC(pNv, 0x10F0, tmp_pmc); - nvWriteCRTC0(pNv, NV_CRTC_081C, tmp_pcrt); + nvWriteCRTC0(pNv, NV_PCRTC_GPIO_EXT, tmp_pcrt); } #endif diff --git a/src/nv_type.h b/src/nv_type.h index 1a5423e..44a2378 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -109,10 +109,10 @@ typedef struct _nv_crtc_reg uint32_t cursorConfig; uint32_t crtcOwner; uint32_t gpio; + uint32_t gpio_ext; uint32_t unk830; uint32_t unk834; uint32_t unk850; - uint32_t unk81c; uint32_t head; uint32_t config; diff --git a/src/nvreg.h b/src/nvreg.h index 204cbce..79d2204 100644 --- a/src/nvreg.h +++ b/src/nvreg.h @@ -135,7 +135,7 @@ #define NV_VGA_CRTCX_LCD 0x33 #define NV_VGA_CRTCX_INTERLACE 0x39 #define NV_VGA_CRTCX_3B 0x3b -#define NV_VGA_CRTCX_3C 0x3c +#define NV_VGA_CRTCX_SCRATCH4 0x3c #define NV_VGA_CRTCX_EXTRA 0x41 #define NV_VGA_CRTCX_43 0x43 #define NV_VGA_CRTCX_OWNER 0x44 @@ -181,6 +181,35 @@ #define NV_PEXTDEV_BOOT_0 0x00101000 # define NV_PEXTDEV_BOOT_0_STRAP_FP_IFACE_12BIT (1 << 15) +#define NV_PEXTDEV_BOOT_3 0x0010100c + +#define NV_CRTC_INTR_0 0x00600100 +# define NV_CRTC_INTR_VBLANK (1<<0) +#define NV_CRTC_INTR_EN_0 0x00600140 +#define NV_CRTC_START 0x00600800 +#define NV_CRTC_CONFIG 0x00600804 +#define NV_CRTC_CURSOR_ADDRESS 0x0060080C +#define NV_CRTC_CURSOR_CONFIG 0x00600810 +# define NV_CRTC_CURSOR_CONFIG_ENABLE (1 << 0) +# define NV_CRTC_CURSOR_CONFIG_DOUBLE_SCAN (1 << 4) +# define NV_CRTC_CURSOR_CONFIG_32BPP (1 << 12) +# define NV_CRTC_CURSOR_CONFIG_64PIXELS (1 << 16) +# define NV_CRTC_CURSOR_CONFIG_32LINES (1 << 25) +# define NV_CRTC_CURSOR_CONFIG_64LINES (1 << 26) +# define NV_CRTC_CURSOR_CONFIG_ALPHA_BLEND (1 << 28) + +#define NV_CRTC_GPIO 0x00600818 +#define NV_PCRTC_GPIO_EXT 0x0060081c +#define NV_CRTC_0830 0x00600830 +#define NV_CRTC_0834 0x00600834 +#define NV_CRTC_0850 0x00600850 +#define NV_CRTC_FSEL 0x00600860 +# define NV_CRTC_FSEL_I2C (1<<4) +# define NV_CRTC_FSEL_TVOUT1 (1<<8) +# define NV_CRTC_FSEL_TVOUT2 (2<<8) +# define NV_CRTC_FSEL_OVERLAY (1<<12) +# define NV_CRTC_FSEL_FPP2 (1<<16) +# define NV_CRTC_FSEL_FPP1 (2<<16) #define NV_RAMDAC_CURSOR_POS 0x00680300 #define NV_RAMDAC_CURSOR_CTRL 0x00680320 @@ -339,34 +368,6 @@ #define NV_RAMDAC_A24 0x00680A24 #define NV_RAMDAC_A34 0x00680A34 -#define NV_CRTC_INTR_0 0x00600100 -# define NV_CRTC_INTR_VBLANK (1<<0) -#define NV_CRTC_INTR_EN_0 0x00600140 -#define NV_CRTC_START 0x00600800 -#define NV_CRTC_CONFIG 0x00600804 -#define NV_CRTC_CURSOR_ADDRESS 0x0060080C -#define NV_CRTC_CURSOR_CONFIG 0x00600810 -# define NV_CRTC_CURSOR_CONFIG_ENABLE (1 << 0) -# define NV_CRTC_CURSOR_CONFIG_DOUBLE_SCAN (1 << 4) -# define NV_CRTC_CURSOR_CONFIG_32BPP (1 << 12) -# define NV_CRTC_CURSOR_CONFIG_64PIXELS (1 << 16) -# define NV_CRTC_CURSOR_CONFIG_32LINES (1 << 25) -# define NV_CRTC_CURSOR_CONFIG_64LINES (1 << 26) -# define NV_CRTC_CURSOR_CONFIG_ALPHA_BLEND (1 << 28) - -#define NV_CRTC_GPIO 0x00600818 -#define NV_CRTC_081C 0x0060081c -#define NV_CRTC_0830 0x00600830 -#define NV_CRTC_0834 0x00600834 -#define NV_CRTC_0850 0x00600850 -#define NV_CRTC_FSEL 0x00600860 -# define NV_CRTC_FSEL_I2C (1<<4) -# define NV_CRTC_FSEL_TVOUT1 (1<<8) -# define NV_CRTC_FSEL_TVOUT2 (2<<8) -# define NV_CRTC_FSEL_OVERLAY (1<<12) -# define NV_CRTC_FSEL_FPP2 (1<<16) -# define NV_CRTC_FSEL_FPP1 (2<<16) - #define NV_PGRAPH_DEBUG_0 0x00400080 #define NV_PGRAPH_DEBUG_1 0x00400084 #define NV_PGRAPH_DEBUG_2_NV04 0x00400088 |