crtc.c (4b5098f3597195e9faf17e5a0cfca905d9a04d9f) crtc.c (967e7bde8739fe3b215f7537e8f1f39c044902af)
1/*
2 * Copyright 1993-2003 NVIDIA, Corporation
3 * Copyright 2006 Dave Airlie
4 * Copyright 2007 Maarten Maathuis
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation

--- 97 unchanged lines hidden (view full) ---

106 * bits 20-23: (mpll) something to do with post divider?
107 * bits 28-31: related to single stage mode? (bit 8/12)
108 */
109
110static void nv_crtc_calc_state_ext(struct drm_crtc *crtc, struct drm_display_mode * mode, int dot_clock)
111{
112 struct drm_device *dev = crtc->dev;
113 struct nouveau_drm *drm = nouveau_drm(dev);
1/*
2 * Copyright 1993-2003 NVIDIA, Corporation
3 * Copyright 2006 Dave Airlie
4 * Copyright 2007 Maarten Maathuis
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation

--- 97 unchanged lines hidden (view full) ---

106 * bits 20-23: (mpll) something to do with post divider?
107 * bits 28-31: related to single stage mode? (bit 8/12)
108 */
109
110static void nv_crtc_calc_state_ext(struct drm_crtc *crtc, struct drm_display_mode * mode, int dot_clock)
111{
112 struct drm_device *dev = crtc->dev;
113 struct nouveau_drm *drm = nouveau_drm(dev);
114 struct nouveau_bios *bios = nouveau_bios(drm->device);
115 struct nouveau_clock *clk = nouveau_clock(drm->device);
114 struct nouveau_bios *bios = nvkm_bios(&drm->device);
115 struct nouveau_clock *clk = nvkm_clock(&drm->device);
116 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
117 struct nv04_mode_state *state = &nv04_display(dev)->mode_reg;
118 struct nv04_crtc_reg *regp = &state->crtc_reg[nv_crtc->index];
119 struct nouveau_pll_vals *pv = &regp->pllvals;
120 struct nvbios_pll pll_lim;
121
122 if (nvbios_pll_parse(bios, nv_crtc->index ? PLL_VPLL1 : PLL_VPLL0,
123 &pll_lim))

--- 7 unchanged lines hidden (view full) ---

131 * output frequency of the first stage for this card is 300MHz, it is
132 * assumed the threshold is given by vco1 maxfreq/2
133 */
134 /* for early nv4x, specifically nv40 and *some* nv43 (devids 0 and 6,
135 * not 8, others unknown), the blob always uses both plls. no problem
136 * has yet been observed in allowing the use a single stage pll on all
137 * nv43 however. the behaviour of single stage use is untested on nv40
138 */
116 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
117 struct nv04_mode_state *state = &nv04_display(dev)->mode_reg;
118 struct nv04_crtc_reg *regp = &state->crtc_reg[nv_crtc->index];
119 struct nouveau_pll_vals *pv = &regp->pllvals;
120 struct nvbios_pll pll_lim;
121
122 if (nvbios_pll_parse(bios, nv_crtc->index ? PLL_VPLL1 : PLL_VPLL0,
123 &pll_lim))

--- 7 unchanged lines hidden (view full) ---

131 * output frequency of the first stage for this card is 300MHz, it is
132 * assumed the threshold is given by vco1 maxfreq/2
133 */
134 /* for early nv4x, specifically nv40 and *some* nv43 (devids 0 and 6,
135 * not 8, others unknown), the blob always uses both plls. no problem
136 * has yet been observed in allowing the use a single stage pll on all
137 * nv43 however. the behaviour of single stage use is untested on nv40
138 */
139 if (nv_device(drm->device)->chipset > 0x40 && dot_clock <= (pll_lim.vco1.max_freq / 2))
139 if (drm->device.info.chipset > 0x40 && dot_clock <= (pll_lim.vco1.max_freq / 2))
140 memset(&pll_lim.vco2, 0, sizeof(pll_lim.vco2));
141
142
143 if (!clk->pll_calc(clk, &pll_lim, dot_clock, pv))
144 return;
145
146 state->pllsel &= PLLSEL_VPLL1_MASK | PLLSEL_VPLL2_MASK | PLLSEL_TV_MASK;
147
148 /* The blob uses this always, so let's do the same */
140 memset(&pll_lim.vco2, 0, sizeof(pll_lim.vco2));
141
142
143 if (!clk->pll_calc(clk, &pll_lim, dot_clock, pv))
144 return;
145
146 state->pllsel &= PLLSEL_VPLL1_MASK | PLLSEL_VPLL2_MASK | PLLSEL_TV_MASK;
147
148 /* The blob uses this always, so let's do the same */
149 if (nv_device(drm->device)->card_type == NV_40)
149 if (drm->device.info.family == NV_DEVICE_INFO_V0_CURIE)
150 state->pllsel |= NV_PRAMDAC_PLL_COEFF_SELECT_USE_VPLL2_TRUE;
151 /* again nv40 and some nv43 act more like nv3x as described above */
150 state->pllsel |= NV_PRAMDAC_PLL_COEFF_SELECT_USE_VPLL2_TRUE;
151 /* again nv40 and some nv43 act more like nv3x as described above */
152 if (nv_device(drm->device)->chipset < 0x41)
152 if (drm->device.info.chipset < 0x41)
153 state->pllsel |= NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_MPLL |
154 NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_NVPLL;
155 state->pllsel |= nv_crtc->index ? PLLSEL_VPLL2_MASK : PLLSEL_VPLL1_MASK;
156
157 if (pv->NM2)
158 NV_DEBUG(drm, "vpll: n1 %d n2 %d m1 %d m2 %d log2p %d\n",
159 pv->N1, pv->N2, pv->M1, pv->M2, pv->log2P);
160 else

--- 109 unchanged lines hidden (view full) ---

270 if (fp_output) {
271 vertStart = vertTotal - 3;
272 vertEnd = vertTotal - 2;
273 vertBlankStart = vertStart;
274 horizStart = horizTotal - 5;
275 horizEnd = horizTotal - 2;
276 horizBlankEnd = horizTotal + 4;
277#if 0
153 state->pllsel |= NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_MPLL |
154 NV_PRAMDAC_PLL_COEFF_SELECT_SOURCE_PROG_NVPLL;
155 state->pllsel |= nv_crtc->index ? PLLSEL_VPLL2_MASK : PLLSEL_VPLL1_MASK;
156
157 if (pv->NM2)
158 NV_DEBUG(drm, "vpll: n1 %d n2 %d m1 %d m2 %d log2p %d\n",
159 pv->N1, pv->N2, pv->M1, pv->M2, pv->log2P);
160 else

--- 109 unchanged lines hidden (view full) ---

270 if (fp_output) {
271 vertStart = vertTotal - 3;
272 vertEnd = vertTotal - 2;
273 vertBlankStart = vertStart;
274 horizStart = horizTotal - 5;
275 horizEnd = horizTotal - 2;
276 horizBlankEnd = horizTotal + 4;
277#if 0
278 if (dev->overlayAdaptor && nv_device(drm->device)->card_type >= NV_10)
278 if (dev->overlayAdaptor && drm->device.info.family >= NV_DEVICE_INFO_V0_CELSIUS)
279 /* This reportedly works around some video overlay bandwidth problems */
280 horizTotal += 2;
281#endif
282 }
283
284 if (mode->flags & DRM_MODE_FLAG_INTERLACE)
285 vertTotal |= 1;
286

--- 217 unchanged lines hidden (view full) ---

504 regp->crtc_eng_ctrl |= NV_CRTC_FSEL_OVERLAY;
505 }
506#endif
507
508 /* ADDRESS_SPACE_PNVM is the same as setting HCUR_ASI */
509 regp->cursor_cfg = NV_PCRTC_CURSOR_CONFIG_CUR_LINES_64 |
510 NV_PCRTC_CURSOR_CONFIG_CUR_PIXELS_64 |
511 NV_PCRTC_CURSOR_CONFIG_ADDRESS_SPACE_PNVM;
279 /* This reportedly works around some video overlay bandwidth problems */
280 horizTotal += 2;
281#endif
282 }
283
284 if (mode->flags & DRM_MODE_FLAG_INTERLACE)
285 vertTotal |= 1;
286

--- 217 unchanged lines hidden (view full) ---

504 regp->crtc_eng_ctrl |= NV_CRTC_FSEL_OVERLAY;
505 }
506#endif
507
508 /* ADDRESS_SPACE_PNVM is the same as setting HCUR_ASI */
509 regp->cursor_cfg = NV_PCRTC_CURSOR_CONFIG_CUR_LINES_64 |
510 NV_PCRTC_CURSOR_CONFIG_CUR_PIXELS_64 |
511 NV_PCRTC_CURSOR_CONFIG_ADDRESS_SPACE_PNVM;
512 if (nv_device(drm->device)->chipset >= 0x11)
512 if (drm->device.info.chipset >= 0x11)
513 regp->cursor_cfg |= NV_PCRTC_CURSOR_CONFIG_CUR_BPP_32;
514 if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
515 regp->cursor_cfg |= NV_PCRTC_CURSOR_CONFIG_DOUBLE_SCAN_ENABLE;
516
517 /* Unblock some timings */
518 regp->CRTC[NV_CIO_CRE_53] = 0;
519 regp->CRTC[NV_CIO_CRE_54] = 0;
520

--- 24 unchanged lines hidden (view full) ---

545 regp->CRTC[NV_CIO_CRE_TVOUT_LATENCY] = nv04_display(dev)->saved_reg.crtc_reg[0].CRTC[NV_CIO_CRE_TVOUT_LATENCY];
546 if (!nv_crtc->index)
547 regp->CRTC[NV_CIO_CRE_TVOUT_LATENCY] += 4;
548
549 /* the blob sometimes sets |= 0x10 (which is the same as setting |=
550 * 1 << 30 on 0x60.830), for no apparent reason */
551 regp->CRTC[NV_CIO_CRE_59] = off_chip_digital;
552
513 regp->cursor_cfg |= NV_PCRTC_CURSOR_CONFIG_CUR_BPP_32;
514 if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
515 regp->cursor_cfg |= NV_PCRTC_CURSOR_CONFIG_DOUBLE_SCAN_ENABLE;
516
517 /* Unblock some timings */
518 regp->CRTC[NV_CIO_CRE_53] = 0;
519 regp->CRTC[NV_CIO_CRE_54] = 0;
520

--- 24 unchanged lines hidden (view full) ---

545 regp->CRTC[NV_CIO_CRE_TVOUT_LATENCY] = nv04_display(dev)->saved_reg.crtc_reg[0].CRTC[NV_CIO_CRE_TVOUT_LATENCY];
546 if (!nv_crtc->index)
547 regp->CRTC[NV_CIO_CRE_TVOUT_LATENCY] += 4;
548
549 /* the blob sometimes sets |= 0x10 (which is the same as setting |=
550 * 1 << 30 on 0x60.830), for no apparent reason */
551 regp->CRTC[NV_CIO_CRE_59] = off_chip_digital;
552
553 if (nv_device(drm->device)->card_type >= NV_30)
553 if (drm->device.info.family >= NV_DEVICE_INFO_V0_RANKINE)
554 regp->CRTC[0x9f] = off_chip_digital ? 0x11 : 0x1;
555
556 regp->crtc_830 = mode->crtc_vdisplay - 3;
557 regp->crtc_834 = mode->crtc_vdisplay - 1;
558
554 regp->CRTC[0x9f] = off_chip_digital ? 0x11 : 0x1;
555
556 regp->crtc_830 = mode->crtc_vdisplay - 3;
557 regp->crtc_834 = mode->crtc_vdisplay - 1;
558
559 if (nv_device(drm->device)->card_type == NV_40)
559 if (drm->device.info.family == NV_DEVICE_INFO_V0_CURIE)
560 /* This is what the blob does */
561 regp->crtc_850 = NVReadCRTC(dev, 0, NV_PCRTC_850);
562
560 /* This is what the blob does */
561 regp->crtc_850 = NVReadCRTC(dev, 0, NV_PCRTC_850);
562
563 if (nv_device(drm->device)->card_type >= NV_30)
563 if (drm->device.info.family >= NV_DEVICE_INFO_V0_RANKINE)
564 regp->gpio_ext = NVReadCRTC(dev, 0, NV_PCRTC_GPIO_EXT);
565
564 regp->gpio_ext = NVReadCRTC(dev, 0, NV_PCRTC_GPIO_EXT);
565
566 if (nv_device(drm->device)->card_type >= NV_10)
566 if (drm->device.info.family >= NV_DEVICE_INFO_V0_CELSIUS)
567 regp->crtc_cfg = NV10_PCRTC_CONFIG_START_ADDRESS_HSYNC;
568 else
569 regp->crtc_cfg = NV04_PCRTC_CONFIG_START_ADDRESS_HSYNC;
570
571 /* Some misc regs */
567 regp->crtc_cfg = NV10_PCRTC_CONFIG_START_ADDRESS_HSYNC;
568 else
569 regp->crtc_cfg = NV04_PCRTC_CONFIG_START_ADDRESS_HSYNC;
570
571 /* Some misc regs */
572 if (nv_device(drm->device)->card_type == NV_40) {
572 if (drm->device.info.family == NV_DEVICE_INFO_V0_CURIE) {
573 regp->CRTC[NV_CIO_CRE_85] = 0xFF;
574 regp->CRTC[NV_CIO_CRE_86] = 0x1;
575 }
576
577 regp->CRTC[NV_CIO_CRE_PIXEL_INDEX] = (crtc->primary->fb->depth + 1) / 8;
578 /* Enable slaved mode (called MODE_TV in nv4ref.h) */
579 if (lvds_output || tmds_output || tv_output)
580 regp->CRTC[NV_CIO_CRE_PIXEL_INDEX] |= (1 << 7);
581
582 /* Generic PRAMDAC regs */
583
573 regp->CRTC[NV_CIO_CRE_85] = 0xFF;
574 regp->CRTC[NV_CIO_CRE_86] = 0x1;
575 }
576
577 regp->CRTC[NV_CIO_CRE_PIXEL_INDEX] = (crtc->primary->fb->depth + 1) / 8;
578 /* Enable slaved mode (called MODE_TV in nv4ref.h) */
579 if (lvds_output || tmds_output || tv_output)
580 regp->CRTC[NV_CIO_CRE_PIXEL_INDEX] |= (1 << 7);
581
582 /* Generic PRAMDAC regs */
583
584 if (nv_device(drm->device)->card_type >= NV_10)
584 if (drm->device.info.family >= NV_DEVICE_INFO_V0_CELSIUS)
585 /* Only bit that bios and blob set. */
586 regp->nv10_cursync = (1 << 25);
587
588 regp->ramdac_gen_ctrl = NV_PRAMDAC_GENERAL_CONTROL_BPC_8BITS |
589 NV_PRAMDAC_GENERAL_CONTROL_VGA_STATE_SEL |
590 NV_PRAMDAC_GENERAL_CONTROL_PIXMIX_ON;
591 if (crtc->primary->fb->depth == 16)
592 regp->ramdac_gen_ctrl |= NV_PRAMDAC_GENERAL_CONTROL_ALT_MODE_SEL;
585 /* Only bit that bios and blob set. */
586 regp->nv10_cursync = (1 << 25);
587
588 regp->ramdac_gen_ctrl = NV_PRAMDAC_GENERAL_CONTROL_BPC_8BITS |
589 NV_PRAMDAC_GENERAL_CONTROL_VGA_STATE_SEL |
590 NV_PRAMDAC_GENERAL_CONTROL_PIXMIX_ON;
591 if (crtc->primary->fb->depth == 16)
592 regp->ramdac_gen_ctrl |= NV_PRAMDAC_GENERAL_CONTROL_ALT_MODE_SEL;
593 if (nv_device(drm->device)->chipset >= 0x11)
593 if (drm->device.info.chipset >= 0x11)
594 regp->ramdac_gen_ctrl |= NV_PRAMDAC_GENERAL_CONTROL_PIPE_LONG;
595
596 regp->ramdac_630 = 0; /* turn off green mode (tv test pattern?) */
597 regp->tv_setup = 0;
598
599 nv_crtc_set_image_sharpening(crtc, nv_crtc->sharpness);
600
601 /* Some values the blob sets */

--- 46 unchanged lines hidden (view full) ---

648 if (ret)
649 return ret;
650
651 /* unlock must come after turning off FP_TG_CONTROL in output_prepare */
652 nv_lock_vga_crtc_shadow(dev, nv_crtc->index, -1);
653
654 nv_crtc_mode_set_vga(crtc, adjusted_mode);
655 /* calculated in nv04_dfp_prepare, nv40 needs it written before calculating PLLs */
594 regp->ramdac_gen_ctrl |= NV_PRAMDAC_GENERAL_CONTROL_PIPE_LONG;
595
596 regp->ramdac_630 = 0; /* turn off green mode (tv test pattern?) */
597 regp->tv_setup = 0;
598
599 nv_crtc_set_image_sharpening(crtc, nv_crtc->sharpness);
600
601 /* Some values the blob sets */

--- 46 unchanged lines hidden (view full) ---

648 if (ret)
649 return ret;
650
651 /* unlock must come after turning off FP_TG_CONTROL in output_prepare */
652 nv_lock_vga_crtc_shadow(dev, nv_crtc->index, -1);
653
654 nv_crtc_mode_set_vga(crtc, adjusted_mode);
655 /* calculated in nv04_dfp_prepare, nv40 needs it written before calculating PLLs */
656 if (nv_device(drm->device)->card_type == NV_40)
656 if (drm->device.info.family == NV_DEVICE_INFO_V0_CURIE)
657 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_SEL_CLK, nv04_display(dev)->mode_reg.sel_clk);
658 nv_crtc_mode_set_regs(crtc, adjusted_mode);
659 nv_crtc_calc_state_ext(crtc, mode, adjusted_mode->clock);
660 return 0;
661}
662
663static void nv_crtc_save(struct drm_crtc *crtc)
664{

--- 44 unchanged lines hidden (view full) ---

709
710 drm_vblank_pre_modeset(dev, nv_crtc->index);
711 funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
712
713 NVBlankScreen(dev, nv_crtc->index, true);
714
715 /* Some more preparation. */
716 NVWriteCRTC(dev, nv_crtc->index, NV_PCRTC_CONFIG, NV_PCRTC_CONFIG_START_ADDRESS_NON_VGA);
657 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_SEL_CLK, nv04_display(dev)->mode_reg.sel_clk);
658 nv_crtc_mode_set_regs(crtc, adjusted_mode);
659 nv_crtc_calc_state_ext(crtc, mode, adjusted_mode->clock);
660 return 0;
661}
662
663static void nv_crtc_save(struct drm_crtc *crtc)
664{

--- 44 unchanged lines hidden (view full) ---

709
710 drm_vblank_pre_modeset(dev, nv_crtc->index);
711 funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
712
713 NVBlankScreen(dev, nv_crtc->index, true);
714
715 /* Some more preparation. */
716 NVWriteCRTC(dev, nv_crtc->index, NV_PCRTC_CONFIG, NV_PCRTC_CONFIG_START_ADDRESS_NON_VGA);
717 if (nv_device(drm->device)->card_type == NV_40) {
717 if (drm->device.info.family == NV_DEVICE_INFO_V0_CURIE) {
718 uint32_t reg900 = NVReadRAMDAC(dev, nv_crtc->index, NV_PRAMDAC_900);
719 NVWriteRAMDAC(dev, nv_crtc->index, NV_PRAMDAC_900, reg900 & ~0x10000);
720 }
721}
722
723static void nv_crtc_commit(struct drm_crtc *crtc)
724{
725 struct drm_device *dev = crtc->dev;

--- 157 unchanged lines hidden (view full) ---

883 nouveau_calc_arb(dev, crtc->mode.clock, drm_fb->bits_per_pixel,
884 &arb_burst, &arb_lwm);
885
886 regp->CRTC[NV_CIO_CRE_FF_INDEX] = arb_burst;
887 regp->CRTC[NV_CIO_CRE_FFLWM__INDEX] = arb_lwm & 0xff;
888 crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_FF_INDEX);
889 crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_FFLWM__INDEX);
890
718 uint32_t reg900 = NVReadRAMDAC(dev, nv_crtc->index, NV_PRAMDAC_900);
719 NVWriteRAMDAC(dev, nv_crtc->index, NV_PRAMDAC_900, reg900 & ~0x10000);
720 }
721}
722
723static void nv_crtc_commit(struct drm_crtc *crtc)
724{
725 struct drm_device *dev = crtc->dev;

--- 157 unchanged lines hidden (view full) ---

883 nouveau_calc_arb(dev, crtc->mode.clock, drm_fb->bits_per_pixel,
884 &arb_burst, &arb_lwm);
885
886 regp->CRTC[NV_CIO_CRE_FF_INDEX] = arb_burst;
887 regp->CRTC[NV_CIO_CRE_FFLWM__INDEX] = arb_lwm & 0xff;
888 crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_FF_INDEX);
889 crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_FFLWM__INDEX);
890
891 if (nv_device(drm->device)->card_type >= NV_20) {
891 if (drm->device.info.family >= NV_DEVICE_INFO_V0_KELVIN) {
892 regp->CRTC[NV_CIO_CRE_47] = arb_lwm >> 8;
893 crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_47);
894 }
895
896 return 0;
897}
898
899static int

--- 64 unchanged lines hidden (view full) ---

964 alpha = pixel >> 24;
965 if (alpha > 0 && alpha < 255)
966 pixel = (pixel & 0x00ffffff) | ((alpha + 1) << 24);
967
968#ifdef __BIG_ENDIAN
969 {
970 struct nouveau_drm *drm = nouveau_drm(dev);
971
892 regp->CRTC[NV_CIO_CRE_47] = arb_lwm >> 8;
893 crtc_wr_cio_state(crtc, regp, NV_CIO_CRE_47);
894 }
895
896 return 0;
897}
898
899static int

--- 64 unchanged lines hidden (view full) ---

964 alpha = pixel >> 24;
965 if (alpha > 0 && alpha < 255)
966 pixel = (pixel & 0x00ffffff) | ((alpha + 1) << 24);
967
968#ifdef __BIG_ENDIAN
969 {
970 struct nouveau_drm *drm = nouveau_drm(dev);
971
972 if (nv_device(drm->device)->chipset == 0x11) {
972 if (drm->device.info.chipset == 0x11) {
973 pixel = ((pixel & 0x000000ff) << 24) |
974 ((pixel & 0x0000ff00) << 8) |
975 ((pixel & 0x00ff0000) >> 8) |
976 ((pixel & 0xff000000) >> 24);
977 }
978 }
979#endif
980

--- 24 unchanged lines hidden (view full) ---

1005 if (!gem)
1006 return -ENOENT;
1007 cursor = nouveau_gem_object(gem);
1008
1009 ret = nouveau_bo_map(cursor);
1010 if (ret)
1011 goto out;
1012
973 pixel = ((pixel & 0x000000ff) << 24) |
974 ((pixel & 0x0000ff00) << 8) |
975 ((pixel & 0x00ff0000) >> 8) |
976 ((pixel & 0xff000000) >> 24);
977 }
978 }
979#endif
980

--- 24 unchanged lines hidden (view full) ---

1005 if (!gem)
1006 return -ENOENT;
1007 cursor = nouveau_gem_object(gem);
1008
1009 ret = nouveau_bo_map(cursor);
1010 if (ret)
1011 goto out;
1012
1013 if (nv_device(drm->device)->chipset >= 0x11)
1013 if (drm->device.info.chipset >= 0x11)
1014 nv11_cursor_upload(dev, cursor, nv_crtc->cursor.nvbo);
1015 else
1016 nv04_cursor_upload(dev, cursor, nv_crtc->cursor.nvbo);
1017
1018 nouveau_bo_unmap(cursor);
1019 nv_crtc->cursor.offset = nv_crtc->cursor.nvbo->bo.offset;
1020 nv_crtc->cursor.set_offset(nv_crtc, nv_crtc->cursor.offset);
1021 nv_crtc->cursor.show(nv_crtc, true);

--- 124 unchanged lines hidden ---
1014 nv11_cursor_upload(dev, cursor, nv_crtc->cursor.nvbo);
1015 else
1016 nv04_cursor_upload(dev, cursor, nv_crtc->cursor.nvbo);
1017
1018 nouveau_bo_unmap(cursor);
1019 nv_crtc->cursor.offset = nv_crtc->cursor.nvbo->bo.offset;
1020 nv_crtc->cursor.set_offset(nv_crtc, nv_crtc->cursor.offset);
1021 nv_crtc->cursor.show(nv_crtc, true);

--- 124 unchanged lines hidden ---