diff options
author | Francisco Jerez <currojerez@riseup.net> | 2010-10-21 22:31:02 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-12-03 00:11:09 -0500 |
commit | 63f7fcfebd2ff1995b649101d6120b60fa0e5b06 (patch) | |
tree | 27ed24ca7f08b26ec46274a91106139074c6982e | |
parent | 382d62e524db528cdf53563ad9a018adc170dfde (diff) |
drm/nv04: Make CRTC base changes effective in the next hsync.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_hw.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nv04_crtc.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvreg.h | 3 |
3 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_hw.c b/drivers/gpu/drm/nouveau/nouveau_hw.c index b9672a05c411..979275836985 100644 --- a/drivers/gpu/drm/nouveau/nouveau_hw.c +++ b/drivers/gpu/drm/nouveau/nouveau_hw.c | |||
@@ -953,7 +953,7 @@ nv_load_state_ext(struct drm_device *dev, int head, | |||
953 | NVWriteCRTC(dev, head, NV_PCRTC_850, regp->crtc_850); | 953 | NVWriteCRTC(dev, head, NV_PCRTC_850, regp->crtc_850); |
954 | 954 | ||
955 | reg900 = NVReadRAMDAC(dev, head, NV_PRAMDAC_900); | 955 | reg900 = NVReadRAMDAC(dev, head, NV_PRAMDAC_900); |
956 | if (regp->crtc_cfg == NV_PCRTC_CONFIG_START_ADDRESS_HSYNC) | 956 | if (regp->crtc_cfg == NV10_PCRTC_CONFIG_START_ADDRESS_HSYNC) |
957 | NVWriteRAMDAC(dev, head, NV_PRAMDAC_900, reg900 | 0x10000); | 957 | NVWriteRAMDAC(dev, head, NV_PRAMDAC_900, reg900 | 0x10000); |
958 | else | 958 | else |
959 | NVWriteRAMDAC(dev, head, NV_PRAMDAC_900, reg900 & ~0x10000); | 959 | NVWriteRAMDAC(dev, head, NV_PRAMDAC_900, reg900 & ~0x10000); |
diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c index 40e180741629..b61a7ff8b7b7 100644 --- a/drivers/gpu/drm/nouveau/nv04_crtc.c +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c | |||
@@ -551,7 +551,10 @@ nv_crtc_mode_set_regs(struct drm_crtc *crtc, struct drm_display_mode * mode) | |||
551 | if (dev_priv->card_type >= NV_30) | 551 | if (dev_priv->card_type >= NV_30) |
552 | regp->gpio_ext = NVReadCRTC(dev, 0, NV_PCRTC_GPIO_EXT); | 552 | regp->gpio_ext = NVReadCRTC(dev, 0, NV_PCRTC_GPIO_EXT); |
553 | 553 | ||
554 | regp->crtc_cfg = NV_PCRTC_CONFIG_START_ADDRESS_HSYNC; | 554 | if (dev_priv->card_type >= NV_10) |
555 | regp->crtc_cfg = NV10_PCRTC_CONFIG_START_ADDRESS_HSYNC; | ||
556 | else | ||
557 | regp->crtc_cfg = NV04_PCRTC_CONFIG_START_ADDRESS_HSYNC; | ||
555 | 558 | ||
556 | /* Some misc regs */ | 559 | /* Some misc regs */ |
557 | if (dev_priv->card_type == NV_40) { | 560 | if (dev_priv->card_type == NV_40) { |
diff --git a/drivers/gpu/drm/nouveau/nvreg.h b/drivers/gpu/drm/nouveau/nvreg.h index 881f8a585613..fe0f253089ac 100644 --- a/drivers/gpu/drm/nouveau/nvreg.h +++ b/drivers/gpu/drm/nouveau/nvreg.h | |||
@@ -153,7 +153,8 @@ | |||
153 | #define NV_PCRTC_START 0x00600800 | 153 | #define NV_PCRTC_START 0x00600800 |
154 | #define NV_PCRTC_CONFIG 0x00600804 | 154 | #define NV_PCRTC_CONFIG 0x00600804 |
155 | # define NV_PCRTC_CONFIG_START_ADDRESS_NON_VGA (1 << 0) | 155 | # define NV_PCRTC_CONFIG_START_ADDRESS_NON_VGA (1 << 0) |
156 | # define NV_PCRTC_CONFIG_START_ADDRESS_HSYNC (2 << 0) | 156 | # define NV04_PCRTC_CONFIG_START_ADDRESS_HSYNC (4 << 0) |
157 | # define NV10_PCRTC_CONFIG_START_ADDRESS_HSYNC (2 << 0) | ||
157 | #define NV_PCRTC_CURSOR_CONFIG 0x00600810 | 158 | #define NV_PCRTC_CURSOR_CONFIG 0x00600810 |
158 | # define NV_PCRTC_CURSOR_CONFIG_ENABLE_ENABLE (1 << 0) | 159 | # define NV_PCRTC_CURSOR_CONFIG_ENABLE_ENABLE (1 << 0) |
159 | # define NV_PCRTC_CURSOR_CONFIG_DOUBLE_SCAN_ENABLE (1 << 4) | 160 | # define NV_PCRTC_CURSOR_CONFIG_DOUBLE_SCAN_ENABLE (1 << 4) |