1 /* $OpenBSD: vga_pci_common.c,v 1.12 2024/10/17 15:52:30 miod Exp $ */ 2 /* 3 * Copyright (c) 2008 Owain G. Ainsworth <oga@nicotinebsd.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 #ifdef RAMDISK_HOOKS 19 #include <sys/param.h> 20 21 #include <dev/pci/pcivar.h> 22 #include <dev/pci/pcidevs.h> 23 24 #include <dev/pci/drm/i915/i915_devlist.h> 25 #include <dev/pci/drm/radeon/radeon_devlist.h> 26 #include <dev/pci/drm/amd/amdgpu/amdgpu_devlist.h> 27 28 static const struct pci_matchid aperture_blacklist[] = { 29 /* server adapters found in mga200 drm driver */ 30 { PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200E_SE }, 31 { PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200E_SE_B }, 32 { PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200EH }, 33 { PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200ER }, 34 { PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200EV }, 35 { PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200EW }, 36 37 /* server adapters found in ast drm driver */ 38 { PCI_VENDOR_ASPEED, PCI_PRODUCT_ASPEED_AST2000 }, 39 { PCI_VENDOR_ASPEED, PCI_PRODUCT_ASPEED_AST2100 }, 40 41 /* ati adapters found in servers */ 42 { PCI_VENDOR_ATI, PCI_PRODUCT_ATI_RAGEXL }, 43 { PCI_VENDOR_ATI, PCI_PRODUCT_ATI_ES1000 }, 44 45 /* xgi found in some poweredges/supermicros/tyans */ 46 { PCI_VENDOR_XGI, PCI_PRODUCT_XGI_VOLARI_Z7 }, 47 { PCI_VENDOR_XGI, PCI_PRODUCT_XGI_VOLARI_Z9 }, 48 }; 49 50 int 51 vga_aperture_needed(struct pci_attach_args *pa) 52 { 53 if (pci_matchbyid(pa, i915_devices, nitems(i915_devices)) || 54 pci_matchbyid(pa, aperture_blacklist, nitems(aperture_blacklist))) 55 return (0); 56 #if defined(__amd64__) || defined(__i386__) || defined(__loongson__) || \ 57 defined(__macppc__) || defined(__sparc64__) 58 if (pci_matchbyid(pa, radeon_devices, nitems(radeon_devices))) 59 return (0); 60 #endif 61 #ifdef __amd64__ 62 if (pci_matchbyid(pa, amdgpu_devices, nitems(amdgpu_devices))) 63 return (0); 64 #endif 65 return (1); 66 } 67 #endif /* RAMDISK_HOOKS */ 68