18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * linux/arch/arm/mach-footbridge/ebsa285-pci.c 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * PCI bios-type initialisation for PCI machines 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Bits taken from various places. 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci#include <linux/kernel.h> 108c2ecf20Sopenharmony_ci#include <linux/pci.h> 118c2ecf20Sopenharmony_ci#include <linux/init.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <asm/irq.h> 148c2ecf20Sopenharmony_ci#include <asm/mach/pci.h> 158c2ecf20Sopenharmony_ci#include <asm/mach-types.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistatic int irqmap_ebsa285[] = { IRQ_IN3, IRQ_IN1, IRQ_IN0, IRQ_PCI }; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_cistatic int ebsa285_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 208c2ecf20Sopenharmony_ci{ 218c2ecf20Sopenharmony_ci if (dev->vendor == PCI_VENDOR_ID_CONTAQ && 228c2ecf20Sopenharmony_ci dev->device == PCI_DEVICE_ID_CONTAQ_82C693) 238c2ecf20Sopenharmony_ci switch (PCI_FUNC(dev->devfn)) { 248c2ecf20Sopenharmony_ci case 1: return 14; 258c2ecf20Sopenharmony_ci case 2: return 15; 268c2ecf20Sopenharmony_ci case 3: return 12; 278c2ecf20Sopenharmony_ci } 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci return irqmap_ebsa285[(slot + pin) & 3]; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic struct hw_pci ebsa285_pci __initdata = { 338c2ecf20Sopenharmony_ci .map_irq = ebsa285_map_irq, 348c2ecf20Sopenharmony_ci .nr_controllers = 1, 358c2ecf20Sopenharmony_ci .ops = &dc21285_ops, 368c2ecf20Sopenharmony_ci .setup = dc21285_setup, 378c2ecf20Sopenharmony_ci .preinit = dc21285_preinit, 388c2ecf20Sopenharmony_ci .postinit = dc21285_postinit, 398c2ecf20Sopenharmony_ci}; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cistatic int __init ebsa285_init_pci(void) 428c2ecf20Sopenharmony_ci{ 438c2ecf20Sopenharmony_ci if (machine_is_ebsa285()) 448c2ecf20Sopenharmony_ci pci_common_init(&ebsa285_pci); 458c2ecf20Sopenharmony_ci return 0; 468c2ecf20Sopenharmony_ci} 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_cisubsys_initcall(ebsa285_init_pci); 49