1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2016 SiFive 4 */ 5 6 #ifndef _ASM_RISCV_PCI_H 7 #define _ASM_RISCV_PCI_H 8 9 #include <linux/types.h> 10 #include <linux/slab.h> 11 #include <linux/dma-mapping.h> 12 13 #include <asm/io.h> 14 15 #define PCIBIOS_MIN_IO 0 16 #define PCIBIOS_MIN_MEM 0 17 18 /* RISC-V shim does not initialize PCI bus */ 19 #define pcibios_assign_all_busses() 1 20 21 #define ARCH_GENERIC_PCI_MMAP_RESOURCE 1 22 23 extern int isa_dma_bridge_buggy; 24 25 #ifdef CONFIG_PCI 26 static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) 27 { 28 /* no legacy IRQ on risc-v */ 29 return -ENODEV; 30 } 31 32 static inline int pci_proc_domain(struct pci_bus *bus) 33 { 34 /* always show the domain in /proc */ 35 return 1; 36 } 37 38 #ifdef CONFIG_NUMA 39 40 static inline int pcibus_to_node(struct pci_bus *bus) 41 { 42 return dev_to_node(&bus->dev); 43 } 44 #ifndef cpumask_of_pcibus 45 #define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \ 46 cpu_all_mask : \ 47 cpumask_of_node(pcibus_to_node(bus))) 48 #endif 49 #endif /* CONFIG_NUMA */ 50 51 #endif /* CONFIG_PCI */ 52 53 #endif /* _ASM_RISCV_PCI_H */ 54