18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#include <linux/pci.h> 48c2ecf20Sopenharmony_ci#include <loongson.h> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_cistatic void pci_fixup_radeon(struct pci_dev *pdev) 78c2ecf20Sopenharmony_ci{ 88c2ecf20Sopenharmony_ci struct resource *res = &pdev->resource[PCI_ROM_RESOURCE]; 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci if (res->start) 118c2ecf20Sopenharmony_ci return; 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci if (!loongson_sysconf.vgabios_addr) 148c2ecf20Sopenharmony_ci return; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci pci_disable_rom(pdev); 178c2ecf20Sopenharmony_ci if (res->parent) 188c2ecf20Sopenharmony_ci release_resource(res); 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci res->start = virt_to_phys((void *) loongson_sysconf.vgabios_addr); 218c2ecf20Sopenharmony_ci res->end = res->start + 256*1024 - 1; 228c2ecf20Sopenharmony_ci res->flags = IORESOURCE_MEM | IORESOURCE_ROM_SHADOW | 238c2ecf20Sopenharmony_ci IORESOURCE_PCI_FIXED; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci dev_info(&pdev->dev, "BAR %d: assigned %pR for Radeon ROM\n", 268c2ecf20Sopenharmony_ci PCI_ROM_RESOURCE, res); 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ciDECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_ATI, 0x9615, 298c2ecf20Sopenharmony_ci PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_radeon); 30