Skip to content

Commit

Permalink
PCI: Move isa_dma_bridge_buggy out of asm/dma.h
Browse files Browse the repository at this point in the history
The isa_dma_bridge_buggy symbol is only used for x86_32, and only x86_32
platforms or quirks ever set it.

Add a new linux/isa-dma.h header that #defines isa_dma_bridge_buggy to 0
except on x86_32, where we keep it as a variable, and remove all the arch-
specific definitions.

[bhelgaas: commit log]
Suggested-by: Arnd Bergmann <[email protected]>
Suggested-by: Christoph Hellwig <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Stafford Horne <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
Reviewed-by: Christoph Hellwig <[email protected]>
Acked-by: Geert Uytterhoeven <[email protected]>
  • Loading branch information
stffrdhrn authored and bjorn-helgaas committed Jul 22, 2022
1 parent ae85b23 commit abb4970
Show file tree
Hide file tree
Showing 23 changed files with 21 additions and 100 deletions.
9 changes: 0 additions & 9 deletions arch/alpha/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -365,13 +365,4 @@ extern void free_dma(unsigned int dmanr); /* release it again */
#define KERNEL_HAVE_CHECK_DMA
extern int check_dma(unsigned int dmanr);

/* From PCI */

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif


#endif /* _ASM_DMA_H */
5 changes: 0 additions & 5 deletions arch/arc/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,5 @@
#define ASM_ARC_DMA_H

#define MAX_DMA_ADDRESS 0xC0000000
#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy 0
#endif

#endif
6 changes: 0 additions & 6 deletions arch/arm/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,4 @@ extern int get_dma_residue(unsigned int chan);

#endif /* CONFIG_ISA_DMA_API */

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* __ASM_ARM_DMA_H */
2 changes: 0 additions & 2 deletions arch/arm64/include/asm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
#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_proc_domain(struct pci_bus *bus)
{
Expand Down
2 changes: 0 additions & 2 deletions arch/csky/include/asm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
/* 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_proc_domain(struct pci_bus *bus)
{
Expand Down
2 changes: 0 additions & 2 deletions arch/ia64/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@

extern unsigned long MAX_DMA_ADDRESS;

extern int isa_dma_bridge_buggy;

#define free_dma(x)

#endif /* _ASM_IA64_DMA_H */
6 changes: 0 additions & 6 deletions arch/m68k/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,4 @@
bootmem allocator (but this should do it for this) */
#define MAX_DMA_ADDRESS PAGE_OFFSET

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* _M68K_DMA_H */
6 changes: 0 additions & 6 deletions arch/microblaze/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,4 @@
/* Virtual address corresponding to last available physical memory address. */
#define MAX_DMA_ADDRESS (CONFIG_KERNEL_START + memory_size - 1)

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* _ASM_MICROBLAZE_DMA_H */
8 changes: 0 additions & 8 deletions arch/mips/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -307,12 +307,4 @@ static __inline__ int get_dma_residue(unsigned int dmanr)
extern int request_dma(unsigned int dmanr, const char * device_id); /* reserve a DMA channel */
extern void free_dma(unsigned int dmanr); /* release it again */

/* From PCI */

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* _ASM_DMA_H */
6 changes: 0 additions & 6 deletions arch/parisc/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,10 +176,4 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count)

#define free_dma(dmanr)

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* _ASM_DMA_H */
6 changes: 0 additions & 6 deletions arch/powerpc/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -340,11 +340,5 @@ extern int request_dma(unsigned int dmanr, const char *device_id);
/* release it again */
extern void free_dma(unsigned int dmanr);

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_DMA_H */
2 changes: 0 additions & 2 deletions arch/riscv/include/asm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@

#define ARCH_GENERIC_PCI_MMAP_RESOURCE 1

extern int isa_dma_bridge_buggy;

#ifdef CONFIG_PCI
static inline int pci_proc_domain(struct pci_bus *bus)
{
Expand Down
6 changes: 0 additions & 6 deletions arch/s390/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,4 @@
*/
#define MAX_DMA_ADDRESS 0x80000000

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* _ASM_S390_DMA_H */
6 changes: 0 additions & 6 deletions arch/sh/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,4 @@ extern int register_chan_caps(const char *dmac, struct dma_chan_caps *capslist);
extern int dma_create_sysfs_files(struct dma_channel *, struct dma_info *);
extern void dma_remove_sysfs_files(struct dma_channel *, struct dma_info *);

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* __ASM_SH_DMA_H */
8 changes: 0 additions & 8 deletions arch/sparc/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,6 @@
#define DMA_BURST64 0x40
#define DMA_BURSTBITS 0x7f

/* From PCI */

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#ifdef CONFIG_SPARC32
struct device;

Expand Down
2 changes: 0 additions & 2 deletions arch/um/include/asm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@

#define pcibios_assign_all_busses() 1

extern int isa_dma_bridge_buggy;

#ifdef CONFIG_PCI_DOMAINS
static inline int pci_proc_domain(struct pci_bus *bus)
{
Expand Down
8 changes: 0 additions & 8 deletions arch/x86/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -307,12 +307,4 @@ extern int request_dma(unsigned int dmanr, const char *device_id);
extern void free_dma(unsigned int dmanr);
#endif

/* From PCI */

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* _ASM_X86_DMA_H */
7 changes: 0 additions & 7 deletions arch/xtensa/include/asm/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,4 @@
extern int request_dma(unsigned int dmanr, const char * device_id);
extern void free_dma(unsigned int dmanr);

#ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif


#endif
2 changes: 1 addition & 1 deletion drivers/comedi/drivers/comedi_isadma.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <asm/dma.h>
#include <linux/isa-dma.h>
#include <linux/comedi/comedidev.h>
#include <linux/comedi/comedi_isadma.h>

Expand Down
2 changes: 2 additions & 0 deletions drivers/pci/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ const char *pci_power_names[] = {
};
EXPORT_SYMBOL_GPL(pci_power_names);

#ifdef CONFIG_X86_32
int isa_dma_bridge_buggy;
EXPORT_SYMBOL(isa_dma_bridge_buggy);
#endif

int pci_pci_problems;
EXPORT_SYMBOL(pci_pci_problems);
Expand Down
4 changes: 3 additions & 1 deletion drivers/pci/quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <linux/kernel.h>
#include <linux/export.h>
#include <linux/pci.h>
#include <linux/isa-dma.h> /* isa_dma_bridge_buggy */
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/acpi.h>
Expand All @@ -30,7 +31,6 @@
#include <linux/pm_runtime.h>
#include <linux/suspend.h>
#include <linux/switchtec.h>
#include <asm/dma.h> /* isa_dma_bridge_buggy */
#include "pci.h"

static ktime_t fixup_debug_start(struct pci_dev *dev,
Expand Down Expand Up @@ -239,6 +239,7 @@ static void quirk_passive_release(struct pci_dev *dev)
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release);
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release);

#ifdef CONFIG_X86_32
/*
* The VIA VP2/VP3/MVP3 seem to have some 'features'. There may be a
* workaround but VIA don't answer queries. If you happen to have good
Expand All @@ -265,6 +266,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, quirk_isa_dma
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_CBUS_1, quirk_isa_dma_hangs);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_CBUS_2, quirk_isa_dma_hangs);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_CBUS_3, quirk_isa_dma_hangs);
#endif

/*
* Intel NM10 "TigerPoint" LPC PM1a_STS.BM_STS must be clear
Expand Down
14 changes: 14 additions & 0 deletions include/linux/isa-dma.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0 */

#ifndef __LINUX_ISA_DMA_H
#define __LINUX_ISA_DMA_H

#include <asm/dma.h>

#if defined(CONFIG_PCI) && defined(CONFIG_X86_32)
extern int isa_dma_bridge_buggy;
#else
#define isa_dma_bridge_buggy (0)
#endif

#endif /* __LINUX_ISA_DMA_H */
2 changes: 1 addition & 1 deletion sound/core/isadma.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
#undef HAVE_REALLY_SLOW_DMA_CONTROLLER

#include <linux/export.h>
#include <linux/isa-dma.h>
#include <sound/core.h>
#include <asm/dma.h>

/**
* snd_dma_program - program an ISA DMA transfer
Expand Down

0 comments on commit abb4970

Please sign in to comment.