diff options
| -rw-r--r-- | drivers/char/agp/agp.h | 3 | ||||
| -rw-r--r-- | drivers/char/agp/ali-agp.c | 10 | ||||
| -rw-r--r-- | drivers/char/agp/amd-k7-agp.c | 10 | ||||
| -rw-r--r-- | drivers/char/agp/amd64-agp.c | 51 | ||||
| -rw-r--r-- | drivers/char/agp/ati-agp.c | 7 | ||||
| -rw-r--r-- | drivers/char/agp/backend.c | 28 | ||||
| -rw-r--r-- | drivers/char/agp/generic.c | 41 | ||||
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 83 | ||||
| -rw-r--r-- | drivers/char/agp/isoch.c | 37 | ||||
| -rw-r--r-- | drivers/char/agp/sis-agp.c | 17 | ||||
| -rw-r--r-- | drivers/char/agp/sworks-agp.c | 25 | ||||
| -rw-r--r-- | drivers/char/agp/uninorth-agp.c | 32 | ||||
| -rw-r--r-- | include/linux/agp_backend.h | 5 |
13 files changed, 205 insertions, 144 deletions
diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h index 81e14bea54bd..4bada0e8b812 100644 --- a/drivers/char/agp/agp.h +++ b/drivers/char/agp/agp.h | |||
| @@ -148,6 +148,9 @@ struct agp_bridge_data { | |||
| 148 | char minor_version; | 148 | char minor_version; |
| 149 | struct list_head list; | 149 | struct list_head list; |
| 150 | u32 apbase_config; | 150 | u32 apbase_config; |
| 151 | /* list of agp_memory mapped to the aperture */ | ||
| 152 | struct list_head mapped_list; | ||
| 153 | spinlock_t mapped_lock; | ||
| 151 | }; | 154 | }; |
| 152 | 155 | ||
| 153 | #define KB(x) ((x) * 1024) | 156 | #define KB(x) ((x) * 1024) |
diff --git a/drivers/char/agp/ali-agp.c b/drivers/char/agp/ali-agp.c index 1ffb381130c3..31dcd9142d54 100644 --- a/drivers/char/agp/ali-agp.c +++ b/drivers/char/agp/ali-agp.c | |||
| @@ -110,7 +110,8 @@ static int ali_configure(void) | |||
| 110 | 110 | ||
| 111 | nlvm_addr+= agp_bridge->gart_bus_addr; | 111 | nlvm_addr+= agp_bridge->gart_bus_addr; |
| 112 | nlvm_addr|=(agp_bridge->gart_bus_addr>>12); | 112 | nlvm_addr|=(agp_bridge->gart_bus_addr>>12); |
| 113 | printk(KERN_INFO PFX "nlvm top &base = %8x\n",nlvm_addr); | 113 | dev_info(&agp_bridge->dev->dev, "nlvm top &base = %8x\n", |
| 114 | nlvm_addr); | ||
| 114 | } | 115 | } |
| 115 | #endif | 116 | #endif |
| 116 | 117 | ||
| @@ -315,8 +316,8 @@ static int __devinit agp_ali_probe(struct pci_dev *pdev, | |||
| 315 | goto found; | 316 | goto found; |
| 316 | } | 317 | } |
| 317 | 318 | ||
| 318 | printk(KERN_ERR PFX "Unsupported ALi chipset (device id: %04x)\n", | 319 | dev_err(&pdev->dev, "unsupported ALi chipset [%04x/%04x])\n", |
| 319 | pdev->device); | 320 | pdev->vendor, pdev->device); |
| 320 | return -ENODEV; | 321 | return -ENODEV; |
| 321 | 322 | ||
| 322 | 323 | ||
| @@ -361,8 +362,7 @@ found: | |||
| 361 | bridge->driver = &ali_generic_bridge; | 362 | bridge->driver = &ali_generic_bridge; |
| 362 | } | 363 | } |
| 363 | 364 | ||
| 364 | printk(KERN_INFO PFX "Detected ALi %s chipset\n", | 365 | dev_info(&pdev->dev, "ALi %s chipset\n", devs[j].chipset_name); |
| 365 | devs[j].chipset_name); | ||
| 366 | 366 | ||
| 367 | /* Fill in the mode register */ | 367 | /* Fill in the mode register */ |
| 368 | pci_read_config_dword(pdev, | 368 | pci_read_config_dword(pdev, |
diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c index 39a0718bc616..e280531843be 100644 --- a/drivers/char/agp/amd-k7-agp.c +++ b/drivers/char/agp/amd-k7-agp.c | |||
| @@ -419,8 +419,8 @@ static int __devinit agp_amdk7_probe(struct pci_dev *pdev, | |||
| 419 | return -ENODEV; | 419 | return -ENODEV; |
| 420 | 420 | ||
| 421 | j = ent - agp_amdk7_pci_table; | 421 | j = ent - agp_amdk7_pci_table; |
| 422 | printk(KERN_INFO PFX "Detected AMD %s chipset\n", | 422 | dev_info(&pdev->dev, "AMD %s chipset\n", |
| 423 | amd_agp_device_ids[j].chipset_name); | 423 | amd_agp_device_ids[j].chipset_name); |
| 424 | 424 | ||
| 425 | bridge = agp_alloc_bridge(); | 425 | bridge = agp_alloc_bridge(); |
| 426 | if (!bridge) | 426 | if (!bridge) |
| @@ -442,7 +442,7 @@ static int __devinit agp_amdk7_probe(struct pci_dev *pdev, | |||
| 442 | while (!cap_ptr) { | 442 | while (!cap_ptr) { |
| 443 | gfxcard = pci_get_class(PCI_CLASS_DISPLAY_VGA<<8, gfxcard); | 443 | gfxcard = pci_get_class(PCI_CLASS_DISPLAY_VGA<<8, gfxcard); |
| 444 | if (!gfxcard) { | 444 | if (!gfxcard) { |
| 445 | printk (KERN_INFO PFX "Couldn't find an AGP VGA controller.\n"); | 445 | dev_info(&pdev->dev, "no AGP VGA controller\n"); |
| 446 | return -ENODEV; | 446 | return -ENODEV; |
| 447 | } | 447 | } |
| 448 | cap_ptr = pci_find_capability(gfxcard, PCI_CAP_ID_AGP); | 448 | cap_ptr = pci_find_capability(gfxcard, PCI_CAP_ID_AGP); |
| @@ -453,7 +453,7 @@ static int __devinit agp_amdk7_probe(struct pci_dev *pdev, | |||
| 453 | (if necessary at all). */ | 453 | (if necessary at all). */ |
| 454 | if (gfxcard->vendor == PCI_VENDOR_ID_NVIDIA) { | 454 | if (gfxcard->vendor == PCI_VENDOR_ID_NVIDIA) { |
| 455 | agp_bridge->flags |= AGP_ERRATA_1X; | 455 | agp_bridge->flags |= AGP_ERRATA_1X; |
| 456 | printk (KERN_INFO PFX "AMD 751 chipset with NVidia GeForce detected. Forcing to 1X due to errata.\n"); | 456 | dev_info(&pdev->dev, "AMD 751 chipset with NVidia GeForce; forcing 1X due to errata\n"); |
| 457 | } | 457 | } |
| 458 | pci_dev_put(gfxcard); | 458 | pci_dev_put(gfxcard); |
| 459 | } | 459 | } |
| @@ -469,7 +469,7 @@ static int __devinit agp_amdk7_probe(struct pci_dev *pdev, | |||
| 469 | agp_bridge->flags = AGP_ERRATA_FASTWRITES; | 469 | agp_bridge->flags = AGP_ERRATA_FASTWRITES; |
| 470 | agp_bridge->flags |= AGP_ERRATA_SBA; | 470 | agp_bridge->flags |= AGP_ERRATA_SBA; |
| 471 | agp_bridge->flags |= AGP_ERRATA_1X; | 471 | agp_bridge->flags |= AGP_ERRATA_1X; |
| 472 | printk (KERN_INFO PFX "AMD 761 chipset with errata detected - disabling AGP fast writes & SBA and forcing to 1X.\n"); | 472 | dev_info(&pdev->dev, "AMD 761 chipset with errata; disabling AGP fast writes & SBA and forcing to 1X\n"); |
| 473 | } | 473 | } |
| 474 | } | 474 | } |
| 475 | 475 | ||
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c index 481ffe87c716..7495c522d8e4 100644 --- a/drivers/char/agp/amd64-agp.c +++ b/drivers/char/agp/amd64-agp.c | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | 34 | ||
| 35 | static struct resource *aperture_resource; | 35 | static struct resource *aperture_resource; |
| 36 | static int __initdata agp_try_unsupported = 1; | 36 | static int __initdata agp_try_unsupported = 1; |
| 37 | static int agp_bridges_found; | ||
| 37 | 38 | ||
| 38 | static void amd64_tlbflush(struct agp_memory *temp) | 39 | static void amd64_tlbflush(struct agp_memory *temp) |
| 39 | { | 40 | { |
| @@ -293,12 +294,13 @@ static __devinit int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp, | |||
| 293 | * so let double check that order, and lets trust the AMD NB settings | 294 | * so let double check that order, and lets trust the AMD NB settings |
| 294 | */ | 295 | */ |
| 295 | if (order >=0 && aper + (32ULL<<(20 + order)) > 0x100000000ULL) { | 296 | if (order >=0 && aper + (32ULL<<(20 + order)) > 0x100000000ULL) { |
| 296 | printk(KERN_INFO "Aperture size %u MB is not right, using settings from NB\n", | 297 | dev_info(&agp->dev, "aperture size %u MB is not right, using settings from NB\n", |
| 297 | 32 << order); | 298 | 32 << order); |
| 298 | order = nb_order; | 299 | order = nb_order; |
| 299 | } | 300 | } |
| 300 | 301 | ||
| 301 | printk(KERN_INFO PFX "Aperture from AGP @ %Lx size %u MB\n", aper, 32 << order); | 302 | dev_info(&agp->dev, "aperture from AGP @ %Lx size %u MB\n", |
| 303 | aper, 32 << order); | ||
| 302 | if (order < 0 || !agp_aperture_valid(aper, (32*1024*1024)<<order)) | 304 | if (order < 0 || !agp_aperture_valid(aper, (32*1024*1024)<<order)) |
| 303 | return -1; | 305 | return -1; |
| 304 | 306 | ||
| @@ -319,10 +321,10 @@ static __devinit int cache_nbs (struct pci_dev *pdev, u32 cap_ptr) | |||
| 319 | for (i = 0; i < num_k8_northbridges; i++) { | 321 | for (i = 0; i < num_k8_northbridges; i++) { |
| 320 | struct pci_dev *dev = k8_northbridges[i]; | 322 | struct pci_dev *dev = k8_northbridges[i]; |
| 321 | if (fix_northbridge(dev, pdev, cap_ptr) < 0) { | 323 | if (fix_northbridge(dev, pdev, cap_ptr) < 0) { |
| 322 | printk(KERN_ERR PFX "No usable aperture found.\n"); | 324 | dev_err(&dev->dev, "no usable aperture found\n"); |
| 323 | #ifdef __x86_64__ | 325 | #ifdef __x86_64__ |
| 324 | /* should port this to i386 */ | 326 | /* should port this to i386 */ |
| 325 | printk(KERN_ERR PFX "Consider rebooting with iommu=memaper=2 to get a good aperture.\n"); | 327 | dev_err(&dev->dev, "consider rebooting with iommu=memaper=2 to get a good aperture\n"); |
| 326 | #endif | 328 | #endif |
| 327 | return -1; | 329 | return -1; |
| 328 | } | 330 | } |
| @@ -345,14 +347,14 @@ static void __devinit amd8151_init(struct pci_dev *pdev, struct agp_bridge_data | |||
| 345 | default: revstring="??"; break; | 347 | default: revstring="??"; break; |
| 346 | } | 348 | } |
| 347 | 349 | ||
| 348 | printk (KERN_INFO PFX "Detected AMD 8151 AGP Bridge rev %s\n", revstring); | 350 | dev_info(&pdev->dev, "AMD 8151 AGP Bridge rev %s\n", revstring); |
| 349 | 351 | ||
| 350 | /* | 352 | /* |
| 351 | * Work around errata. | 353 | * Work around errata. |
| 352 | * Chips before B2 stepping incorrectly reporting v3.5 | 354 | * Chips before B2 stepping incorrectly reporting v3.5 |
| 353 | */ | 355 | */ |
| 354 | if (pdev->revision < 0x13) { | 356 | if (pdev->revision < 0x13) { |
| 355 | printk (KERN_INFO PFX "Correcting AGP revision (reports 3.5, is really 3.0)\n"); | 357 | dev_info(&pdev->dev, "correcting AGP revision (reports 3.5, is really 3.0)\n"); |
| 356 | bridge->major_version = 3; | 358 | bridge->major_version = 3; |
| 357 | bridge->minor_version = 0; | 359 | bridge->minor_version = 0; |
| 358 | } | 360 | } |
| @@ -375,11 +377,11 @@ static int __devinit uli_agp_init(struct pci_dev *pdev) | |||
| 375 | struct pci_dev *dev1; | 377 | struct pci_dev *dev1; |
| 376 | int i; | 378 | int i; |
| 377 | unsigned size = amd64_fetch_size(); | 379 | unsigned size = amd64_fetch_size(); |
| 378 | printk(KERN_INFO "Setting up ULi AGP.\n"); | 380 | |
| 381 | dev_info(&pdev->dev, "setting up ULi AGP\n"); | ||
| 379 | dev1 = pci_get_slot (pdev->bus,PCI_DEVFN(0,0)); | 382 | dev1 = pci_get_slot (pdev->bus,PCI_DEVFN(0,0)); |
| 380 | if (dev1 == NULL) { | 383 | if (dev1 == NULL) { |
| 381 | printk(KERN_INFO PFX "Detected a ULi chipset, " | 384 | dev_info(&pdev->dev, "can't find ULi secondary device\n"); |
| 382 | "but could not fine the secondary device.\n"); | ||
| 383 | return -ENODEV; | 385 | return -ENODEV; |
| 384 | } | 386 | } |
| 385 | 387 | ||
| @@ -388,7 +390,7 @@ static int __devinit uli_agp_init(struct pci_dev *pdev) | |||
| 388 | break; | 390 | break; |
| 389 | 391 | ||
| 390 | if (i == ARRAY_SIZE(uli_sizes)) { | 392 | if (i == ARRAY_SIZE(uli_sizes)) { |
| 391 | printk(KERN_INFO PFX "No ULi size found for %d\n", size); | 393 | dev_info(&pdev->dev, "no ULi size found for %d\n", size); |
| 392 | return -ENODEV; | 394 | return -ENODEV; |
| 393 | } | 395 | } |
| 394 | 396 | ||
| @@ -433,13 +435,11 @@ static int nforce3_agp_init(struct pci_dev *pdev) | |||
| 433 | int i; | 435 | int i; |
| 434 | unsigned size = amd64_fetch_size(); | 436 | unsigned size = amd64_fetch_size(); |
| 435 | 437 | ||
| 436 | printk(KERN_INFO PFX "Setting up Nforce3 AGP.\n"); | 438 | dev_info(&pdev->dev, "setting up Nforce3 AGP\n"); |
| 437 | 439 | ||
| 438 | dev1 = pci_get_slot(pdev->bus, PCI_DEVFN(11, 0)); | 440 | dev1 = pci_get_slot(pdev->bus, PCI_DEVFN(11, 0)); |
| 439 | if (dev1 == NULL) { | 441 | if (dev1 == NULL) { |
| 440 | printk(KERN_INFO PFX "agpgart: Detected an NVIDIA " | 442 | dev_info(&pdev->dev, "can't find Nforce3 secondary device\n"); |
| 441 | "nForce3 chipset, but could not find " | ||
| 442 | "the secondary device.\n"); | ||
| 443 | return -ENODEV; | 443 | return -ENODEV; |
| 444 | } | 444 | } |
| 445 | 445 | ||
| @@ -448,7 +448,7 @@ static int nforce3_agp_init(struct pci_dev *pdev) | |||
| 448 | break; | 448 | break; |
| 449 | 449 | ||
| 450 | if (i == ARRAY_SIZE(nforce3_sizes)) { | 450 | if (i == ARRAY_SIZE(nforce3_sizes)) { |
| 451 | printk(KERN_INFO PFX "No NForce3 size found for %d\n", size); | 451 | dev_info(&pdev->dev, "no NForce3 size found for %d\n", size); |
| 452 | return -ENODEV; | 452 | return -ENODEV; |
| 453 | } | 453 | } |
| 454 | 454 | ||
| @@ -462,7 +462,7 @@ static int nforce3_agp_init(struct pci_dev *pdev) | |||
| 462 | 462 | ||
| 463 | /* if x86-64 aperture base is beyond 4G, exit here */ | 463 | /* if x86-64 aperture base is beyond 4G, exit here */ |
| 464 | if ( (apbase & 0x7fff) >> (32 - 25) ) { | 464 | if ( (apbase & 0x7fff) >> (32 - 25) ) { |
| 465 | printk(KERN_INFO PFX "aperture base > 4G\n"); | 465 | dev_info(&pdev->dev, "aperture base > 4G\n"); |
| 466 | return -ENODEV; | 466 | return -ENODEV; |
| 467 | } | 467 | } |
| 468 | 468 | ||
| @@ -489,6 +489,7 @@ static int __devinit agp_amd64_probe(struct pci_dev *pdev, | |||
| 489 | { | 489 | { |
| 490 | struct agp_bridge_data *bridge; | 490 | struct agp_bridge_data *bridge; |
| 491 | u8 cap_ptr; | 491 | u8 cap_ptr; |
| 492 | int err; | ||
| 492 | 493 | ||
| 493 | cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP); | 494 | cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP); |
| 494 | if (!cap_ptr) | 495 | if (!cap_ptr) |
| @@ -504,7 +505,8 @@ static int __devinit agp_amd64_probe(struct pci_dev *pdev, | |||
| 504 | pdev->device == PCI_DEVICE_ID_AMD_8151_0) { | 505 | pdev->device == PCI_DEVICE_ID_AMD_8151_0) { |
| 505 | amd8151_init(pdev, bridge); | 506 | amd8151_init(pdev, bridge); |
| 506 | } else { | 507 | } else { |
| 507 | printk(KERN_INFO PFX "Detected AGP bridge %x\n", pdev->devfn); | 508 | dev_info(&pdev->dev, "AGP bridge [%04x/%04x]\n", |
| 509 | pdev->vendor, pdev->device); | ||
| 508 | } | 510 | } |
| 509 | 511 | ||
| 510 | bridge->driver = &amd_8151_driver; | 512 | bridge->driver = &amd_8151_driver; |
| @@ -536,7 +538,12 @@ static int __devinit agp_amd64_probe(struct pci_dev *pdev, | |||
| 536 | } | 538 | } |
| 537 | 539 | ||
| 538 | pci_set_drvdata(pdev, bridge); | 540 | pci_set_drvdata(pdev, bridge); |
| 539 | return agp_add_bridge(bridge); | 541 | err = agp_add_bridge(bridge); |
| 542 | if (err < 0) | ||
| 543 | return err; | ||
| 544 | |||
| 545 | agp_bridges_found++; | ||
| 546 | return 0; | ||
| 540 | } | 547 | } |
| 541 | 548 | ||
| 542 | static void __devexit agp_amd64_remove(struct pci_dev *pdev) | 549 | static void __devexit agp_amd64_remove(struct pci_dev *pdev) |
| @@ -713,7 +720,11 @@ int __init agp_amd64_init(void) | |||
| 713 | 720 | ||
| 714 | if (agp_off) | 721 | if (agp_off) |
| 715 | return -EINVAL; | 722 | return -EINVAL; |
| 716 | if (pci_register_driver(&agp_amd64_pci_driver) < 0) { | 723 | err = pci_register_driver(&agp_amd64_pci_driver); |
| 724 | if (err < 0) | ||
| 725 | return err; | ||
| 726 | |||
| 727 | if (agp_bridges_found == 0) { | ||
| 717 | struct pci_dev *dev; | 728 | struct pci_dev *dev; |
| 718 | if (!agp_try_unsupported && !agp_try_unsupported_boot) { | 729 | if (!agp_try_unsupported && !agp_try_unsupported_boot) { |
| 719 | printk(KERN_INFO PFX "No supported AGP bridge found.\n"); | 730 | printk(KERN_INFO PFX "No supported AGP bridge found.\n"); |
diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c index 3a4566c0d84f..6ecbcafb34b1 100644 --- a/drivers/char/agp/ati-agp.c +++ b/drivers/char/agp/ati-agp.c | |||
| @@ -486,8 +486,8 @@ static int __devinit agp_ati_probe(struct pci_dev *pdev, | |||
| 486 | goto found; | 486 | goto found; |
| 487 | } | 487 | } |
| 488 | 488 | ||
| 489 | printk(KERN_ERR PFX | 489 | dev_err(&pdev->dev, "unsupported Ati chipset [%04x/%04x])\n", |
| 490 | "Unsupported Ati chipset (device id: %04x)\n", pdev->device); | 490 | pdev->vendor, pdev->device); |
| 491 | return -ENODEV; | 491 | return -ENODEV; |
| 492 | 492 | ||
| 493 | found: | 493 | found: |
| @@ -500,8 +500,7 @@ found: | |||
| 500 | 500 | ||
| 501 | bridge->driver = &ati_generic_bridge; | 501 | bridge->driver = &ati_generic_bridge; |
| 502 | 502 | ||
| 503 | printk(KERN_INFO PFX "Detected Ati %s chipset\n", | 503 | dev_info(&pdev->dev, "Ati %s chipset\n", devs[j].chipset_name); |
| 504 | devs[j].chipset_name); | ||
| 505 | 504 | ||
| 506 | /* Fill in the mode register */ | 505 | /* Fill in the mode register */ |
| 507 | pci_read_config_dword(pdev, | 506 | pci_read_config_dword(pdev, |
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index 1ec87104e68c..3a3cc03d401c 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c | |||
| @@ -144,7 +144,8 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 144 | void *addr = bridge->driver->agp_alloc_page(bridge); | 144 | void *addr = bridge->driver->agp_alloc_page(bridge); |
| 145 | 145 | ||
| 146 | if (!addr) { | 146 | if (!addr) { |
| 147 | printk(KERN_ERR PFX "unable to get memory for scratch page.\n"); | 147 | dev_err(&bridge->dev->dev, |
| 148 | "can't get memory for scratch page\n"); | ||
| 148 | return -ENOMEM; | 149 | return -ENOMEM; |
| 149 | } | 150 | } |
| 150 | 151 | ||
| @@ -155,13 +156,13 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 155 | 156 | ||
| 156 | size_value = bridge->driver->fetch_size(); | 157 | size_value = bridge->driver->fetch_size(); |
| 157 | if (size_value == 0) { | 158 | if (size_value == 0) { |
| 158 | printk(KERN_ERR PFX "unable to determine aperture size.\n"); | 159 | dev_err(&bridge->dev->dev, "can't determine aperture size\n"); |
| 159 | rc = -EINVAL; | 160 | rc = -EINVAL; |
| 160 | goto err_out; | 161 | goto err_out; |
| 161 | } | 162 | } |
| 162 | if (bridge->driver->create_gatt_table(bridge)) { | 163 | if (bridge->driver->create_gatt_table(bridge)) { |
| 163 | printk(KERN_ERR PFX | 164 | dev_err(&bridge->dev->dev, |
| 164 | "unable to get memory for graphics translation table.\n"); | 165 | "can't get memory for graphics translation table\n"); |
| 165 | rc = -ENOMEM; | 166 | rc = -ENOMEM; |
| 166 | goto err_out; | 167 | goto err_out; |
| 167 | } | 168 | } |
| @@ -169,7 +170,8 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 169 | 170 | ||
| 170 | bridge->key_list = vmalloc(PAGE_SIZE * 4); | 171 | bridge->key_list = vmalloc(PAGE_SIZE * 4); |
| 171 | if (bridge->key_list == NULL) { | 172 | if (bridge->key_list == NULL) { |
| 172 | printk(KERN_ERR PFX "error allocating memory for key lists.\n"); | 173 | dev_err(&bridge->dev->dev, |
| 174 | "can't allocate memory for key lists\n"); | ||
| 173 | rc = -ENOMEM; | 175 | rc = -ENOMEM; |
| 174 | goto err_out; | 176 | goto err_out; |
| 175 | } | 177 | } |
| @@ -179,10 +181,12 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 179 | memset(bridge->key_list, 0, PAGE_SIZE * 4); | 181 | memset(bridge->key_list, 0, PAGE_SIZE * 4); |
| 180 | 182 | ||
| 181 | if (bridge->driver->configure()) { | 183 | if (bridge->driver->configure()) { |
| 182 | printk(KERN_ERR PFX "error configuring host chipset.\n"); | 184 | dev_err(&bridge->dev->dev, "error configuring host chipset\n"); |
| 183 | rc = -EINVAL; | 185 | rc = -EINVAL; |
| 184 | goto err_out; | 186 | goto err_out; |
| 185 | } | 187 | } |
| 188 | INIT_LIST_HEAD(&bridge->mapped_list); | ||
| 189 | spin_lock_init(&bridge->mapped_lock); | ||
| 186 | 190 | ||
| 187 | return 0; | 191 | return 0; |
| 188 | 192 | ||
| @@ -269,25 +273,27 @@ int agp_add_bridge(struct agp_bridge_data *bridge) | |||
| 269 | 273 | ||
| 270 | /* Grab reference on the chipset driver. */ | 274 | /* Grab reference on the chipset driver. */ |
| 271 | if (!try_module_get(bridge->driver->owner)) { | 275 | if (!try_module_get(bridge->driver->owner)) { |
| 272 | printk (KERN_INFO PFX "Couldn't lock chipset driver.\n"); | 276 | dev_info(&bridge->dev->dev, "can't lock chipset driver\n"); |
| 273 | return -EINVAL; | 277 | return -EINVAL; |
| 274 | } | 278 | } |
| 275 | 279 | ||
| 276 | error = agp_backend_initialize(bridge); | 280 | error = agp_backend_initialize(bridge); |
| 277 | if (error) { | 281 | if (error) { |
| 278 | printk (KERN_INFO PFX "agp_backend_initialize() failed.\n"); | 282 | dev_info(&bridge->dev->dev, |
| 283 | "agp_backend_initialize() failed\n"); | ||
| 279 | goto err_out; | 284 | goto err_out; |
| 280 | } | 285 | } |
| 281 | 286 | ||
| 282 | if (list_empty(&agp_bridges)) { | 287 | if (list_empty(&agp_bridges)) { |
| 283 | error = agp_frontend_initialize(); | 288 | error = agp_frontend_initialize(); |
| 284 | if (error) { | 289 | if (error) { |
| 285 | printk (KERN_INFO PFX "agp_frontend_initialize() failed.\n"); | 290 | dev_info(&bridge->dev->dev, |
| 291 | "agp_frontend_initialize() failed\n"); | ||
| 286 | goto frontend_err; | 292 | goto frontend_err; |
| 287 | } | 293 | } |
| 288 | 294 | ||
| 289 | printk(KERN_INFO PFX "AGP aperture is %dM @ 0x%lx\n", | 295 | dev_info(&bridge->dev->dev, "AGP aperture is %dM @ 0x%lx\n", |
| 290 | bridge->driver->fetch_size(), bridge->gart_bus_addr); | 296 | bridge->driver->fetch_size(), bridge->gart_bus_addr); |
| 291 | 297 | ||
| 292 | } | 298 | } |
| 293 | 299 | ||
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index eaa1a355bb32..118dbde25dc7 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c | |||
| @@ -429,6 +429,10 @@ int agp_bind_memory(struct agp_memory *curr, off_t pg_start) | |||
| 429 | 429 | ||
| 430 | curr->is_bound = true; | 430 | curr->is_bound = true; |
| 431 | curr->pg_start = pg_start; | 431 | curr->pg_start = pg_start; |
| 432 | spin_lock(&agp_bridge->mapped_lock); | ||
| 433 | list_add(&curr->mapped_list, &agp_bridge->mapped_list); | ||
| 434 | spin_unlock(&agp_bridge->mapped_lock); | ||
| 435 | |||
| 432 | return 0; | 436 | return 0; |
| 433 | } | 437 | } |
| 434 | EXPORT_SYMBOL(agp_bind_memory); | 438 | EXPORT_SYMBOL(agp_bind_memory); |
| @@ -461,10 +465,34 @@ int agp_unbind_memory(struct agp_memory *curr) | |||
| 461 | 465 | ||
| 462 | curr->is_bound = false; | 466 | curr->is_bound = false; |
| 463 | curr->pg_start = 0; | 467 | curr->pg_start = 0; |
| 468 | spin_lock(&curr->bridge->mapped_lock); | ||
| 469 | list_del(&curr->mapped_list); | ||
| 470 | spin_unlock(&curr->bridge->mapped_lock); | ||
| 464 | return 0; | 471 | return 0; |
| 465 | } | 472 | } |
| 466 | EXPORT_SYMBOL(agp_unbind_memory); | 473 | EXPORT_SYMBOL(agp_unbind_memory); |
| 467 | 474 | ||
| 475 | /** | ||
| 476 | * agp_rebind_emmory - Rewrite the entire GATT, useful on resume | ||
| 477 | */ | ||
| 478 | int agp_rebind_memory(void) | ||
| 479 | { | ||
| 480 | struct agp_memory *curr; | ||
| 481 | int ret_val = 0; | ||
| 482 | |||
| 483 | spin_lock(&agp_bridge->mapped_lock); | ||
| 484 | list_for_each_entry(curr, &agp_bridge->mapped_list, mapped_list) { | ||
| 485 | ret_val = curr->bridge->driver->insert_memory(curr, | ||
| 486 | curr->pg_start, | ||
| 487 | curr->type); | ||
| 488 | if (ret_val != 0) | ||
| 489 | break; | ||
| 490 | } | ||
| 491 | spin_unlock(&agp_bridge->mapped_lock); | ||
| 492 | return ret_val; | ||
| 493 | } | ||
| 494 | EXPORT_SYMBOL(agp_rebind_memory); | ||
| 495 | |||
| 468 | /* End - Routines for handling swapping of agp_memory into the GATT */ | 496 | /* End - Routines for handling swapping of agp_memory into the GATT */ |
| 469 | 497 | ||
| 470 | 498 | ||
| @@ -771,8 +799,8 @@ void agp_device_command(u32 bridge_agpstat, bool agp_v3) | |||
| 771 | if (!agp) | 799 | if (!agp) |
| 772 | continue; | 800 | continue; |
| 773 | 801 | ||
| 774 | printk(KERN_INFO PFX "Putting AGP V%d device at %s into %dx mode\n", | 802 | dev_info(&device->dev, "putting AGP V%d device into %dx mode\n", |
| 775 | agp_v3 ? 3 : 2, pci_name(device), mode); | 803 | agp_v3 ? 3 : 2, mode); |
| 776 | pci_write_config_dword(device, agp + PCI_AGP_COMMAND, bridge_agpstat); | 804 | pci_write_config_dword(device, agp + PCI_AGP_COMMAND, bridge_agpstat); |
| 777 | } | 805 | } |
| 778 | } | 806 | } |
| @@ -800,10 +828,8 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode) | |||
| 800 | 828 | ||
| 801 | get_agp_version(agp_bridge); | 829 | get_agp_version(agp_bridge); |
| 802 | 830 | ||
| 803 | printk(KERN_INFO PFX "Found an AGP %d.%d compliant device at %s.\n", | 831 | dev_info(&agp_bridge->dev->dev, "AGP %d.%d bridge\n", |
| 804 | agp_bridge->major_version, | 832 | agp_bridge->major_version, agp_bridge->minor_version); |
| 805 | agp_bridge->minor_version, | ||
| 806 | pci_name(agp_bridge->dev)); | ||
| 807 | 833 | ||
| 808 | pci_read_config_dword(agp_bridge->dev, | 834 | pci_read_config_dword(agp_bridge->dev, |
| 809 | agp_bridge->capndx + PCI_AGP_STATUS, &bridge_agpstat); | 835 | agp_bridge->capndx + PCI_AGP_STATUS, &bridge_agpstat); |
| @@ -832,8 +858,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode) | |||
| 832 | pci_write_config_dword(bridge->dev, | 858 | pci_write_config_dword(bridge->dev, |
| 833 | bridge->capndx+AGPCTRL, temp); | 859 | bridge->capndx+AGPCTRL, temp); |
| 834 | 860 | ||
| 835 | printk(KERN_INFO PFX "Device is in legacy mode," | 861 | dev_info(&bridge->dev->dev, "bridge is in legacy mode, falling back to 2.x\n"); |
| 836 | " falling back to 2.x\n"); | ||
| 837 | } | 862 | } |
| 838 | } | 863 | } |
| 839 | 864 | ||
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index df702642ab8f..016fdf0623a4 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -32,8 +32,8 @@ | |||
| 32 | #define PCI_DEVICE_ID_INTEL_Q35_IG 0x29B2 | 32 | #define PCI_DEVICE_ID_INTEL_Q35_IG 0x29B2 |
| 33 | #define PCI_DEVICE_ID_INTEL_Q33_HB 0x29D0 | 33 | #define PCI_DEVICE_ID_INTEL_Q33_HB 0x29D0 |
| 34 | #define PCI_DEVICE_ID_INTEL_Q33_IG 0x29D2 | 34 | #define PCI_DEVICE_ID_INTEL_Q33_IG 0x29D2 |
| 35 | #define PCI_DEVICE_ID_INTEL_IGD_HB 0x2A40 | 35 | #define PCI_DEVICE_ID_INTEL_GM45_HB 0x2A40 |
| 36 | #define PCI_DEVICE_ID_INTEL_IGD_IG 0x2A42 | 36 | #define PCI_DEVICE_ID_INTEL_GM45_IG 0x2A42 |
| 37 | #define PCI_DEVICE_ID_INTEL_IGD_E_HB 0x2E00 | 37 | #define PCI_DEVICE_ID_INTEL_IGD_E_HB 0x2E00 |
| 38 | #define PCI_DEVICE_ID_INTEL_IGD_E_IG 0x2E02 | 38 | #define PCI_DEVICE_ID_INTEL_IGD_E_IG 0x2E02 |
| 39 | #define PCI_DEVICE_ID_INTEL_Q45_HB 0x2E10 | 39 | #define PCI_DEVICE_ID_INTEL_Q45_HB 0x2E10 |
| @@ -55,7 +55,7 @@ | |||
| 55 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_HB || \ | 55 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_HB || \ |
| 56 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GM_HB || \ | 56 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GM_HB || \ |
| 57 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB || \ | 57 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB || \ |
| 58 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_HB) | 58 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB) |
| 59 | 59 | ||
| 60 | #define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \ | 60 | #define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \ |
| 61 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \ | 61 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \ |
| @@ -161,7 +161,7 @@ static int intel_i810_fetch_size(void) | |||
| 161 | values = A_SIZE_FIX(agp_bridge->driver->aperture_sizes); | 161 | values = A_SIZE_FIX(agp_bridge->driver->aperture_sizes); |
| 162 | 162 | ||
| 163 | if ((smram_miscc & I810_GMS) == I810_GMS_DISABLE) { | 163 | if ((smram_miscc & I810_GMS) == I810_GMS_DISABLE) { |
| 164 | printk(KERN_WARNING PFX "i810 is disabled\n"); | 164 | dev_warn(&agp_bridge->dev->dev, "i810 is disabled\n"); |
| 165 | return 0; | 165 | return 0; |
| 166 | } | 166 | } |
| 167 | if ((smram_miscc & I810_GFX_MEM_WIN_SIZE) == I810_GFX_MEM_WIN_32M) { | 167 | if ((smram_miscc & I810_GFX_MEM_WIN_SIZE) == I810_GFX_MEM_WIN_32M) { |
| @@ -193,7 +193,8 @@ static int intel_i810_configure(void) | |||
| 193 | 193 | ||
| 194 | intel_private.registers = ioremap(temp, 128 * 4096); | 194 | intel_private.registers = ioremap(temp, 128 * 4096); |
| 195 | if (!intel_private.registers) { | 195 | if (!intel_private.registers) { |
| 196 | printk(KERN_ERR PFX "Unable to remap memory.\n"); | 196 | dev_err(&intel_private.pcidev->dev, |
| 197 | "can't remap memory\n"); | ||
| 197 | return -ENOMEM; | 198 | return -ENOMEM; |
| 198 | } | 199 | } |
| 199 | } | 200 | } |
| @@ -201,7 +202,8 @@ static int intel_i810_configure(void) | |||
| 201 | if ((readl(intel_private.registers+I810_DRAM_CTL) | 202 | if ((readl(intel_private.registers+I810_DRAM_CTL) |
| 202 | & I810_DRAM_ROW_0) == I810_DRAM_ROW_0_SDRAM) { | 203 | & I810_DRAM_ROW_0) == I810_DRAM_ROW_0_SDRAM) { |
| 203 | /* This will need to be dynamically assigned */ | 204 | /* This will need to be dynamically assigned */ |
| 204 | printk(KERN_INFO PFX "detected 4MB dedicated video ram.\n"); | 205 | dev_info(&intel_private.pcidev->dev, |
| 206 | "detected 4MB dedicated video ram\n"); | ||
| 205 | intel_private.num_dcache_entries = 1024; | 207 | intel_private.num_dcache_entries = 1024; |
| 206 | } | 208 | } |
| 207 | pci_read_config_dword(intel_private.pcidev, I810_GMADDR, &temp); | 209 | pci_read_config_dword(intel_private.pcidev, I810_GMADDR, &temp); |
| @@ -500,8 +502,8 @@ static void intel_i830_init_gtt_entries(void) | |||
| 500 | size = 1024 + 512; | 502 | size = 1024 + 512; |
| 501 | break; | 503 | break; |
| 502 | default: | 504 | default: |
| 503 | printk(KERN_INFO PFX "Unknown page table size, " | 505 | dev_info(&intel_private.pcidev->dev, |
| 504 | "assuming 512KB\n"); | 506 | "unknown page table size, assuming 512KB\n"); |
| 505 | size = 512; | 507 | size = 512; |
| 506 | } | 508 | } |
| 507 | size += 4; /* add in BIOS popup space */ | 509 | size += 4; /* add in BIOS popup space */ |
| @@ -515,8 +517,8 @@ static void intel_i830_init_gtt_entries(void) | |||
| 515 | size = 2048; | 517 | size = 2048; |
| 516 | break; | 518 | break; |
| 517 | default: | 519 | default: |
| 518 | printk(KERN_INFO PFX "Unknown page table size 0x%x, " | 520 | dev_info(&agp_bridge->dev->dev, |
| 519 | "assuming 512KB\n", | 521 | "unknown page table size 0x%x, assuming 512KB\n", |
| 520 | (gmch_ctrl & G33_PGETBL_SIZE_MASK)); | 522 | (gmch_ctrl & G33_PGETBL_SIZE_MASK)); |
| 521 | size = 512; | 523 | size = 512; |
| 522 | } | 524 | } |
| @@ -627,11 +629,11 @@ static void intel_i830_init_gtt_entries(void) | |||
| 627 | } | 629 | } |
| 628 | } | 630 | } |
| 629 | if (gtt_entries > 0) | 631 | if (gtt_entries > 0) |
| 630 | printk(KERN_INFO PFX "Detected %dK %s memory.\n", | 632 | dev_info(&agp_bridge->dev->dev, "detected %dK %s memory\n", |
| 631 | gtt_entries / KB(1), local ? "local" : "stolen"); | 633 | gtt_entries / KB(1), local ? "local" : "stolen"); |
| 632 | else | 634 | else |
| 633 | printk(KERN_INFO PFX | 635 | dev_info(&agp_bridge->dev->dev, |
| 634 | "No pre-allocated video memory detected.\n"); | 636 | "no pre-allocated video memory detected\n"); |
| 635 | gtt_entries /= KB(4); | 637 | gtt_entries /= KB(4); |
| 636 | 638 | ||
| 637 | intel_private.gtt_entries = gtt_entries; | 639 | intel_private.gtt_entries = gtt_entries; |
| @@ -801,10 +803,12 @@ static int intel_i830_insert_entries(struct agp_memory *mem, off_t pg_start, | |||
| 801 | num_entries = A_SIZE_FIX(temp)->num_entries; | 803 | num_entries = A_SIZE_FIX(temp)->num_entries; |
| 802 | 804 | ||
| 803 | if (pg_start < intel_private.gtt_entries) { | 805 | if (pg_start < intel_private.gtt_entries) { |
| 804 | printk(KERN_DEBUG PFX "pg_start == 0x%.8lx,intel_private.gtt_entries == 0x%.8x\n", | 806 | dev_printk(KERN_DEBUG, &intel_private.pcidev->dev, |
| 805 | pg_start, intel_private.gtt_entries); | 807 | "pg_start == 0x%.8lx, intel_private.gtt_entries == 0x%.8x\n", |
| 808 | pg_start, intel_private.gtt_entries); | ||
| 806 | 809 | ||
| 807 | printk(KERN_INFO PFX "Trying to insert into local/stolen memory\n"); | 810 | dev_info(&intel_private.pcidev->dev, |
| 811 | "trying to insert into local/stolen memory\n"); | ||
| 808 | goto out_err; | 812 | goto out_err; |
| 809 | } | 813 | } |
| 810 | 814 | ||
| @@ -851,7 +855,8 @@ static int intel_i830_remove_entries(struct agp_memory *mem, off_t pg_start, | |||
| 851 | return 0; | 855 | return 0; |
| 852 | 856 | ||
| 853 | if (pg_start < intel_private.gtt_entries) { | 857 | if (pg_start < intel_private.gtt_entries) { |
| 854 | printk(KERN_INFO PFX "Trying to disable local/stolen memory\n"); | 858 | dev_info(&intel_private.pcidev->dev, |
| 859 | "trying to disable local/stolen memory\n"); | ||
| 855 | return -EINVAL; | 860 | return -EINVAL; |
| 856 | } | 861 | } |
| 857 | 862 | ||
| @@ -957,7 +962,7 @@ static void intel_i9xx_setup_flush(void) | |||
| 957 | if (intel_private.ifp_resource.start) { | 962 | if (intel_private.ifp_resource.start) { |
| 958 | intel_private.i9xx_flush_page = ioremap_nocache(intel_private.ifp_resource.start, PAGE_SIZE); | 963 | intel_private.i9xx_flush_page = ioremap_nocache(intel_private.ifp_resource.start, PAGE_SIZE); |
| 959 | if (!intel_private.i9xx_flush_page) | 964 | if (!intel_private.i9xx_flush_page) |
| 960 | printk(KERN_INFO "unable to ioremap flush page - no chipset flushing"); | 965 | dev_info(&intel_private.pcidev->dev, "can't ioremap flush page - no chipset flushing"); |
| 961 | } | 966 | } |
| 962 | } | 967 | } |
| 963 | 968 | ||
| @@ -1028,10 +1033,12 @@ static int intel_i915_insert_entries(struct agp_memory *mem, off_t pg_start, | |||
| 1028 | num_entries = A_SIZE_FIX(temp)->num_entries; | 1033 | num_entries = A_SIZE_FIX(temp)->num_entries; |
| 1029 | 1034 | ||
| 1030 | if (pg_start < intel_private.gtt_entries) { | 1035 | if (pg_start < intel_private.gtt_entries) { |
| 1031 | printk(KERN_DEBUG PFX "pg_start == 0x%.8lx,intel_private.gtt_entries == 0x%.8x\n", | 1036 | dev_printk(KERN_DEBUG, &intel_private.pcidev->dev, |
| 1032 | pg_start, intel_private.gtt_entries); | 1037 | "pg_start == 0x%.8lx, intel_private.gtt_entries == 0x%.8x\n", |
| 1038 | pg_start, intel_private.gtt_entries); | ||
| 1033 | 1039 | ||
| 1034 | printk(KERN_INFO PFX "Trying to insert into local/stolen memory\n"); | 1040 | dev_info(&intel_private.pcidev->dev, |
| 1041 | "trying to insert into local/stolen memory\n"); | ||
| 1035 | goto out_err; | 1042 | goto out_err; |
| 1036 | } | 1043 | } |
| 1037 | 1044 | ||
| @@ -1078,7 +1085,8 @@ static int intel_i915_remove_entries(struct agp_memory *mem, off_t pg_start, | |||
| 1078 | return 0; | 1085 | return 0; |
| 1079 | 1086 | ||
| 1080 | if (pg_start < intel_private.gtt_entries) { | 1087 | if (pg_start < intel_private.gtt_entries) { |
| 1081 | printk(KERN_INFO PFX "Trying to disable local/stolen memory\n"); | 1088 | dev_info(&intel_private.pcidev->dev, |
| 1089 | "trying to disable local/stolen memory\n"); | ||
| 1082 | return -EINVAL; | 1090 | return -EINVAL; |
| 1083 | } | 1091 | } |
| 1084 | 1092 | ||
| @@ -1182,7 +1190,7 @@ static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge, | |||
| 1182 | static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size) | 1190 | static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size) |
| 1183 | { | 1191 | { |
| 1184 | switch (agp_bridge->dev->device) { | 1192 | switch (agp_bridge->dev->device) { |
| 1185 | case PCI_DEVICE_ID_INTEL_IGD_HB: | 1193 | case PCI_DEVICE_ID_INTEL_GM45_HB: |
| 1186 | case PCI_DEVICE_ID_INTEL_IGD_E_HB: | 1194 | case PCI_DEVICE_ID_INTEL_IGD_E_HB: |
| 1187 | case PCI_DEVICE_ID_INTEL_Q45_HB: | 1195 | case PCI_DEVICE_ID_INTEL_Q45_HB: |
| 1188 | case PCI_DEVICE_ID_INTEL_G45_HB: | 1196 | case PCI_DEVICE_ID_INTEL_G45_HB: |
| @@ -1379,7 +1387,7 @@ static int intel_815_configure(void) | |||
| 1379 | /* the Intel 815 chipset spec. says that bits 29-31 in the | 1387 | /* the Intel 815 chipset spec. says that bits 29-31 in the |
| 1380 | * ATTBASE register are reserved -> try not to write them */ | 1388 | * ATTBASE register are reserved -> try not to write them */ |
| 1381 | if (agp_bridge->gatt_bus_addr & INTEL_815_ATTBASE_MASK) { | 1389 | if (agp_bridge->gatt_bus_addr & INTEL_815_ATTBASE_MASK) { |
| 1382 | printk(KERN_EMERG PFX "gatt bus addr too high"); | 1390 | dev_emerg(&agp_bridge->dev->dev, "gatt bus addr too high"); |
| 1383 | return -EINVAL; | 1391 | return -EINVAL; |
| 1384 | } | 1392 | } |
| 1385 | 1393 | ||
| @@ -2117,8 +2125,8 @@ static const struct intel_driver_description { | |||
| 2117 | NULL, &intel_g33_driver }, | 2125 | NULL, &intel_g33_driver }, |
| 2118 | { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", | 2126 | { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", |
| 2119 | NULL, &intel_g33_driver }, | 2127 | NULL, &intel_g33_driver }, |
| 2120 | { PCI_DEVICE_ID_INTEL_IGD_HB, PCI_DEVICE_ID_INTEL_IGD_IG, 0, | 2128 | { PCI_DEVICE_ID_INTEL_GM45_HB, PCI_DEVICE_ID_INTEL_GM45_IG, 0, |
| 2121 | "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, | 2129 | "Mobile Intel? GM45 Express", NULL, &intel_i965_driver }, |
| 2122 | { PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0, | 2130 | { PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0, |
| 2123 | "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, | 2131 | "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, |
| 2124 | { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0, | 2132 | { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0, |
| @@ -2163,8 +2171,8 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
| 2163 | 2171 | ||
| 2164 | if (intel_agp_chipsets[i].name == NULL) { | 2172 | if (intel_agp_chipsets[i].name == NULL) { |
| 2165 | if (cap_ptr) | 2173 | if (cap_ptr) |
| 2166 | printk(KERN_WARNING PFX "Unsupported Intel chipset" | 2174 | dev_warn(&pdev->dev, "unsupported Intel chipset [%04x/%04x]\n", |
| 2167 | "(device id: %04x)\n", pdev->device); | 2175 | pdev->vendor, pdev->device); |
| 2168 | agp_put_bridge(bridge); | 2176 | agp_put_bridge(bridge); |
| 2169 | return -ENODEV; | 2177 | return -ENODEV; |
| 2170 | } | 2178 | } |
| @@ -2172,9 +2180,8 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
| 2172 | if (bridge->driver == NULL) { | 2180 | if (bridge->driver == NULL) { |
| 2173 | /* bridge has no AGP and no IGD detected */ | 2181 | /* bridge has no AGP and no IGD detected */ |
| 2174 | if (cap_ptr) | 2182 | if (cap_ptr) |
| 2175 | printk(KERN_WARNING PFX "Failed to find bridge device " | 2183 | dev_warn(&pdev->dev, "can't find bridge device (chip_id: %04x)\n", |
| 2176 | "(chip_id: %04x)\n", | 2184 | intel_agp_chipsets[i].gmch_chip_id); |
| 2177 | intel_agp_chipsets[i].gmch_chip_id); | ||
| 2178 | agp_put_bridge(bridge); | 2185 | agp_put_bridge(bridge); |
| 2179 | return -ENODEV; | 2186 | return -ENODEV; |
| 2180 | } | 2187 | } |
| @@ -2183,8 +2190,7 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
| 2183 | bridge->capndx = cap_ptr; | 2190 | bridge->capndx = cap_ptr; |
| 2184 | bridge->dev_private_data = &intel_private; | 2191 | bridge->dev_private_data = &intel_private; |
| 2185 | 2192 | ||
| 2186 | printk(KERN_INFO PFX "Detected an Intel %s Chipset.\n", | 2193 | dev_info(&pdev->dev, "Intel %s Chipset\n", intel_agp_chipsets[i].name); |
| 2187 | intel_agp_chipsets[i].name); | ||
| 2188 | 2194 | ||
| 2189 | /* | 2195 | /* |
| 2190 | * The following fixes the case where the BIOS has "forgotten" to | 2196 | * The following fixes the case where the BIOS has "forgotten" to |
| @@ -2194,7 +2200,7 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
| 2194 | r = &pdev->resource[0]; | 2200 | r = &pdev->resource[0]; |
| 2195 | if (!r->start && r->end) { | 2201 | if (!r->start && r->end) { |
| 2196 | if (pci_assign_resource(pdev, 0)) { | 2202 | if (pci_assign_resource(pdev, 0)) { |
| 2197 | printk(KERN_ERR PFX "could not assign resource 0\n"); | 2203 | dev_err(&pdev->dev, "can't assign resource 0\n"); |
| 2198 | agp_put_bridge(bridge); | 2204 | agp_put_bridge(bridge); |
| 2199 | return -ENODEV; | 2205 | return -ENODEV; |
| 2200 | } | 2206 | } |
| @@ -2206,7 +2212,7 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
| 2206 | * 20030610 - hamish@zot.org | 2212 | * 20030610 - hamish@zot.org |
| 2207 | */ | 2213 | */ |
| 2208 | if (pci_enable_device(pdev)) { | 2214 | if (pci_enable_device(pdev)) { |
| 2209 | printk(KERN_ERR PFX "Unable to Enable PCI device\n"); | 2215 | dev_err(&pdev->dev, "can't enable PCI device\n"); |
| 2210 | agp_put_bridge(bridge); | 2216 | agp_put_bridge(bridge); |
| 2211 | return -ENODEV; | 2217 | return -ENODEV; |
| 2212 | } | 2218 | } |
| @@ -2238,6 +2244,7 @@ static void __devexit agp_intel_remove(struct pci_dev *pdev) | |||
| 2238 | static int agp_intel_resume(struct pci_dev *pdev) | 2244 | static int agp_intel_resume(struct pci_dev *pdev) |
| 2239 | { | 2245 | { |
| 2240 | struct agp_bridge_data *bridge = pci_get_drvdata(pdev); | 2246 | struct agp_bridge_data *bridge = pci_get_drvdata(pdev); |
| 2247 | int ret_val; | ||
| 2241 | 2248 | ||
| 2242 | pci_restore_state(pdev); | 2249 | pci_restore_state(pdev); |
| 2243 | 2250 | ||
| @@ -2265,6 +2272,10 @@ static int agp_intel_resume(struct pci_dev *pdev) | |||
| 2265 | else if (bridge->driver == &intel_i965_driver) | 2272 | else if (bridge->driver == &intel_i965_driver) |
| 2266 | intel_i915_configure(); | 2273 | intel_i915_configure(); |
| 2267 | 2274 | ||
| 2275 | ret_val = agp_rebind_memory(); | ||
| 2276 | if (ret_val != 0) | ||
| 2277 | return ret_val; | ||
| 2278 | |||
| 2268 | return 0; | 2279 | return 0; |
| 2269 | } | 2280 | } |
| 2270 | #endif | 2281 | #endif |
| @@ -2315,7 +2326,7 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
| 2315 | ID(PCI_DEVICE_ID_INTEL_G33_HB), | 2326 | ID(PCI_DEVICE_ID_INTEL_G33_HB), |
| 2316 | ID(PCI_DEVICE_ID_INTEL_Q35_HB), | 2327 | ID(PCI_DEVICE_ID_INTEL_Q35_HB), |
| 2317 | ID(PCI_DEVICE_ID_INTEL_Q33_HB), | 2328 | ID(PCI_DEVICE_ID_INTEL_Q33_HB), |
| 2318 | ID(PCI_DEVICE_ID_INTEL_IGD_HB), | 2329 | ID(PCI_DEVICE_ID_INTEL_GM45_HB), |
| 2319 | ID(PCI_DEVICE_ID_INTEL_IGD_E_HB), | 2330 | ID(PCI_DEVICE_ID_INTEL_IGD_E_HB), |
| 2320 | ID(PCI_DEVICE_ID_INTEL_Q45_HB), | 2331 | ID(PCI_DEVICE_ID_INTEL_Q45_HB), |
| 2321 | ID(PCI_DEVICE_ID_INTEL_G45_HB), | 2332 | ID(PCI_DEVICE_ID_INTEL_G45_HB), |
diff --git a/drivers/char/agp/isoch.c b/drivers/char/agp/isoch.c index 3f9ccde62377..c73385cc4b8a 100644 --- a/drivers/char/agp/isoch.c +++ b/drivers/char/agp/isoch.c | |||
| @@ -153,7 +153,7 @@ static int agp_3_5_isochronous_node_enable(struct agp_bridge_data *bridge, | |||
| 153 | 153 | ||
| 154 | /* Check if this configuration has any chance of working */ | 154 | /* Check if this configuration has any chance of working */ |
| 155 | if (tot_bw > target.maxbw) { | 155 | if (tot_bw > target.maxbw) { |
| 156 | printk(KERN_ERR PFX "isochronous bandwidth required " | 156 | dev_err(&td->dev, "isochronous bandwidth required " |
| 157 | "by AGP 3.0 devices exceeds that which is supported by " | 157 | "by AGP 3.0 devices exceeds that which is supported by " |
| 158 | "the AGP 3.0 bridge!\n"); | 158 | "the AGP 3.0 bridge!\n"); |
| 159 | ret = -ENODEV; | 159 | ret = -ENODEV; |
| @@ -188,7 +188,7 @@ static int agp_3_5_isochronous_node_enable(struct agp_bridge_data *bridge, | |||
| 188 | /* Exit if the minimal ISOCH_N allocation among the masters is more | 188 | /* Exit if the minimal ISOCH_N allocation among the masters is more |
| 189 | * than the target can handle. */ | 189 | * than the target can handle. */ |
| 190 | if (tot_n > target.n) { | 190 | if (tot_n > target.n) { |
| 191 | printk(KERN_ERR PFX "number of isochronous " | 191 | dev_err(&td->dev, "number of isochronous " |
| 192 | "transactions per period required by AGP 3.0 devices " | 192 | "transactions per period required by AGP 3.0 devices " |
| 193 | "exceeds that which is supported by the AGP 3.0 " | 193 | "exceeds that which is supported by the AGP 3.0 " |
| 194 | "bridge!\n"); | 194 | "bridge!\n"); |
| @@ -229,7 +229,7 @@ static int agp_3_5_isochronous_node_enable(struct agp_bridge_data *bridge, | |||
| 229 | /* Exit if the minimal RQ needs of the masters exceeds what the target | 229 | /* Exit if the minimal RQ needs of the masters exceeds what the target |
| 230 | * can provide. */ | 230 | * can provide. */ |
| 231 | if (tot_rq > rq_isoch) { | 231 | if (tot_rq > rq_isoch) { |
| 232 | printk(KERN_ERR PFX "number of request queue slots " | 232 | dev_err(&td->dev, "number of request queue slots " |
| 233 | "required by the isochronous bandwidth requested by " | 233 | "required by the isochronous bandwidth requested by " |
| 234 | "AGP 3.0 devices exceeds the number provided by the " | 234 | "AGP 3.0 devices exceeds the number provided by the " |
| 235 | "AGP 3.0 bridge!\n"); | 235 | "AGP 3.0 bridge!\n"); |
| @@ -359,8 +359,9 @@ int agp_3_5_enable(struct agp_bridge_data *bridge) | |||
| 359 | case 0x0001: /* Unclassified device */ | 359 | case 0x0001: /* Unclassified device */ |
| 360 | /* Don't know what this is, but log it for investigation. */ | 360 | /* Don't know what this is, but log it for investigation. */ |
| 361 | if (mcapndx != 0) { | 361 | if (mcapndx != 0) { |
| 362 | printk (KERN_INFO PFX "Wacky, found unclassified AGP device. %x:%x\n", | 362 | dev_info(&td->dev, "wacky, found unclassified AGP device %s [%04x/%04x]\n", |
| 363 | dev->vendor, dev->device); | 363 | pci_name(dev), |
| 364 | dev->vendor, dev->device); | ||
| 364 | } | 365 | } |
| 365 | continue; | 366 | continue; |
| 366 | 367 | ||
| @@ -407,17 +408,18 @@ int agp_3_5_enable(struct agp_bridge_data *bridge) | |||
| 407 | } | 408 | } |
| 408 | 409 | ||
| 409 | if (mcapndx == 0) { | 410 | if (mcapndx == 0) { |
| 410 | printk(KERN_ERR PFX "woah! Non-AGP device " | 411 | dev_err(&td->dev, "woah! Non-AGP device %s on " |
| 411 | "found on the secondary bus of an AGP 3.5 bridge!\n"); | 412 | "secondary bus of AGP 3.5 bridge!\n", |
| 413 | pci_name(dev)); | ||
| 412 | ret = -ENODEV; | 414 | ret = -ENODEV; |
| 413 | goto free_and_exit; | 415 | goto free_and_exit; |
| 414 | } | 416 | } |
| 415 | 417 | ||
| 416 | mmajor = (ncapid >> AGP_MAJOR_VERSION_SHIFT) & 0xf; | 418 | mmajor = (ncapid >> AGP_MAJOR_VERSION_SHIFT) & 0xf; |
| 417 | if (mmajor < 3) { | 419 | if (mmajor < 3) { |
| 418 | printk(KERN_ERR PFX "woah! AGP 2.0 device " | 420 | dev_err(&td->dev, "woah! AGP 2.0 device %s on " |
| 419 | "found on the secondary bus of an AGP 3.5 " | 421 | "secondary bus of AGP 3.5 bridge operating " |
| 420 | "bridge operating with AGP 3.0 electricals!\n"); | 422 | "with AGP 3.0 electricals!\n", pci_name(dev)); |
| 421 | ret = -ENODEV; | 423 | ret = -ENODEV; |
| 422 | goto free_and_exit; | 424 | goto free_and_exit; |
| 423 | } | 425 | } |
| @@ -427,10 +429,10 @@ int agp_3_5_enable(struct agp_bridge_data *bridge) | |||
| 427 | pci_read_config_dword(dev, cur->capndx+AGPSTAT, &mstatus); | 429 | pci_read_config_dword(dev, cur->capndx+AGPSTAT, &mstatus); |
| 428 | 430 | ||
| 429 | if (((mstatus >> 3) & 0x1) == 0) { | 431 | if (((mstatus >> 3) & 0x1) == 0) { |
| 430 | printk(KERN_ERR PFX "woah! AGP 3.x device " | 432 | dev_err(&td->dev, "woah! AGP 3.x device %s not " |
| 431 | "not operating in AGP 3.x mode found on the " | 433 | "operating in AGP 3.x mode on secondary bus " |
| 432 | "secondary bus of an AGP 3.5 bridge operating " | 434 | "of AGP 3.5 bridge operating with AGP 3.0 " |
| 433 | "with AGP 3.0 electricals!\n"); | 435 | "electricals!\n", pci_name(dev)); |
| 434 | ret = -ENODEV; | 436 | ret = -ENODEV; |
| 435 | goto free_and_exit; | 437 | goto free_and_exit; |
| 436 | } | 438 | } |
| @@ -444,9 +446,9 @@ int agp_3_5_enable(struct agp_bridge_data *bridge) | |||
| 444 | if (isoch) { | 446 | if (isoch) { |
| 445 | ret = agp_3_5_isochronous_node_enable(bridge, dev_list, ndevs); | 447 | ret = agp_3_5_isochronous_node_enable(bridge, dev_list, ndevs); |
| 446 | if (ret) { | 448 | if (ret) { |
| 447 | printk(KERN_INFO PFX "Something bad happened setting " | 449 | dev_info(&td->dev, "something bad happened setting " |
| 448 | "up isochronous xfers. Falling back to " | 450 | "up isochronous xfers; falling back to " |
| 449 | "non-isochronous xfer mode.\n"); | 451 | "non-isochronous xfer mode\n"); |
| 450 | } else { | 452 | } else { |
| 451 | goto free_and_exit; | 453 | goto free_and_exit; |
| 452 | } | 454 | } |
| @@ -466,4 +468,3 @@ free_and_exit: | |||
| 466 | get_out: | 468 | get_out: |
| 467 | return ret; | 469 | return ret; |
| 468 | } | 470 | } |
| 469 | |||
diff --git a/drivers/char/agp/sis-agp.c b/drivers/char/agp/sis-agp.c index b6791846809f..2587ef96a960 100644 --- a/drivers/char/agp/sis-agp.c +++ b/drivers/char/agp/sis-agp.c | |||
| @@ -79,10 +79,8 @@ static void sis_delayed_enable(struct agp_bridge_data *bridge, u32 mode) | |||
| 79 | u32 command; | 79 | u32 command; |
| 80 | int rate; | 80 | int rate; |
| 81 | 81 | ||
| 82 | printk(KERN_INFO PFX "Found an AGP %d.%d compliant device at %s.\n", | 82 | dev_info(&agp_bridge->dev->dev, "AGP %d.%d bridge\n", |
| 83 | agp_bridge->major_version, | 83 | agp_bridge->major_version, agp_bridge->minor_version); |
| 84 | agp_bridge->minor_version, | ||
| 85 | pci_name(agp_bridge->dev)); | ||
| 86 | 84 | ||
| 87 | pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx + PCI_AGP_STATUS, &command); | 85 | pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx + PCI_AGP_STATUS, &command); |
| 88 | command = agp_collect_device_status(bridge, mode, command); | 86 | command = agp_collect_device_status(bridge, mode, command); |
| @@ -94,8 +92,8 @@ static void sis_delayed_enable(struct agp_bridge_data *bridge, u32 mode) | |||
| 94 | if (!agp) | 92 | if (!agp) |
| 95 | continue; | 93 | continue; |
| 96 | 94 | ||
| 97 | printk(KERN_INFO PFX "Putting AGP V3 device at %s into %dx mode\n", | 95 | dev_info(&agp_bridge->dev->dev, "putting AGP V3 device at %s into %dx mode\n", |
| 98 | pci_name(device), rate); | 96 | pci_name(device), rate); |
| 99 | 97 | ||
| 100 | pci_write_config_dword(device, agp + PCI_AGP_COMMAND, command); | 98 | pci_write_config_dword(device, agp + PCI_AGP_COMMAND, command); |
| 101 | 99 | ||
| @@ -105,7 +103,7 @@ static void sis_delayed_enable(struct agp_bridge_data *bridge, u32 mode) | |||
| 105 | * cannot be configured | 103 | * cannot be configured |
| 106 | */ | 104 | */ |
| 107 | if (device->device == bridge->dev->device) { | 105 | if (device->device == bridge->dev->device) { |
| 108 | printk(KERN_INFO PFX "SiS delay workaround: giving bridge time to recover.\n"); | 106 | dev_info(&agp_bridge->dev->dev, "SiS delay workaround: giving bridge time to recover\n"); |
| 109 | msleep(10); | 107 | msleep(10); |
| 110 | } | 108 | } |
| 111 | } | 109 | } |
| @@ -190,7 +188,8 @@ static int __devinit agp_sis_probe(struct pci_dev *pdev, | |||
| 190 | return -ENODEV; | 188 | return -ENODEV; |
| 191 | 189 | ||
| 192 | 190 | ||
| 193 | printk(KERN_INFO PFX "Detected SiS chipset - id:%i\n", pdev->device); | 191 | dev_info(&pdev->dev, "SiS chipset [%04x/%04x]\n", |
| 192 | pdev->vendor, pdev->device); | ||
| 194 | bridge = agp_alloc_bridge(); | 193 | bridge = agp_alloc_bridge(); |
| 195 | if (!bridge) | 194 | if (!bridge) |
| 196 | return -ENOMEM; | 195 | return -ENOMEM; |
| @@ -242,7 +241,7 @@ static struct pci_device_id agp_sis_pci_table[] = { | |||
| 242 | .class = (PCI_CLASS_BRIDGE_HOST << 8), | 241 | .class = (PCI_CLASS_BRIDGE_HOST << 8), |
| 243 | .class_mask = ~0, | 242 | .class_mask = ~0, |
| 244 | .vendor = PCI_VENDOR_ID_SI, | 243 | .vendor = PCI_VENDOR_ID_SI, |
| 245 | .device = PCI_DEVICE_ID_SI_5591_AGP, | 244 | .device = PCI_DEVICE_ID_SI_5591, |
| 246 | .subvendor = PCI_ANY_ID, | 245 | .subvendor = PCI_ANY_ID, |
| 247 | .subdevice = PCI_ANY_ID, | 246 | .subdevice = PCI_ANY_ID, |
| 248 | }, | 247 | }, |
diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c index 0e054c134490..2fb27fe4c10c 100644 --- a/drivers/char/agp/sworks-agp.c +++ b/drivers/char/agp/sworks-agp.c | |||
| @@ -241,7 +241,8 @@ static void serverworks_tlbflush(struct agp_memory *temp) | |||
| 241 | while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1) { | 241 | while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1) { |
| 242 | cpu_relax(); | 242 | cpu_relax(); |
| 243 | if (time_after(jiffies, timeout)) { | 243 | if (time_after(jiffies, timeout)) { |
| 244 | printk(KERN_ERR PFX "TLB post flush took more than 3 seconds\n"); | 244 | dev_err(&serverworks_private.svrwrks_dev->dev, |
| 245 | "TLB post flush took more than 3 seconds\n"); | ||
| 245 | break; | 246 | break; |
| 246 | } | 247 | } |
| 247 | } | 248 | } |
| @@ -251,7 +252,8 @@ static void serverworks_tlbflush(struct agp_memory *temp) | |||
| 251 | while (readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1) { | 252 | while (readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1) { |
| 252 | cpu_relax(); | 253 | cpu_relax(); |
| 253 | if (time_after(jiffies, timeout)) { | 254 | if (time_after(jiffies, timeout)) { |
| 254 | printk(KERN_ERR PFX "TLB Dir flush took more than 3 seconds\n"); | 255 | dev_err(&serverworks_private.svrwrks_dev->dev, |
| 256 | "TLB Dir flush took more than 3 seconds\n"); | ||
| 255 | break; | 257 | break; |
| 256 | } | 258 | } |
| 257 | } | 259 | } |
| @@ -271,7 +273,7 @@ static int serverworks_configure(void) | |||
| 271 | temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); | 273 | temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); |
| 272 | serverworks_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); | 274 | serverworks_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); |
| 273 | if (!serverworks_private.registers) { | 275 | if (!serverworks_private.registers) { |
| 274 | printk (KERN_ERR PFX "Unable to ioremap() memory.\n"); | 276 | dev_err(&agp_bridge->dev->dev, "can't ioremap(%#x)\n", temp); |
| 275 | return -ENOMEM; | 277 | return -ENOMEM; |
| 276 | } | 278 | } |
| 277 | 279 | ||
| @@ -451,7 +453,7 @@ static int __devinit agp_serverworks_probe(struct pci_dev *pdev, | |||
| 451 | 453 | ||
| 452 | switch (pdev->device) { | 454 | switch (pdev->device) { |
| 453 | case 0x0006: | 455 | case 0x0006: |
| 454 | printk (KERN_ERR PFX "ServerWorks CNB20HE is unsupported due to lack of documentation.\n"); | 456 | dev_err(&pdev->dev, "ServerWorks CNB20HE is unsupported due to lack of documentation\n"); |
| 455 | return -ENODEV; | 457 | return -ENODEV; |
| 456 | 458 | ||
| 457 | case PCI_DEVICE_ID_SERVERWORKS_HE: | 459 | case PCI_DEVICE_ID_SERVERWORKS_HE: |
| @@ -461,8 +463,8 @@ static int __devinit agp_serverworks_probe(struct pci_dev *pdev, | |||
| 461 | 463 | ||
| 462 | default: | 464 | default: |
| 463 | if (cap_ptr) | 465 | if (cap_ptr) |
| 464 | printk(KERN_ERR PFX "Unsupported Serverworks chipset " | 466 | dev_err(&pdev->dev, "unsupported Serverworks chipset " |
| 465 | "(device id: %04x)\n", pdev->device); | 467 | "[%04x/%04x]\n", pdev->vendor, pdev->device); |
| 466 | return -ENODEV; | 468 | return -ENODEV; |
| 467 | } | 469 | } |
| 468 | 470 | ||
| @@ -470,8 +472,7 @@ static int __devinit agp_serverworks_probe(struct pci_dev *pdev, | |||
| 470 | bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number, | 472 | bridge_dev = pci_get_bus_and_slot((unsigned int)pdev->bus->number, |
| 471 | PCI_DEVFN(0, 1)); | 473 | PCI_DEVFN(0, 1)); |
| 472 | if (!bridge_dev) { | 474 | if (!bridge_dev) { |
| 473 | printk(KERN_INFO PFX "Detected a Serverworks chipset " | 475 | dev_info(&pdev->dev, "can't find secondary device\n"); |
| 474 | "but could not find the secondary device.\n"); | ||
| 475 | return -ENODEV; | 476 | return -ENODEV; |
| 476 | } | 477 | } |
| 477 | 478 | ||
| @@ -482,8 +483,8 @@ static int __devinit agp_serverworks_probe(struct pci_dev *pdev, | |||
| 482 | if (temp & PCI_BASE_ADDRESS_MEM_TYPE_64) { | 483 | if (temp & PCI_BASE_ADDRESS_MEM_TYPE_64) { |
| 483 | pci_read_config_dword(pdev, SVWRKS_APSIZE + 4, &temp2); | 484 | pci_read_config_dword(pdev, SVWRKS_APSIZE + 4, &temp2); |
| 484 | if (temp2 != 0) { | 485 | if (temp2 != 0) { |
| 485 | printk(KERN_INFO PFX "Detected 64 bit aperture address, " | 486 | dev_info(&pdev->dev, "64 bit aperture address, " |
| 486 | "but top bits are not zero. Disabling agp\n"); | 487 | "but top bits are not zero; disabling AGP\n"); |
| 487 | return -ENODEV; | 488 | return -ENODEV; |
| 488 | } | 489 | } |
| 489 | serverworks_private.mm_addr_ofs = 0x18; | 490 | serverworks_private.mm_addr_ofs = 0x18; |
| @@ -495,8 +496,8 @@ static int __devinit agp_serverworks_probe(struct pci_dev *pdev, | |||
| 495 | pci_read_config_dword(pdev, | 496 | pci_read_config_dword(pdev, |
| 496 | serverworks_private.mm_addr_ofs + 4, &temp2); | 497 | serverworks_private.mm_addr_ofs + 4, &temp2); |
| 497 | if (temp2 != 0) { | 498 | if (temp2 != 0) { |
| 498 | printk(KERN_INFO PFX "Detected 64 bit MMIO address, " | 499 | dev_info(&pdev->dev, "64 bit MMIO address, but top " |
| 499 | "but top bits are not zero. Disabling agp\n"); | 500 | "bits are not zero; disabling AGP\n"); |
| 500 | return -ENODEV; | 501 | return -ENODEV; |
| 501 | } | 502 | } |
| 502 | } | 503 | } |
diff --git a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c index d2fa3cfca02a..eef72709ec53 100644 --- a/drivers/char/agp/uninorth-agp.c +++ b/drivers/char/agp/uninorth-agp.c | |||
| @@ -46,8 +46,8 @@ static int uninorth_fetch_size(void) | |||
| 46 | break; | 46 | break; |
| 47 | 47 | ||
| 48 | if (i == agp_bridge->driver->num_aperture_sizes) { | 48 | if (i == agp_bridge->driver->num_aperture_sizes) { |
| 49 | printk(KERN_ERR PFX "Invalid aperture size, using" | 49 | dev_err(&agp_bridge->dev->dev, "invalid aperture size, " |
| 50 | " default\n"); | 50 | "using default\n"); |
| 51 | size = 0; | 51 | size = 0; |
| 52 | aperture = NULL; | 52 | aperture = NULL; |
| 53 | } | 53 | } |
| @@ -108,8 +108,8 @@ static int uninorth_configure(void) | |||
| 108 | 108 | ||
| 109 | current_size = A_SIZE_32(agp_bridge->current_size); | 109 | current_size = A_SIZE_32(agp_bridge->current_size); |
| 110 | 110 | ||
| 111 | printk(KERN_INFO PFX "configuring for size idx: %d\n", | 111 | dev_info(&agp_bridge->dev->dev, "configuring for size idx: %d\n", |
| 112 | current_size->size_value); | 112 | current_size->size_value); |
| 113 | 113 | ||
| 114 | /* aperture size and gatt addr */ | 114 | /* aperture size and gatt addr */ |
| 115 | pci_write_config_dword(agp_bridge->dev, | 115 | pci_write_config_dword(agp_bridge->dev, |
| @@ -197,8 +197,9 @@ static int u3_insert_memory(struct agp_memory *mem, off_t pg_start, int type) | |||
| 197 | gp = (u32 *) &agp_bridge->gatt_table[pg_start]; | 197 | gp = (u32 *) &agp_bridge->gatt_table[pg_start]; |
| 198 | for (i = 0; i < mem->page_count; ++i) { | 198 | for (i = 0; i < mem->page_count; ++i) { |
| 199 | if (gp[i]) { | 199 | if (gp[i]) { |
| 200 | printk("u3_insert_memory: entry 0x%x occupied (%x)\n", | 200 | dev_info(&agp_bridge->dev->dev, |
| 201 | i, gp[i]); | 201 | "u3_insert_memory: entry 0x%x occupied (%x)\n", |
| 202 | i, gp[i]); | ||
| 202 | return -EBUSY; | 203 | return -EBUSY; |
| 203 | } | 204 | } |
| 204 | } | 205 | } |
| @@ -276,8 +277,8 @@ static void uninorth_agp_enable(struct agp_bridge_data *bridge, u32 mode) | |||
| 276 | &scratch); | 277 | &scratch); |
| 277 | } while ((scratch & PCI_AGP_COMMAND_AGP) == 0 && ++timeout < 1000); | 278 | } while ((scratch & PCI_AGP_COMMAND_AGP) == 0 && ++timeout < 1000); |
| 278 | if ((scratch & PCI_AGP_COMMAND_AGP) == 0) | 279 | if ((scratch & PCI_AGP_COMMAND_AGP) == 0) |
| 279 | printk(KERN_ERR PFX "failed to write UniNorth AGP" | 280 | dev_err(&bridge->dev->dev, "can't write UniNorth AGP " |
| 280 | " command register\n"); | 281 | "command register\n"); |
| 281 | 282 | ||
| 282 | if (uninorth_rev >= 0x30) { | 283 | if (uninorth_rev >= 0x30) { |
| 283 | /* This is an AGP V3 */ | 284 | /* This is an AGP V3 */ |
| @@ -330,8 +331,8 @@ static int agp_uninorth_suspend(struct pci_dev *pdev) | |||
| 330 | pci_read_config_dword(device, agp + PCI_AGP_COMMAND, &cmd); | 331 | pci_read_config_dword(device, agp + PCI_AGP_COMMAND, &cmd); |
| 331 | if (!(cmd & PCI_AGP_COMMAND_AGP)) | 332 | if (!(cmd & PCI_AGP_COMMAND_AGP)) |
| 332 | continue; | 333 | continue; |
| 333 | printk("uninorth-agp: disabling AGP on device %s\n", | 334 | dev_info(&pdev->dev, "disabling AGP on device %s\n", |
| 334 | pci_name(device)); | 335 | pci_name(device)); |
| 335 | cmd &= ~PCI_AGP_COMMAND_AGP; | 336 | cmd &= ~PCI_AGP_COMMAND_AGP; |
| 336 | pci_write_config_dword(device, agp + PCI_AGP_COMMAND, cmd); | 337 | pci_write_config_dword(device, agp + PCI_AGP_COMMAND, cmd); |
| 337 | } | 338 | } |
| @@ -341,8 +342,7 @@ static int agp_uninorth_suspend(struct pci_dev *pdev) | |||
| 341 | pci_read_config_dword(pdev, agp + PCI_AGP_COMMAND, &cmd); | 342 | pci_read_config_dword(pdev, agp + PCI_AGP_COMMAND, &cmd); |
| 342 | bridge->dev_private_data = (void *)(long)cmd; | 343 | bridge->dev_private_data = (void *)(long)cmd; |
| 343 | if (cmd & PCI_AGP_COMMAND_AGP) { | 344 | if (cmd & PCI_AGP_COMMAND_AGP) { |
| 344 | printk("uninorth-agp: disabling AGP on bridge %s\n", | 345 | dev_info(&pdev->dev, "disabling AGP on bridge\n"); |
| 345 | pci_name(pdev)); | ||
| 346 | cmd &= ~PCI_AGP_COMMAND_AGP; | 346 | cmd &= ~PCI_AGP_COMMAND_AGP; |
| 347 | pci_write_config_dword(pdev, agp + PCI_AGP_COMMAND, cmd); | 347 | pci_write_config_dword(pdev, agp + PCI_AGP_COMMAND, cmd); |
| 348 | } | 348 | } |
| @@ -591,14 +591,14 @@ static int __devinit agp_uninorth_probe(struct pci_dev *pdev, | |||
| 591 | /* probe for known chipsets */ | 591 | /* probe for known chipsets */ |
| 592 | for (j = 0; devs[j].chipset_name != NULL; ++j) { | 592 | for (j = 0; devs[j].chipset_name != NULL; ++j) { |
| 593 | if (pdev->device == devs[j].device_id) { | 593 | if (pdev->device == devs[j].device_id) { |
| 594 | printk(KERN_INFO PFX "Detected Apple %s chipset\n", | 594 | dev_info(&pdev->dev, "Apple %s chipset\n", |
| 595 | devs[j].chipset_name); | 595 | devs[j].chipset_name); |
| 596 | goto found; | 596 | goto found; |
| 597 | } | 597 | } |
| 598 | } | 598 | } |
| 599 | 599 | ||
| 600 | printk(KERN_ERR PFX "Unsupported Apple chipset (device id: %04x).\n", | 600 | dev_err(&pdev->dev, "unsupported Apple chipset [%04x/%04x]\n", |
| 601 | pdev->device); | 601 | pdev->vendor, pdev->device); |
| 602 | return -ENODEV; | 602 | return -ENODEV; |
| 603 | 603 | ||
| 604 | found: | 604 | found: |
diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h index 972b12bcfb36..2b8df8b420fd 100644 --- a/include/linux/agp_backend.h +++ b/include/linux/agp_backend.h | |||
| @@ -30,6 +30,8 @@ | |||
| 30 | #ifndef _AGP_BACKEND_H | 30 | #ifndef _AGP_BACKEND_H |
| 31 | #define _AGP_BACKEND_H 1 | 31 | #define _AGP_BACKEND_H 1 |
| 32 | 32 | ||
| 33 | #include <linux/list.h> | ||
| 34 | |||
| 33 | enum chipset_type { | 35 | enum chipset_type { |
| 34 | NOT_SUPPORTED, | 36 | NOT_SUPPORTED, |
| 35 | SUPPORTED, | 37 | SUPPORTED, |
| @@ -78,6 +80,8 @@ struct agp_memory { | |||
| 78 | bool is_bound; | 80 | bool is_bound; |
| 79 | bool is_flushed; | 81 | bool is_flushed; |
| 80 | bool vmalloc_flag; | 82 | bool vmalloc_flag; |
| 83 | /* list of agp_memory mapped to the aperture */ | ||
| 84 | struct list_head mapped_list; | ||
| 81 | }; | 85 | }; |
| 82 | 86 | ||
| 83 | #define AGP_NORMAL_MEMORY 0 | 87 | #define AGP_NORMAL_MEMORY 0 |
| @@ -96,6 +100,7 @@ extern struct agp_memory *agp_allocate_memory(struct agp_bridge_data *, size_t, | |||
| 96 | extern int agp_copy_info(struct agp_bridge_data *, struct agp_kern_info *); | 100 | extern int agp_copy_info(struct agp_bridge_data *, struct agp_kern_info *); |
| 97 | extern int agp_bind_memory(struct agp_memory *, off_t); | 101 | extern int agp_bind_memory(struct agp_memory *, off_t); |
| 98 | extern int agp_unbind_memory(struct agp_memory *); | 102 | extern int agp_unbind_memory(struct agp_memory *); |
| 103 | extern int agp_rebind_memory(void); | ||
| 99 | extern void agp_enable(struct agp_bridge_data *, u32); | 104 | extern void agp_enable(struct agp_bridge_data *, u32); |
| 100 | extern struct agp_bridge_data *agp_backend_acquire(struct pci_dev *); | 105 | extern struct agp_bridge_data *agp_backend_acquire(struct pci_dev *); |
| 101 | extern void agp_backend_release(struct agp_bridge_data *); | 106 | extern void agp_backend_release(struct agp_bridge_data *); |
