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 --- |