Lines Matching +full:pll1 +full:- +full:refclk

4  * Copyright 2007-2009 Stuart Bennett
92 if (drm->client.device.info.chipset == 0x11) { in NVSetOwner()
103 if (drm->client.device.info.chipset == 0x11) { /* set me harder */ in NVSetOwner()
132 nouveau_hw_decode_pll(struct drm_device *dev, uint32_t reg1, uint32_t pll1, in nouveau_hw_decode_pll() argument
140 pllvals->log2P = (pll1 >> 16) & 0x7; in nouveau_hw_decode_pll()
141 pllvals->N2 = pllvals->M2 = 1; in nouveau_hw_decode_pll()
144 pllvals->NM1 = pll2 & 0xffff; in nouveau_hw_decode_pll()
146 if (!(pll1 & 0x1100)) in nouveau_hw_decode_pll()
147 pllvals->NM2 = pll2 >> 16; in nouveau_hw_decode_pll()
149 pllvals->NM1 = pll1 & 0xffff; in nouveau_hw_decode_pll()
151 pllvals->NM2 = pll2 & 0xffff; in nouveau_hw_decode_pll()
152 else if (drm->client.device.info.chipset == 0x30 || drm->client.device.info.chipset == 0x35) { in nouveau_hw_decode_pll()
153 pllvals->M1 &= 0xf; /* only 4 bits */ in nouveau_hw_decode_pll()
154 if (pll1 & NV30_RAMDAC_ENABLE_VCO2) { in nouveau_hw_decode_pll()
155 pllvals->M2 = (pll1 >> 4) & 0x7; in nouveau_hw_decode_pll()
156 pllvals->N2 = ((pll1 >> 21) & 0x18) | in nouveau_hw_decode_pll()
157 ((pll1 >> 19) & 0x7); in nouveau_hw_decode_pll()
168 struct nvif_object *device = &drm->client.device.object; in nouveau_hw_get_pllvals()
170 uint32_t reg1, pll1, pll2 = 0; in nouveau_hw_get_pllvals() local
176 return -ENOENT; in nouveau_hw_get_pllvals()
178 pll1 = nvif_rd32(device, reg1); in nouveau_hw_get_pllvals()
187 if (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS && reg1 >= NV_PRAMDAC_VPLL_COEFF) { in nouveau_hw_get_pllvals()
199 nouveau_hw_decode_pll(dev, reg1, pll1, pll2, pllvals); in nouveau_hw_get_pllvals()
200 pllvals->refclk = pll_lim.refclk; in nouveau_hw_get_pllvals()
208 if (!pv->M1 || !pv->M2) in nouveau_hw_pllvals_to_clk()
211 return pv->N1 * pv->N2 * pv->refclk / (pv->M1 * pv->M2) >> pv->log2P; in nouveau_hw_pllvals_to_clk()
217 struct pci_dev *pdev = to_pci_dev(dev->dev); in nouveau_hw_get_clock()
222 domain = pci_domain_nr(pdev->bus); in nouveau_hw_get_clock()
225 (pdev->device & 0x0ff0) == CHIPSET_NFORCE) { in nouveau_hw_get_clock()
236 (pdev->device & 0xff0) == CHIPSET_NFORCE2) { in nouveau_hw_get_clock()
282 clk->pll_prog(clk, pll_lim.reg, &pv); in nouveau_hw_fix_bad_vpll()
299 nv04_display(dev)->saved_vga_font[plane][i] = in nouveau_vga_font_io()
302 iowrite32_native(nv04_display(dev)->saved_vga_font[plane][i], in nouveau_vga_font_io()
312 struct pci_dev *pdev = to_pci_dev(dev->dev); in nouveau_hw_save_vga_fonts()
382 crtcstate->CRTC[index] = NVReadVgaCrtc(dev, head, index); in rd_cio_state()
389 NVWriteVgaCrtc(dev, head, index, crtcstate->CRTC[index]); in wr_cio_state()
397 struct nv04_crtc_reg *regp = &state->crtc_reg[head]; in nv_save_state_ramdac()
400 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS) in nv_save_state_ramdac()
401 regp->nv10_cursync = NVReadRAMDAC(dev, head, NV_RAMDAC_NV10_CURSYNC); in nv_save_state_ramdac()
403 nouveau_hw_get_pllvals(dev, head ? PLL_VPLL1 : PLL_VPLL0, &regp->pllvals); in nv_save_state_ramdac()
404 state->pllsel = NVReadRAMDAC(dev, 0, NV_PRAMDAC_PLL_COEFF_SELECT); in nv_save_state_ramdac()
406 state->sel_clk = NVReadRAMDAC(dev, 0, NV_PRAMDAC_SEL_CLK); in nv_save_state_ramdac()
407 if (drm->client.device.info.chipset == 0x11) in nv_save_state_ramdac()
408 regp->dither = NVReadRAMDAC(dev, head, NV_RAMDAC_DITHER_NV11); in nv_save_state_ramdac()
410 regp->ramdac_gen_ctrl = NVReadRAMDAC(dev, head, NV_PRAMDAC_GENERAL_CONTROL); in nv_save_state_ramdac()
413 regp->ramdac_630 = NVReadRAMDAC(dev, head, NV_PRAMDAC_630); in nv_save_state_ramdac()
414 if (drm->client.device.info.chipset >= 0x30) in nv_save_state_ramdac()
415 regp->ramdac_634 = NVReadRAMDAC(dev, head, NV_PRAMDAC_634); in nv_save_state_ramdac()
417 regp->tv_setup = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_SETUP); in nv_save_state_ramdac()
418 regp->tv_vtotal = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_VTOTAL); in nv_save_state_ramdac()
419 regp->tv_vskew = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_VSKEW); in nv_save_state_ramdac()
420 regp->tv_vsync_delay = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_VSYNC_DELAY); in nv_save_state_ramdac()
421 regp->tv_htotal = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_HTOTAL); in nv_save_state_ramdac()
422 regp->tv_hskew = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_HSKEW); in nv_save_state_ramdac()
423 regp->tv_hsync_delay = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_HSYNC_DELAY); in nv_save_state_ramdac()
424 regp->tv_hsync_delay2 = NVReadRAMDAC(dev, head, NV_PRAMDAC_TV_HSYNC_DELAY2); in nv_save_state_ramdac()
428 regp->fp_vert_regs[i] = NVReadRAMDAC(dev, head, ramdac_reg); in nv_save_state_ramdac()
429 regp->fp_horiz_regs[i] = NVReadRAMDAC(dev, head, ramdac_reg + 0x20); in nv_save_state_ramdac()
433 regp->dither = NVReadRAMDAC(dev, head, NV_RAMDAC_FP_DITHER); in nv_save_state_ramdac()
435 regp->dither_regs[i] = NVReadRAMDAC(dev, head, NV_PRAMDAC_850 + i * 4); in nv_save_state_ramdac()
436 regp->dither_regs[i + 3] = NVReadRAMDAC(dev, head, NV_PRAMDAC_85C + i * 4); in nv_save_state_ramdac()
440 regp->fp_control = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_TG_CONTROL); in nv_save_state_ramdac()
441 regp->fp_debug_0 = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_DEBUG_0); in nv_save_state_ramdac()
445 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_FP_DEBUG_0, regp->fp_debug_0 & in nv_save_state_ramdac()
448 regp->fp_debug_1 = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_DEBUG_1); in nv_save_state_ramdac()
449 regp->fp_debug_2 = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_DEBUG_2); in nv_save_state_ramdac()
451 regp->fp_margin_color = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_MARGIN_COLOR); in nv_save_state_ramdac()
454 regp->ramdac_8c0 = NVReadRAMDAC(dev, head, NV_PRAMDAC_8C0); in nv_save_state_ramdac()
456 if (drm->client.device.info.family == NV_DEVICE_INFO_V0_CURIE) { in nv_save_state_ramdac()
457 regp->ramdac_a20 = NVReadRAMDAC(dev, head, NV_PRAMDAC_A20); in nv_save_state_ramdac()
458 regp->ramdac_a24 = NVReadRAMDAC(dev, head, NV_PRAMDAC_A24); in nv_save_state_ramdac()
459 regp->ramdac_a34 = NVReadRAMDAC(dev, head, NV_PRAMDAC_A34); in nv_save_state_ramdac()
462 regp->ctv_regs[i] = NVReadRAMDAC(dev, head, in nv_save_state_ramdac()
473 struct nv04_crtc_reg *regp = &state->crtc_reg[head]; in nv_load_state_ramdac()
477 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS) in nv_load_state_ramdac()
478 NVWriteRAMDAC(dev, head, NV_RAMDAC_NV10_CURSYNC, regp->nv10_cursync); in nv_load_state_ramdac()
480 clk->pll_prog(clk, pllreg, &regp->pllvals); in nv_load_state_ramdac()
481 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_PLL_COEFF_SELECT, state->pllsel); in nv_load_state_ramdac()
483 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_SEL_CLK, state->sel_clk); in nv_load_state_ramdac()
484 if (drm->client.device.info.chipset == 0x11) in nv_load_state_ramdac()
485 NVWriteRAMDAC(dev, head, NV_RAMDAC_DITHER_NV11, regp->dither); in nv_load_state_ramdac()
487 NVWriteRAMDAC(dev, head, NV_PRAMDAC_GENERAL_CONTROL, regp->ramdac_gen_ctrl); in nv_load_state_ramdac()
490 NVWriteRAMDAC(dev, head, NV_PRAMDAC_630, regp->ramdac_630); in nv_load_state_ramdac()
491 if (drm->client.device.info.chipset >= 0x30) in nv_load_state_ramdac()
492 NVWriteRAMDAC(dev, head, NV_PRAMDAC_634, regp->ramdac_634); in nv_load_state_ramdac()
494 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_SETUP, regp->tv_setup); in nv_load_state_ramdac()
495 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_VTOTAL, regp->tv_vtotal); in nv_load_state_ramdac()
496 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_VSKEW, regp->tv_vskew); in nv_load_state_ramdac()
497 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_VSYNC_DELAY, regp->tv_vsync_delay); in nv_load_state_ramdac()
498 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_HTOTAL, regp->tv_htotal); in nv_load_state_ramdac()
499 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_HSKEW, regp->tv_hskew); in nv_load_state_ramdac()
500 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_HSYNC_DELAY, regp->tv_hsync_delay); in nv_load_state_ramdac()
501 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TV_HSYNC_DELAY2, regp->tv_hsync_delay2); in nv_load_state_ramdac()
506 NVWriteRAMDAC(dev, head, ramdac_reg, regp->fp_vert_regs[i]); in nv_load_state_ramdac()
507 NVWriteRAMDAC(dev, head, ramdac_reg + 0x20, regp->fp_horiz_regs[i]); in nv_load_state_ramdac()
511 NVWriteRAMDAC(dev, head, NV_RAMDAC_FP_DITHER, regp->dither); in nv_load_state_ramdac()
513 NVWriteRAMDAC(dev, head, NV_PRAMDAC_850 + i * 4, regp->dither_regs[i]); in nv_load_state_ramdac()
514 NVWriteRAMDAC(dev, head, NV_PRAMDAC_85C + i * 4, regp->dither_regs[i + 3]); in nv_load_state_ramdac()
518 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_TG_CONTROL, regp->fp_control); in nv_load_state_ramdac()
519 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_DEBUG_0, regp->fp_debug_0); in nv_load_state_ramdac()
520 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_DEBUG_1, regp->fp_debug_1); in nv_load_state_ramdac()
521 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_DEBUG_2, regp->fp_debug_2); in nv_load_state_ramdac()
523 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_MARGIN_COLOR, regp->fp_margin_color); in nv_load_state_ramdac()
526 NVWriteRAMDAC(dev, head, NV_PRAMDAC_8C0, regp->ramdac_8c0); in nv_load_state_ramdac()
528 if (drm->client.device.info.family == NV_DEVICE_INFO_V0_CURIE) { in nv_load_state_ramdac()
529 NVWriteRAMDAC(dev, head, NV_PRAMDAC_A20, regp->ramdac_a20); in nv_load_state_ramdac()
530 NVWriteRAMDAC(dev, head, NV_PRAMDAC_A24, regp->ramdac_a24); in nv_load_state_ramdac()
531 NVWriteRAMDAC(dev, head, NV_PRAMDAC_A34, regp->ramdac_a34); in nv_load_state_ramdac()
535 NV_PRAMDAC_CTV + 4*i, regp->ctv_regs[i]); in nv_load_state_ramdac()
543 struct nv04_crtc_reg *regp = &state->crtc_reg[head]; in nv_save_state_vga()
546 regp->MiscOutReg = NVReadPRMVIO(dev, head, NV_PRMVIO_MISC__READ); in nv_save_state_vga()
553 regp->Attribute[i] = NVReadVgaAttr(dev, head, i); in nv_save_state_vga()
557 regp->Graphics[i] = NVReadVgaGr(dev, head, i); in nv_save_state_vga()
560 regp->Sequencer[i] = NVReadVgaSeq(dev, head, i); in nv_save_state_vga()
567 struct nv04_crtc_reg *regp = &state->crtc_reg[head]; in nv_load_state_vga()
570 NVWritePRMVIO(dev, head, NV_PRMVIO_MISC__WRITE, regp->MiscOutReg); in nv_load_state_vga()
573 NVWriteVgaSeq(dev, head, i, regp->Sequencer[i]); in nv_load_state_vga()
581 NVWriteVgaGr(dev, head, i, regp->Graphics[i]); in nv_load_state_vga()
585 NVWriteVgaAttr(dev, head, i, regp->Attribute[i]); in nv_load_state_vga()
594 struct nv04_crtc_reg *regp = &state->crtc_reg[head]; in nv_save_state_ext()
609 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_KELVIN) in nv_save_state_ext()
612 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_RANKINE) in nv_save_state_ext()
621 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS) { in nv_save_state_ext()
622 regp->crtc_830 = NVReadCRTC(dev, head, NV_PCRTC_830); in nv_save_state_ext()
623 regp->crtc_834 = NVReadCRTC(dev, head, NV_PCRTC_834); in nv_save_state_ext()
625 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_RANKINE) in nv_save_state_ext()
626 regp->gpio_ext = NVReadCRTC(dev, head, NV_PCRTC_GPIO_EXT); in nv_save_state_ext()
628 if (drm->client.device.info.family == NV_DEVICE_INFO_V0_CURIE) in nv_save_state_ext()
629 regp->crtc_850 = NVReadCRTC(dev, head, NV_PCRTC_850); in nv_save_state_ext()
632 regp->crtc_eng_ctrl = NVReadCRTC(dev, head, NV_PCRTC_ENGINE_CTRL); in nv_save_state_ext()
633 regp->cursor_cfg = NVReadCRTC(dev, head, NV_PCRTC_CURSOR_CONFIG); in nv_save_state_ext()
636 regp->crtc_cfg = NVReadCRTC(dev, head, NV_PCRTC_CONFIG); in nv_save_state_ext()
640 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS) { in nv_save_state_ext()
653 regp->CR58[i] = NVReadVgaCrtc5758(dev, head, i); in nv_save_state_ext()
661 regp->fb_start = NVReadCRTC(dev, head, NV_PCRTC_START); in nv_save_state_ext()
669 struct nvif_object *device = &drm->client.device.object; in nv_load_state_ext()
670 struct nv04_crtc_reg *regp = &state->crtc_reg[head]; in nv_load_state_ext()
674 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS) { in nv_load_state_ext()
680 NVWriteCRTC(dev, head, NV_PCRTC_ENGINE_CTRL, regp->crtc_eng_ctrl); in nv_load_state_ext()
686 nvif_wr32(device, NV_PVIDEO_LIMIT(0), drm->client.device.info.ram_size - 1); in nv_load_state_ext()
687 nvif_wr32(device, NV_PVIDEO_LIMIT(1), drm->client.device.info.ram_size - 1); in nv_load_state_ext()
688 nvif_wr32(device, NV_PVIDEO_UVPLANE_LIMIT(0), drm->client.device.info.ram_size - 1); in nv_load_state_ext()
689 nvif_wr32(device, NV_PVIDEO_UVPLANE_LIMIT(1), drm->client.device.info.ram_size - 1); in nv_load_state_ext()
692 NVWriteCRTC(dev, head, NV_PCRTC_CURSOR_CONFIG, regp->cursor_cfg); in nv_load_state_ext()
693 NVWriteCRTC(dev, head, NV_PCRTC_830, regp->crtc_830); in nv_load_state_ext()
694 NVWriteCRTC(dev, head, NV_PCRTC_834, regp->crtc_834); in nv_load_state_ext()
696 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_RANKINE) in nv_load_state_ext()
697 NVWriteCRTC(dev, head, NV_PCRTC_GPIO_EXT, regp->gpio_ext); in nv_load_state_ext()
699 if (drm->client.device.info.family == NV_DEVICE_INFO_V0_CURIE) { in nv_load_state_ext()
700 NVWriteCRTC(dev, head, NV_PCRTC_850, regp->crtc_850); in nv_load_state_ext()
703 if (regp->crtc_cfg == NV10_PCRTC_CONFIG_START_ADDRESS_HSYNC) in nv_load_state_ext()
710 NVWriteCRTC(dev, head, NV_PCRTC_CONFIG, regp->crtc_cfg); in nv_load_state_ext()
722 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_KELVIN) in nv_load_state_ext()
725 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_RANKINE) in nv_load_state_ext()
732 if (drm->client.device.info.family == NV_DEVICE_INFO_V0_CURIE) in nv_load_state_ext()
738 if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS) { in nv_load_state_ext()
746 if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN) { in nv_load_state_ext()
749 nvif_msec(&drm->client.device, 650, in nv_load_state_ext()
753 nvif_msec(&drm->client.device, 650, in nv_load_state_ext()
764 NVWriteVgaCrtc5758(dev, head, i, regp->CR58[i]); in nv_load_state_ext()
772 NVWriteCRTC(dev, head, NV_PCRTC_START, regp->fb_start); in nv_load_state_ext()
779 struct nvif_object *device = &nouveau_drm(dev)->client.device.object; in nv_save_state_palette()
787 state->crtc_reg[head].DAC[i] = nvif_rd08(device, in nv_save_state_palette()
798 struct nvif_object *device = &nouveau_drm(dev)->client.device.object; in nouveau_hw_load_state_palette()
807 state->crtc_reg[head].DAC[i]); in nouveau_hw_load_state_palette()
818 if (drm->client.device.info.chipset == 0x11) in nouveau_hw_save_state()