aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_dma.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c46
1 files changed, 33 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 3d7082af5b72..62a4bf7b49df 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -827,6 +827,7 @@ static int i915_probe_agp(struct drm_device *dev, unsigned long *aperture_size,
827 struct pci_dev *bridge_dev; 827 struct pci_dev *bridge_dev;
828 u16 tmp = 0; 828 u16 tmp = 0;
829 unsigned long overhead; 829 unsigned long overhead;
830 unsigned long stolen;
830 831
831 bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0,0)); 832 bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0,0));
832 if (!bridge_dev) { 833 if (!bridge_dev) {
@@ -866,36 +867,55 @@ static int i915_probe_agp(struct drm_device *dev, unsigned long *aperture_size,
866 else 867 else
867 overhead = (*aperture_size / 1024) + 4096; 868 overhead = (*aperture_size / 1024) + 4096;
868 869
869 switch (tmp & INTEL_855_GMCH_GMS_MASK) { 870 switch (tmp & INTEL_GMCH_GMS_MASK) {
871 case INTEL_855_GMCH_GMS_DISABLED:
872 DRM_ERROR("video memory is disabled\n");
873 return -1;
870 case INTEL_855_GMCH_GMS_STOLEN_1M: 874 case INTEL_855_GMCH_GMS_STOLEN_1M:
871 break; /* 1M already */ 875 stolen = 1 * 1024 * 1024;
876 break;
872 case INTEL_855_GMCH_GMS_STOLEN_4M: 877 case INTEL_855_GMCH_GMS_STOLEN_4M:
873 *preallocated_size *= 4; 878 stolen = 4 * 1024 * 1024;
874 break; 879 break;
875 case INTEL_855_GMCH_GMS_STOLEN_8M: 880 case INTEL_855_GMCH_GMS_STOLEN_8M:
876 *preallocated_size *= 8; 881 stolen = 8 * 1024 * 1024;
877 break; 882 break;
878 case INTEL_855_GMCH_GMS_STOLEN_16M: 883 case INTEL_855_GMCH_GMS_STOLEN_16M:
879 *preallocated_size *= 16; 884 stolen = 16 * 1024 * 1024;
880 break; 885 break;
881 case INTEL_855_GMCH_GMS_STOLEN_32M: 886 case INTEL_855_GMCH_GMS_STOLEN_32M:
882 *preallocated_size *= 32; 887 stolen = 32 * 1024 * 1024;
883 break; 888 break;
884 case INTEL_915G_GMCH_GMS_STOLEN_48M: 889 case INTEL_915G_GMCH_GMS_STOLEN_48M:
885 *preallocated_size *= 48; 890 stolen = 48 * 1024 * 1024;
886 break; 891 break;
887 case INTEL_915G_GMCH_GMS_STOLEN_64M: 892 case INTEL_915G_GMCH_GMS_STOLEN_64M:
888 *preallocated_size *= 64; 893 stolen = 64 * 1024 * 1024;
894 break;
895 case INTEL_GMCH_GMS_STOLEN_128M:
896 stolen = 128 * 1024 * 1024;
897 break;
898 case INTEL_GMCH_GMS_STOLEN_256M:
899 stolen = 256 * 1024 * 1024;
900 break;
901 case INTEL_GMCH_GMS_STOLEN_96M:
902 stolen = 96 * 1024 * 1024;
903 break;
904 case INTEL_GMCH_GMS_STOLEN_160M:
905 stolen = 160 * 1024 * 1024;
906 break;
907 case INTEL_GMCH_GMS_STOLEN_224M:
908 stolen = 224 * 1024 * 1024;
909 break;
910 case INTEL_GMCH_GMS_STOLEN_352M:
911 stolen = 352 * 1024 * 1024;
889 break; 912 break;
890 case INTEL_855_GMCH_GMS_DISABLED:
891 DRM_ERROR("video memory is disabled\n");
892 return -1;
893 default: 913 default:
894 DRM_ERROR("unexpected GMCH_GMS value: 0x%02x\n", 914 DRM_ERROR("unexpected GMCH_GMS value: 0x%02x\n",
895 tmp & INTEL_855_GMCH_GMS_MASK); 915 tmp & INTEL_GMCH_GMS_MASK);
896 return -1; 916 return -1;
897 } 917 }
898 *preallocated_size -= overhead; 918 *preallocated_size = stolen - overhead;
899 919
900 return 0; 920 return 0;
901} 921}