diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 46 |
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 | } |