Rev 3037 | Rev 3480 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3037 | Rev 3243 | ||
---|---|---|---|
Line 18... | Line 18... | ||
18 | #include |
18 | #include |
19 | #include |
19 | #include |
20 | #include |
20 | #include |
21 | #include |
21 | #include |
22 | #include |
22 | #include |
- | 23 | #include |
|
- | 24 | ||
23 | //#include |
25 | //#include |
24 | //#include |
26 | //#include |
25 | //#include |
27 | //#include |
26 | #include |
28 | #include |
27 | #include "agp.h" |
29 | #include "agp.h" |
28 | #include "intel-agp.h" |
30 | #include "intel-agp.h" |
29 | #include "intel-gtt.h" |
31 | #include |
Line 30... | Line 32... | ||
30 | 32 | ||
Line 31... | Line 33... | ||
31 | #include |
33 | #include |
32 | 34 | ||
Line 108... | Line 110... | ||
108 | #define IS_IRONLAKE intel_private.driver->is_ironlake |
110 | #define IS_IRONLAKE intel_private.driver->is_ironlake |
109 | #define HAS_PGTBL_EN intel_private.driver->has_pgtbl_enable |
111 | #define HAS_PGTBL_EN intel_private.driver->has_pgtbl_enable |
Line 110... | Line 112... | ||
110 | 112 | ||
111 | static int intel_gtt_setup_scratch_page(void) |
113 | static int intel_gtt_setup_scratch_page(void) |
- | 114 | { |
|
112 | { |
115 | struct page *page; |
Line 113... | Line 116... | ||
113 | dma_addr_t dma_addr; |
116 | dma_addr_t dma_addr; |
114 | 117 | ||
115 | dma_addr = AllocPage(); |
118 | page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO); |
- | 119 | if (page == NULL) |
|
Line 116... | Line -... | ||
116 | if (dma_addr == 0) |
- | |
117 | return -ENOMEM; |
120 | return -ENOMEM; |
Line 118... | Line 121... | ||
118 | 121 | intel_private.base.scratch_page_dma = page_to_phys(page); |
|
119 | intel_private.base.scratch_page_dma = dma_addr; |
122 | |
Line 120... | Line 123... | ||
120 | intel_private.scratch_page = NULL; |
123 | intel_private.scratch_page = page; |
Line 156... | Line 159... | ||
156 | break; |
159 | break; |
157 | default: |
160 | default: |
158 | stolen_size = 0; |
161 | stolen_size = 0; |
159 | break; |
162 | break; |
160 | } |
163 | } |
161 | } else if (INTEL_GTT_GEN == 6) { |
- | |
162 | /* |
- | |
163 | * SandyBridge has new memory control reg at 0x50.w |
- | |
164 | */ |
- | |
165 | u16 snb_gmch_ctl; |
- | |
166 | pci_read_config_word(intel_private.pcidev, SNB_GMCH_CTRL, &snb_gmch_ctl); |
- | |
167 | switch (snb_gmch_ctl & SNB_GMCH_GMS_STOLEN_MASK) { |
- | |
168 | case SNB_GMCH_GMS_STOLEN_32M: |
- | |
169 | stolen_size = MB(32); |
- | |
170 | break; |
- | |
171 | case SNB_GMCH_GMS_STOLEN_64M: |
- | |
172 | stolen_size = MB(64); |
- | |
173 | break; |
- | |
174 | case SNB_GMCH_GMS_STOLEN_96M: |
- | |
175 | stolen_size = MB(96); |
- | |
176 | break; |
- | |
177 | case SNB_GMCH_GMS_STOLEN_128M: |
- | |
178 | stolen_size = MB(128); |
- | |
179 | break; |
- | |
180 | case SNB_GMCH_GMS_STOLEN_160M: |
- | |
181 | stolen_size = MB(160); |
- | |
182 | break; |
- | |
183 | case SNB_GMCH_GMS_STOLEN_192M: |
- | |
184 | stolen_size = MB(192); |
- | |
185 | break; |
- | |
186 | case SNB_GMCH_GMS_STOLEN_224M: |
- | |
187 | stolen_size = MB(224); |
- | |
188 | break; |
- | |
189 | case SNB_GMCH_GMS_STOLEN_256M: |
- | |
190 | stolen_size = MB(256); |
- | |
191 | break; |
- | |
192 | case SNB_GMCH_GMS_STOLEN_288M: |
- | |
193 | stolen_size = MB(288); |
- | |
194 | break; |
- | |
195 | case SNB_GMCH_GMS_STOLEN_320M: |
- | |
196 | stolen_size = MB(320); |
- | |
197 | break; |
- | |
198 | case SNB_GMCH_GMS_STOLEN_352M: |
- | |
199 | stolen_size = MB(352); |
- | |
200 | break; |
- | |
201 | case SNB_GMCH_GMS_STOLEN_384M: |
- | |
202 | stolen_size = MB(384); |
- | |
203 | break; |
- | |
204 | case SNB_GMCH_GMS_STOLEN_416M: |
- | |
205 | stolen_size = MB(416); |
- | |
206 | break; |
- | |
207 | case SNB_GMCH_GMS_STOLEN_448M: |
- | |
208 | stolen_size = MB(448); |
- | |
209 | break; |
- | |
210 | case SNB_GMCH_GMS_STOLEN_480M: |
- | |
211 | stolen_size = MB(480); |
- | |
212 | break; |
- | |
213 | case SNB_GMCH_GMS_STOLEN_512M: |
- | |
214 | stolen_size = MB(512); |
- | |
215 | break; |
- | |
216 | } |
- | |
217 | } else { |
164 | } else { |
218 | switch (gmch_ctrl & I855_GMCH_GMS_MASK) { |
165 | switch (gmch_ctrl & I855_GMCH_GMS_MASK) { |
219 | case I855_GMCH_GMS_STOLEN_1M: |
166 | case I855_GMCH_GMS_STOLEN_1M: |
220 | stolen_size = MB(1); |
167 | stolen_size = MB(1); |
221 | break; |
168 | break; |
Line 345... | Line 292... | ||
345 | return size/4; |
292 | return size/4; |
346 | } |
293 | } |
Line 347... | Line 294... | ||
347 | 294 | ||
348 | static unsigned int intel_gtt_total_entries(void) |
295 | static unsigned int intel_gtt_total_entries(void) |
349 | { |
- | |
350 | int size; |
- | |
351 | 296 | { |
|
352 | if (IS_G33 || INTEL_GTT_GEN == 4 || INTEL_GTT_GEN == 5) |
297 | if (IS_G33 || INTEL_GTT_GEN == 4 || INTEL_GTT_GEN == 5) |
353 | return i965_gtt_total_entries(); |
- | |
354 | else if (INTEL_GTT_GEN == 6) { |
- | |
355 | u16 snb_gmch_ctl; |
- | |
356 | - | ||
357 | pci_read_config_word(intel_private.pcidev, SNB_GMCH_CTRL, &snb_gmch_ctl); |
- | |
358 | switch (snb_gmch_ctl & SNB_GTT_SIZE_MASK) { |
- | |
359 | default: |
- | |
360 | case SNB_GTT_SIZE_0M: |
- | |
361 | printk(KERN_ERR "Bad GTT size mask: 0x%04x.\n", snb_gmch_ctl); |
- | |
362 | size = MB(0); |
- | |
363 | break; |
- | |
364 | case SNB_GTT_SIZE_1M: |
- | |
365 | size = MB(1); |
- | |
366 | break; |
- | |
367 | case SNB_GTT_SIZE_2M: |
- | |
368 | size = MB(2); |
- | |
369 | break; |
- | |
370 | } |
- | |
371 | return size/4; |
298 | return i965_gtt_total_entries(); |
372 | } else { |
299 | else { |
373 | /* On previous hardware, the GTT size was just what was |
300 | /* On previous hardware, the GTT size was just what was |
374 | * required to map the aperture. |
301 | * required to map the aperture. |
375 | */ |
302 | */ |
376 | return intel_private.base.gtt_mappable_entries; |
303 | return intel_private.base.gtt_mappable_entries; |
Line 431... | Line 358... | ||
431 | u32 gtt_map_size; |
358 | u32 gtt_map_size; |
432 | int ret; |
359 | int ret; |
Line 433... | Line 360... | ||
433 | 360 | ||
434 | ret = intel_private.driver->setup(); |
361 | ret = intel_private.driver->setup(); |
435 | if (ret != 0) |
- | |
436 | { |
362 | if (ret != 0) |
437 | return ret; |
- | |
438 | }; |
- | |
Line 439... | Line 363... | ||
439 | 363 | return ret; |
|
440 | 364 | ||
Line 441... | Line 365... | ||
441 | intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries(); |
365 | intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries(); |
Line 455... | Line 379... | ||
455 | intel_private.base.gtt_mappable_entries * 4); |
379 | intel_private.base.gtt_mappable_entries * 4); |
Line 456... | Line 380... | ||
456 | 380 | ||
Line 457... | Line 381... | ||
457 | gtt_map_size = intel_private.base.gtt_total_entries * 4; |
381 | gtt_map_size = intel_private.base.gtt_total_entries * 4; |
458 | - | ||
459 | intel_private.gtt = NULL; |
- | |
460 | // if (INTEL_GTT_GEN < 6 && INTEL_GTT_GEN > 2) |
- | |
461 | // intel_private.gtt = ioremap_wc(intel_private.gtt_bus_addr, |
382 | |
462 | // gtt_map_size); |
383 | intel_private.gtt = NULL; |
463 | if (intel_private.gtt == NULL) |
384 | if (intel_private.gtt == NULL) |
464 | intel_private.gtt = ioremap(intel_private.gtt_bus_addr, |
385 | intel_private.gtt = ioremap(intel_private.gtt_bus_addr, |
465 | gtt_map_size); |
386 | gtt_map_size); |
Line 507... | Line 428... | ||
507 | 428 | ||
508 | bool intel_enable_gtt(void) |
429 | bool intel_enable_gtt(void) |
509 | { |
430 | { |
Line 510... | Line -... | ||
510 | u8 __iomem *reg; |
- | |
511 | - | ||
512 | if (INTEL_GTT_GEN >= 6) |
- | |
513 | return true; |
431 | u8 __iomem *reg; |
514 | 432 | ||
Line 515... | Line 433... | ||
515 | if (INTEL_GTT_GEN == 2) { |
433 | if (INTEL_GTT_GEN == 2) { |
516 | u16 gmch_ctrl; |
434 | u16 gmch_ctrl; |
Line 563... | Line 481... | ||
563 | } |
481 | } |
Line 564... | Line 482... | ||
564 | 482 | ||
565 | return false; |
483 | return false; |
Line 566... | Line 484... | ||
566 | } |
484 | } |
567 | 485 | ||
568 | void intel_gtt_insert_sg_entries(struct pagelist *st, |
486 | void intel_gtt_insert_sg_entries(struct sg_table *st, |
569 | unsigned int pg_start, |
487 | unsigned int pg_start, |
- | 488 | unsigned int flags) |
|
- | 489 | { |
|
570 | unsigned int flags) |
490 | struct scatterlist *sg; |
Line 571... | Line 491... | ||
571 | { |
491 | unsigned int len, m; |
Line -... | Line 492... | ||
- | 492 | int i, j; |
|
- | 493 | ||
572 | int i, j; |
494 | j = pg_start; |
- | 495 | ||
573 | 496 | /* sg may merge pages, but we have to separate |
|
574 | j = pg_start; |
497 | * per-page addr for GTT */ |
575 | 498 | for_each_sg(st->sgl, sg, st->nents, i) { |
|
576 | for(i = 0; i < st->nents; i++) |
499 | len = sg_dma_len(sg) >> PAGE_SHIFT; |
577 | { |
500 | for (m = 0; m < len; m++) { |
578 | dma_addr_t addr = st->page[i]; |
501 | dma_addr_t addr = sg_dma_address(sg) + (m << PAGE_SHIFT); |
579 | intel_private.driver->write_entry(addr, j, flags); |
502 | intel_private.driver->write_entry(addr, j, flags); |
580 | j++; |
503 | j++; |
- | 504 | } |
|
Line 581... | Line 505... | ||
581 | }; |
505 | } |
582 | 506 | readl(intel_private.gtt+j-1); |
|
583 | readl(intel_private.gtt+j-1); |
507 | } |
584 | } |
508 | EXPORT_SYMBOL(intel_gtt_insert_sg_entries); |
585 | 509 | ||
586 | static void intel_gtt_insert_pages(unsigned int first_entry, |
510 | static void intel_gtt_insert_pages(unsigned int first_entry, |
Line 587... | Line 511... | ||
587 | unsigned int num_entries, |
511 | unsigned int num_entries, |
588 | dma_addr_t *pages, |
512 | struct page **pages, |
589 | unsigned int flags) |
513 | unsigned int flags) |
590 | { |
514 | { |
591 | int i, j; |
515 | int i, j; |
592 | 516 | ||
593 | for (i = 0, j = first_entry; i < num_entries; i++, j++) { |
517 | for (i = 0, j = first_entry; i < num_entries; i++, j++) { |
Line 668... | Line 592... | ||
668 | /* Shift high bits down */ |
592 | /* Shift high bits down */ |
669 | addr |= (addr >> 28) & 0xf0; |
593 | addr |= (addr >> 28) & 0xf0; |
670 | writel(addr | pte_flags, intel_private.gtt + entry); |
594 | writel(addr | pte_flags, intel_private.gtt + entry); |
671 | } |
595 | } |
Line 672... | Line -... | ||
672 | - | ||
673 | static bool gen6_check_flags(unsigned int flags) |
- | |
674 | { |
- | |
675 | return true; |
- | |
676 | } |
- | |
677 | - | ||
678 | static void haswell_write_entry(dma_addr_t addr, unsigned int entry, |
- | |
679 | unsigned int flags) |
- | |
680 | { |
- | |
681 | unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT; |
- | |
682 | unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT; |
- | |
683 | u32 pte_flags; |
- | |
684 | - | ||
685 | if (type_mask == AGP_USER_MEMORY) |
- | |
686 | pte_flags = HSW_PTE_UNCACHED | I810_PTE_VALID; |
- | |
687 | else if (type_mask == AGP_USER_CACHED_MEMORY_LLC_MLC) { |
- | |
688 | pte_flags = GEN6_PTE_LLC_MLC | I810_PTE_VALID; |
- | |
689 | if (gfdt) |
- | |
690 | pte_flags |= GEN6_PTE_GFDT; |
- | |
691 | } else { /* set 'normal'/'cached' to LLC by default */ |
- | |
692 | pte_flags = GEN6_PTE_LLC | I810_PTE_VALID; |
- | |
693 | if (gfdt) |
- | |
694 | pte_flags |= GEN6_PTE_GFDT; |
- | |
695 | } |
- | |
696 | - | ||
697 | /* gen6 has bit11-4 for physical addr bit39-32 */ |
- | |
698 | addr |= (addr >> 28) & 0xff0; |
- | |
699 | writel(addr | pte_flags, intel_private.gtt + entry); |
- | |
700 | } |
- | |
701 | - | ||
702 | static void gen6_write_entry(dma_addr_t addr, unsigned int entry, |
- | |
703 | unsigned int flags) |
- | |
704 | { |
- | |
705 | unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT; |
- | |
706 | unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT; |
- | |
707 | u32 pte_flags; |
- | |
708 | - | ||
709 | if (type_mask == AGP_USER_MEMORY) |
- | |
710 | pte_flags = GEN6_PTE_UNCACHED | I810_PTE_VALID; |
- | |
711 | else if (type_mask == AGP_USER_CACHED_MEMORY_LLC_MLC) { |
- | |
712 | pte_flags = GEN6_PTE_LLC_MLC | I810_PTE_VALID; |
- | |
713 | if (gfdt) |
- | |
714 | pte_flags |= GEN6_PTE_GFDT; |
- | |
715 | } else { /* set 'normal'/'cached' to LLC by default */ |
- | |
716 | pte_flags = GEN6_PTE_LLC | I810_PTE_VALID; |
- | |
717 | if (gfdt) |
- | |
718 | pte_flags |= GEN6_PTE_GFDT; |
- | |
719 | } |
- | |
720 | - | ||
721 | /* gen6 has bit11-4 for physical addr bit39-32 */ |
- | |
722 | addr |= (addr >> 28) & 0xff0; |
- | |
723 | writel(addr | pte_flags, intel_private.gtt + entry); |
- | |
724 | } |
- | |
725 | - | ||
726 | static void valleyview_write_entry(dma_addr_t addr, unsigned int entry, |
- | |
727 | unsigned int flags) |
- | |
728 | { |
- | |
729 | unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT; |
- | |
730 | unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT; |
- | |
731 | u32 pte_flags; |
- | |
732 | - | ||
733 | if (type_mask == AGP_USER_MEMORY) |
- | |
734 | pte_flags = GEN6_PTE_UNCACHED | I810_PTE_VALID; |
- | |
735 | else { |
- | |
736 | pte_flags = GEN6_PTE_LLC | I810_PTE_VALID; |
- | |
737 | if (gfdt) |
- | |
738 | pte_flags |= GEN6_PTE_GFDT; |
- | |
739 | } |
- | |
740 | - | ||
741 | /* gen6 has bit11-4 for physical addr bit39-32 */ |
- | |
742 | addr |= (addr >> 28) & 0xff0; |
- | |
743 | writel(addr | pte_flags, intel_private.gtt + entry); |
- | |
744 | - | ||
745 | writel(1, intel_private.registers + GFX_FLSH_CNTL_VLV); |
- | |
746 | } |
- | |
747 | - | ||
748 | static void gen6_cleanup(void) |
- | |
749 | { |
- | |
750 | } |
- | |
751 | 596 | ||
752 | /* Certain Gen5 chipsets require require idling the GPU before |
597 | /* Certain Gen5 chipsets require require idling the GPU before |
753 | * unmapping anything from the GTT when VT-d is enabled. |
598 | * unmapping anything from the GTT when VT-d is enabled. |
754 | */ |
599 | */ |
755 | static inline int needs_idle_maps(void) |
600 | static inline int needs_idle_maps(void) |
Line 768... | Line 613... | ||
768 | return 0; |
613 | return 0; |
769 | } |
614 | } |
Line 770... | Line 615... | ||
770 | 615 | ||
771 | static int i9xx_setup(void) |
616 | static int i9xx_setup(void) |
772 | { |
617 | { |
773 | u32 reg_addr; |
618 | u32 reg_addr, gtt_addr; |
Line 774... | Line 619... | ||
774 | int size = KB(512); |
619 | int size = KB(512); |
Line 775... | Line 620... | ||
775 | 620 | ||
Line 776... | Line -... | ||
776 | pci_read_config_dword(intel_private.pcidev, I915_MMADDR, ®_addr); |
- | |
777 | - | ||
778 | reg_addr &= 0xfff80000; |
- | |
779 | 621 | pci_read_config_dword(intel_private.pcidev, I915_MMADDR, ®_addr); |
|
780 | if (INTEL_GTT_GEN >= 7) |
622 | |
781 | size = MB(2); |
623 | reg_addr &= 0xfff80000; |
Line 782... | Line 624... | ||
782 | 624 | ||
783 | intel_private.registers = ioremap(reg_addr, size); |
625 | intel_private.registers = ioremap(reg_addr, size); |
784 | if (!intel_private.registers) |
- | |
785 | return -ENOMEM; |
626 | if (!intel_private.registers) |
786 | 627 | return -ENOMEM; |
|
787 | if (INTEL_GTT_GEN == 3) { |
628 | |
788 | u32 gtt_addr; |
629 | switch (INTEL_GTT_GEN) { |
789 | - | ||
790 | pci_read_config_dword(intel_private.pcidev, |
- | |
791 | I915_PTEADDR, >t_addr); |
- | |
792 | intel_private.gtt_bus_addr = gtt_addr; |
630 | case 3: |
793 | } else { |
- | |
794 | u32 gtt_offset; |
- | |
795 | 631 | pci_read_config_dword(intel_private.pcidev, |
|
796 | switch (INTEL_GTT_GEN) { |
632 | I915_PTEADDR, >t_addr); |
797 | case 5: |
- | |
798 | case 6: |
633 | intel_private.gtt_bus_addr = gtt_addr; |
799 | case 7: |
634 | break; |
800 | gtt_offset = MB(2); |
635 | case 5: |
801 | break; |
636 | intel_private.gtt_bus_addr = reg_addr + MB(2); |
802 | case 4: |
- | |
803 | default: |
- | |
Line 804... | Line 637... | ||
804 | gtt_offset = KB(512); |
637 | break; |
805 | break; |
638 | default: |
Line 806... | Line 639... | ||
806 | } |
639 | intel_private.gtt_bus_addr = reg_addr + KB(512); |
Line 873... | Line 706... | ||
873 | .write_entry = i965_write_entry, |
706 | .write_entry = i965_write_entry, |
874 | .dma_mask_size = 36, |
707 | .dma_mask_size = 36, |
875 | .check_flags = i830_check_flags, |
708 | .check_flags = i830_check_flags, |
876 | .chipset_flush = i9xx_chipset_flush, |
709 | .chipset_flush = i9xx_chipset_flush, |
877 | }; |
710 | }; |
878 | static const struct intel_gtt_driver sandybridge_gtt_driver = { |
- | |
879 | .gen = 6, |
- | |
880 | .setup = i9xx_setup, |
- | |
881 | .cleanup = gen6_cleanup, |
- | |
882 | .write_entry = gen6_write_entry, |
- | |
883 | .dma_mask_size = 40, |
- | |
884 | .check_flags = gen6_check_flags, |
- | |
885 | .chipset_flush = i9xx_chipset_flush, |
- | |
886 | }; |
- | |
887 | static const struct intel_gtt_driver haswell_gtt_driver = { |
- | |
888 | .gen = 6, |
- | |
889 | .setup = i9xx_setup, |
- | |
890 | .cleanup = gen6_cleanup, |
- | |
891 | .write_entry = haswell_write_entry, |
- | |
892 | .dma_mask_size = 40, |
- | |
893 | .check_flags = gen6_check_flags, |
- | |
894 | .chipset_flush = i9xx_chipset_flush, |
- | |
895 | }; |
- | |
896 | static const struct intel_gtt_driver valleyview_gtt_driver = { |
- | |
897 | .gen = 7, |
- | |
898 | .setup = i9xx_setup, |
- | |
899 | .cleanup = gen6_cleanup, |
- | |
900 | .write_entry = valleyview_write_entry, |
- | |
901 | .dma_mask_size = 40, |
- | |
902 | .check_flags = gen6_check_flags, |
- | |
903 | }; |
- | |
Line 904... | Line 711... | ||
904 | 711 | ||
905 | /* Table to describe Intel GMCH and AGP/PCIE GART drivers. At least one of |
712 | /* Table to describe Intel GMCH and AGP/PCIE GART drivers. At least one of |
906 | * driver and gmch_driver must be non-null, and find_gmch will determine |
713 | * driver and gmch_driver must be non-null, and find_gmch will determine |
907 | * which one should be used if a gmch_chip_id is present. |
714 | * which one should be used if a gmch_chip_id is present. |
Line 961... | Line 768... | ||
961 | &g4x_gtt_driver }, |
768 | &g4x_gtt_driver }, |
962 | { PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG, |
769 | { PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG, |
963 | "HD Graphics", &ironlake_gtt_driver }, |
770 | "HD Graphics", &ironlake_gtt_driver }, |
964 | { PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, |
771 | { PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, |
965 | "HD Graphics", &ironlake_gtt_driver }, |
772 | "HD Graphics", &ironlake_gtt_driver }, |
966 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT1_IG, |
- | |
967 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
968 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT2_IG, |
- | |
969 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
970 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT2_PLUS_IG, |
- | |
971 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
972 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT1_IG, |
- | |
973 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
974 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT2_IG, |
- | |
975 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
976 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT2_PLUS_IG, |
- | |
977 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
978 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_IG, |
- | |
979 | "Sandybridge", &sandybridge_gtt_driver }, |
- | |
980 | { PCI_DEVICE_ID_INTEL_IVYBRIDGE_GT1_IG, |
- | |
981 | "Ivybridge", &sandybridge_gtt_driver }, |
- | |
982 | { PCI_DEVICE_ID_INTEL_IVYBRIDGE_GT2_IG, |
- | |
983 | "Ivybridge", &sandybridge_gtt_driver }, |
- | |
984 | { PCI_DEVICE_ID_INTEL_IVYBRIDGE_M_GT1_IG, |
- | |
985 | "Ivybridge", &sandybridge_gtt_driver }, |
- | |
986 | { PCI_DEVICE_ID_INTEL_IVYBRIDGE_M_GT2_IG, |
- | |
987 | "Ivybridge", &sandybridge_gtt_driver }, |
- | |
988 | { PCI_DEVICE_ID_INTEL_IVYBRIDGE_S_GT1_IG, |
- | |
989 | "Ivybridge", &sandybridge_gtt_driver }, |
- | |
990 | { PCI_DEVICE_ID_INTEL_IVYBRIDGE_S_GT2_IG, |
- | |
991 | "Ivybridge", &sandybridge_gtt_driver }, |
- | |
992 | { PCI_DEVICE_ID_INTEL_VALLEYVIEW_IG, |
- | |
993 | "ValleyView", &valleyview_gtt_driver }, |
- | |
994 | { PCI_DEVICE_ID_INTEL_HASWELL_D_GT1_IG, |
- | |
995 | "Haswell", &haswell_gtt_driver }, |
- | |
996 | { PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_IG, |
- | |
997 | "Haswell", &haswell_gtt_driver }, |
- | |
998 | { PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_PLUS_IG, |
- | |
999 | "Haswell", &haswell_gtt_driver }, |
- | |
1000 | { PCI_DEVICE_ID_INTEL_HASWELL_M_GT1_IG, |
- | |
1001 | "Haswell", &haswell_gtt_driver }, |
- | |
1002 | { PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_IG, |
- | |
1003 | "Haswell", &haswell_gtt_driver }, |
- | |
1004 | { PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_PLUS_IG, |
- | |
1005 | "Haswell", &haswell_gtt_driver }, |
- | |
1006 | { PCI_DEVICE_ID_INTEL_HASWELL_S_GT1_IG, |
- | |
1007 | "Haswell", &haswell_gtt_driver }, |
- | |
1008 | { PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_IG, |
- | |
1009 | "Haswell", &haswell_gtt_driver }, |
- | |
1010 | { PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_PLUS_IG, |
- | |
1011 | "Haswell", &haswell_gtt_driver }, |
- | |
1012 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT1_IG, |
- | |
1013 | "Haswell", &haswell_gtt_driver }, |
- | |
1014 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_IG, |
- | |
1015 | "Haswell", &haswell_gtt_driver }, |
- | |
1016 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_PLUS_IG, |
- | |
1017 | "Haswell", &haswell_gtt_driver }, |
- | |
1018 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT1_IG, |
- | |
1019 | "Haswell", &haswell_gtt_driver }, |
- | |
1020 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_IG, |
- | |
1021 | "Haswell", &haswell_gtt_driver }, |
- | |
1022 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_PLUS_IG, |
- | |
1023 | "Haswell", &haswell_gtt_driver }, |
- | |
1024 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT1_IG, |
- | |
1025 | "Haswell", &haswell_gtt_driver }, |
- | |
1026 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_IG, |
- | |
1027 | "Haswell", &haswell_gtt_driver }, |
- | |
1028 | { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_PLUS_IG, |
- | |
1029 | "Haswell", &haswell_gtt_driver }, |
- | |
1030 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT1_IG, |
- | |
1031 | "Haswell", &haswell_gtt_driver }, |
- | |
1032 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_IG, |
- | |
1033 | "Haswell", &haswell_gtt_driver }, |
- | |
1034 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_PLUS_IG, |
- | |
1035 | "Haswell", &haswell_gtt_driver }, |
- | |
1036 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT1_IG, |
- | |
1037 | "Haswell", &haswell_gtt_driver }, |
- | |
1038 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_IG, |
- | |
1039 | "Haswell", &haswell_gtt_driver }, |
- | |
1040 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_PLUS_IG, |
- | |
1041 | "Haswell", &haswell_gtt_driver }, |
- | |
1042 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT1_IG, |
- | |
1043 | "Haswell", &haswell_gtt_driver }, |
- | |
1044 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_IG, |
- | |
1045 | "Haswell", &haswell_gtt_driver }, |
- | |
1046 | { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_PLUS_IG, |
- | |
1047 | "Haswell", &haswell_gtt_driver }, |
- | |
1048 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT1_IG, |
- | |
1049 | "Haswell", &haswell_gtt_driver }, |
- | |
1050 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_IG, |
- | |
1051 | "Haswell", &haswell_gtt_driver }, |
- | |
1052 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_PLUS_IG, |
- | |
1053 | "Haswell", &haswell_gtt_driver }, |
- | |
1054 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT1_IG, |
- | |
1055 | "Haswell", &haswell_gtt_driver }, |
- | |
1056 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_IG, |
- | |
1057 | "Haswell", &haswell_gtt_driver }, |
- | |
1058 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_PLUS_IG, |
- | |
1059 | "Haswell", &haswell_gtt_driver }, |
- | |
1060 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT1_IG, |
- | |
1061 | "Haswell", &haswell_gtt_driver }, |
- | |
1062 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_IG, |
- | |
1063 | "Haswell", &haswell_gtt_driver }, |
- | |
1064 | { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_PLUS_IG, |
- | |
1065 | "Haswell", &haswell_gtt_driver }, |
- | |
1066 | { 0, NULL, NULL } |
773 | { 0, NULL, NULL } |
1067 | }; |
774 | }; |
Line 1068... | Line 775... | ||
1068 | 775 | ||
1069 | static int find_gmch(u16 device) |
776 | static int find_gmch(u16 device) |
Line 1105... | Line 812... | ||
1105 | bridge->dev = bridge_pdev; |
812 | bridge->dev = bridge_pdev; |
1106 | } |
813 | } |
Line 1107... | Line 814... | ||
1107 | 814 | ||
Line 1108... | Line 815... | ||
1108 | intel_private.bridge_dev = bridge_pdev; |
815 | intel_private.bridge_dev = bridge_pdev; |
Line 1109... | Line 816... | ||
1109 | 816 | ||
1110 | dbgprintf("Intel %s Chipset\n", intel_gtt_chipsets[i].name); |
817 | dev_info(&bridge_pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name); |
1111 | 818 | ||
1112 | mask = intel_private.driver->dma_mask_size; |
819 | mask = intel_private.driver->dma_mask_size; |
Line 1125... | Line 832... | ||
1125 | 832 | ||
1126 | return 1; |
833 | return 1; |
1127 | } |
834 | } |
Line 1128... | Line 835... | ||
1128 | EXPORT_SYMBOL(intel_gmch_probe); |
835 | EXPORT_SYMBOL(intel_gmch_probe); |
1129 | 836 | ||
1130 | const struct intel_gtt *intel_gtt_get(void) |
837 | struct intel_gtt *intel_gtt_get(void) |
1131 | { |
838 | { |
1132 | return &intel_private.base; |
839 | return &intel_private.base; |
Line 1139... | Line 846... | ||
1139 | intel_private.driver->chipset_flush(); |
846 | intel_private.driver->chipset_flush(); |
1140 | } |
847 | } |
1141 | EXPORT_SYMBOL(intel_gtt_chipset_flush); |
848 | EXPORT_SYMBOL(intel_gtt_chipset_flush); |
Line 1142... | Line 849... | ||
1142 | 849 | ||
1143 | - | ||
1144 | //phys_addr_t get_bus_addr(void) |
850 | |
1145 | //{ |
- |