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