hw.c (ead5d1f4d877e92c051e1a1ade623d0d30e71619) hw.c (4c0d42f7ba7f27054f6e21636850c70d624f3cd2)
1/*
2 * Copyright 2006 Dave Airlie
3 * Copyright 2007 Maarten Maathuis
4 * Copyright 2007-2009 Stuart Bennett
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

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

209 return 0;
210
211 return pv->N1 * pv->N2 * pv->refclk / (pv->M1 * pv->M2) >> pv->log2P;
212}
213
214int
215nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
216{
1/*
2 * Copyright 2006 Dave Airlie
3 * Copyright 2007 Maarten Maathuis
4 * Copyright 2007-2009 Stuart Bennett
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

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

209 return 0;
210
211 return pv->N1 * pv->N2 * pv->refclk / (pv->M1 * pv->M2) >> pv->log2P;
212}
213
214int
215nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
216{
217 struct pci_dev *pdev = to_pci_dev(dev->dev);
217 struct nvkm_pll_vals pllvals;
218 int ret;
219 int domain;
220
218 struct nvkm_pll_vals pllvals;
219 int ret;
220 int domain;
221
221 domain = pci_domain_nr(dev->pdev->bus);
222 domain = pci_domain_nr(pdev->bus);
222
223 if (plltype == PLL_MEMORY &&
223
224 if (plltype == PLL_MEMORY &&
224 (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
225 (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
225 uint32_t mpllP;
226 pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
227 0x6c, &mpllP);
228 mpllP = (mpllP >> 8) & 0xf;
229 if (!mpllP)
230 mpllP = 4;
231
232 return 400000 / mpllP;
233 } else
234 if (plltype == PLL_MEMORY &&
226 uint32_t mpllP;
227 pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
228 0x6c, &mpllP);
229 mpllP = (mpllP >> 8) & 0xf;
230 if (!mpllP)
231 mpllP = 4;
232
233 return 400000 / mpllP;
234 } else
235 if (plltype == PLL_MEMORY &&
235 (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
236 (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
236 uint32_t clock;
237
238 pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
239 0x4c, &clock);
240 return clock / 1000;
241 }
242
243 ret = nouveau_hw_get_pllvals(dev, plltype, &pllvals);

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

304 }
305 }
306}
307
308void
309nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
310{
311 struct nouveau_drm *drm = nouveau_drm(dev);
237 uint32_t clock;
238
239 pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
240 0x4c, &clock);
241 return clock / 1000;
242 }
243
244 ret = nouveau_hw_get_pllvals(dev, plltype, &pllvals);

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

305 }
306 }
307}
308
309void
310nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
311{
312 struct nouveau_drm *drm = nouveau_drm(dev);
313 struct pci_dev *pdev = to_pci_dev(dev->dev);
312 uint8_t misc, gr4, gr5, gr6, seq2, seq4;
313 bool graphicsmode;
314 unsigned plane;
315 void __iomem *iovram;
316
317 if (nv_two_heads(dev))
318 NVSetOwner(dev, 0);
319
320 NVSetEnablePalette(dev, 0, true);
321 graphicsmode = NVReadVgaAttr(dev, 0, NV_CIO_AR_MODE_INDEX) & 1;
322 NVSetEnablePalette(dev, 0, false);
323
324 if (graphicsmode) /* graphics mode => framebuffer => no need to save */
325 return;
326
327 NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
328
329 /* map first 64KiB of VRAM, holds VGA fonts etc */
314 uint8_t misc, gr4, gr5, gr6, seq2, seq4;
315 bool graphicsmode;
316 unsigned plane;
317 void __iomem *iovram;
318
319 if (nv_two_heads(dev))
320 NVSetOwner(dev, 0);
321
322 NVSetEnablePalette(dev, 0, true);
323 graphicsmode = NVReadVgaAttr(dev, 0, NV_CIO_AR_MODE_INDEX) & 1;
324 NVSetEnablePalette(dev, 0, false);
325
326 if (graphicsmode) /* graphics mode => framebuffer => no need to save */
327 return;
328
329 NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
330
331 /* map first 64KiB of VRAM, holds VGA fonts etc */
330 iovram = ioremap(pci_resource_start(dev->pdev, 1), 65536);
332 iovram = ioremap(pci_resource_start(pdev, 1), 65536);
331 if (!iovram) {
332 NV_ERROR(drm, "Failed to map VRAM, "
333 "cannot save/restore VGA fonts.\n");
334 return;
335 }
336
337 if (nv_two_heads(dev))
338 NVBlankScreen(dev, 1, true);

--- 497 unchanged lines hidden ---
333 if (!iovram) {
334 NV_ERROR(drm, "Failed to map VRAM, "
335 "cannot save/restore VGA fonts.\n");
336 return;
337 }
338
339 if (nv_two_heads(dev))
340 NVBlankScreen(dev, 1, true);

--- 497 unchanged lines hidden ---