Skip to content

Commit

Permalink
asm-generic: Add new pci.h and use it
Browse files Browse the repository at this point in the history
The asm/pci.h used for many newer architectures share similar
definitions.  Move the common parts to asm-generic/pci.h to allow for
sharing code.

Two things to note are:

 - isa_dma_bridge_buggy, traditionally this is defined in asm/dma.h but
   these architectures avoid creating that file and add the definition
   to asm/pci.h.
 - ARCH_GENERIC_PCI_MMAP_RESOURCE, csky does not define this so we
   undefine it after including asm-generic/pci.h.  Why doesn't csky
   define it?
 - pci_get_legacy_ide_irq, This function is only used on architectures
   that support PNP.  It is only maintained for arm64, in other
   architectures it is removed.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/lkml/CAK8P3a0JmPeczfmMBE__vn=Jbvf=nkbpVaZCycyv40pZNCJJXQ@mail.gmail.com/
Signed-off-by: Stafford Horne <shorne@gmail.com>
  • Loading branch information
stffrdhrn committed Jul 17, 2022
1 parent dd11944 commit 4d49a73
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 73 deletions.
12 changes: 3 additions & 9 deletions arch/arm64/include/asm/pci.h
Expand Up @@ -9,7 +9,6 @@
#include <asm/io.h>

#define PCIBIOS_MIN_IO 0x1000
#define PCIBIOS_MIN_MEM 0

/*
* Set to 1 if the kernel should re-assign all PCI bus numbers
Expand All @@ -18,21 +17,16 @@
(pci_has_flag(PCI_REASSIGN_ALL_BUS))

#define arch_can_pci_mmap_wc() 1
#define ARCH_GENERIC_PCI_MMAP_RESOURCE 1

extern int isa_dma_bridge_buggy;

#ifdef CONFIG_PCI
static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
{
/* no legacy IRQ on arm64 */
return -ENODEV;
}

static inline int pci_proc_domain(struct pci_bus *bus)
{
return 1;
}
#endif /* CONFIG_PCI */

/* Generic PCI */
#include <asm-generic/pci.h>

#endif /* __ASM_PCI_H */
24 changes: 4 additions & 20 deletions arch/csky/include/asm/pci.h
Expand Up @@ -9,26 +9,10 @@

#include <asm/io.h>

#define PCIBIOS_MIN_IO 0
#define PCIBIOS_MIN_MEM 0
/* Generic PCI */
#include <asm-generic/pci.h>

/* C-SKY shim does not initialize PCI bus */
#define pcibios_assign_all_busses() 1

extern int isa_dma_bridge_buggy;

#ifdef CONFIG_PCI
static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
{
/* no legacy IRQ on csky */
return -ENODEV;
}

static inline int pci_proc_domain(struct pci_bus *bus)
{
/* always show the domain in /proc */
return 1;
}
#endif /* CONFIG_PCI */
/* csky doesn't use generic pci resource mapping */
#undef ARCH_GENERIC_PCI_MMAP_RESOURCE

#endif /* __ASM_CSKY_PCI_H */
25 changes: 3 additions & 22 deletions arch/riscv/include/asm/pci.h
Expand Up @@ -12,29 +12,7 @@

#include <asm/io.h>

#define PCIBIOS_MIN_IO 0
#define PCIBIOS_MIN_MEM 0

/* RISC-V shim does not initialize PCI bus */
#define pcibios_assign_all_busses() 1

#define ARCH_GENERIC_PCI_MMAP_RESOURCE 1

extern int isa_dma_bridge_buggy;

#ifdef CONFIG_PCI
static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
{
/* no legacy IRQ on risc-v */
return -ENODEV;
}

static inline int pci_proc_domain(struct pci_bus *bus)
{
/* always show the domain in /proc */
return 1;
}

#ifdef CONFIG_NUMA

static inline int pcibus_to_node(struct pci_bus *bus)
Expand All @@ -50,4 +28,7 @@ static inline int pcibus_to_node(struct pci_bus *bus)

#endif /* CONFIG_PCI */

/* Generic PCI */
#include <asm-generic/pci.h>

#endif /* _ASM_RISCV_PCI_H */
24 changes: 2 additions & 22 deletions arch/um/include/asm/pci.h
Expand Up @@ -4,28 +4,8 @@
#include <linux/types.h>
#include <asm/io.h>

#define PCIBIOS_MIN_IO 0
#define PCIBIOS_MIN_MEM 0

#define pcibios_assign_all_busses() 1

extern int isa_dma_bridge_buggy;

#ifdef CONFIG_PCI
static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
{
/* no legacy IRQs */
return -ENODEV;
}
#endif

#ifdef CONFIG_PCI_DOMAINS
static inline int pci_proc_domain(struct pci_bus *bus)
{
/* always show the domain in /proc */
return 1;
}
#endif /* CONFIG_PCI */
/* Generic PCI */
#include <asm-generic/pci.h>

#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
/*
Expand Down
36 changes: 36 additions & 0 deletions include/asm-generic/pci.h
@@ -0,0 +1,36 @@
/* SPDX-License-Identifier: GPL-2.0-only */

#ifndef __ASM_GENERIC_PCI_H
#define __ASM_GENERIC_PCI_H

#include <linux/types.h>

#ifndef PCIBIOS_MIN_IO
#define PCIBIOS_MIN_IO 0
#endif

#ifndef PCIBIOS_MIN_MEM
#define PCIBIOS_MIN_MEM 0
#endif

#ifndef pcibios_assign_all_busses
/* For bootloaders that do not initialize the PCI bus */
#define pcibios_assign_all_busses() 1
#endif

extern int isa_dma_bridge_buggy;

/* Enable generic resource mapping code in drivers/pci/ */
#define ARCH_GENERIC_PCI_MMAP_RESOURCE

#ifdef CONFIG_PCI

static inline int pci_proc_domain(struct pci_bus *bus)
{
/* always show the domain in /proc */
return 1;
}

#endif /* CONFIG_PCI */

#endif /* __ASM_GENERIC_PCI_H */

0 comments on commit 4d49a73

Please sign in to comment.