PCI: Move isa_dma_bridge_buggy out of asm/dma.h
authorStafford Horne <shorne@gmail.com>
Fri, 22 Jul 2022 21:49:42 +0000 (06:49 +0900)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 22 Jul 2022 22:24:47 +0000 (17:24 -0500)
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 <arnd@arndb.de>
Suggested-by: Christoph Hellwig <hch@infradead.org>
Link: https://lore.kernel.org/r/20220722214944.831438-3-shorne@gmail.com
Signed-off-by: Stafford Horne <shorne@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
23 files changed:
arch/alpha/include/asm/dma.h
arch/arc/include/asm/dma.h
arch/arm/include/asm/dma.h
arch/arm64/include/asm/pci.h
arch/csky/include/asm/pci.h
arch/ia64/include/asm/dma.h
arch/m68k/include/asm/dma.h
arch/microblaze/include/asm/dma.h
arch/mips/include/asm/dma.h
arch/parisc/include/asm/dma.h
arch/powerpc/include/asm/dma.h
arch/riscv/include/asm/pci.h
arch/s390/include/asm/dma.h
arch/sh/include/asm/dma.h
arch/sparc/include/asm/dma.h
arch/um/include/asm/pci.h
arch/x86/include/asm/dma.h
arch/xtensa/include/asm/dma.h
drivers/comedi/drivers/comedi_isadma.c
drivers/pci/pci.c
drivers/pci/quirks.c
include/linux/isa-dma.h [new file with mode: 0644]
sound/core/isadma.c

index 28610ea7786d9d6db3f98674de9d5a354c4c4e40..a04d76b96089e5b7a975941dcbc3067f88959ec7 100644 (file)
@@ -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 */
index 5b744f4b10a7bed9f0471d68b39af5130e4b40ac..02431027ed2fbca43425e458346ea997104bae38 100644 (file)
@@ -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
index a81dda65c57622a253fb2437c53ecba2ad8e82c5..907d139be431b94b1801be953de6f1658ef30035 100644 (file)
@@ -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 */
index 0aebc3488c320c7bacfd628e03b3df394587cd37..682c922b56584b074ecdd82e9280eef516da5b5e 100644 (file)
@@ -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)
 {
index 0535f1aaae38b9aea8302485b85d9b1b44ac19fc..5c02454ec7246fd408ca8667879f7688114a65d1 100644 (file)
@@ -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)
 {
index 59625e9c1f9c5d549916b577125719b6af522639..eaed2626ffdad3c67cf2195ea1b7da8ab2bfa074 100644 (file)
@@ -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 */
index f6c5e0dfb4e5bc96f78ab8a2abdc614760959bff..1c8d9c5bc2fadeb425965974bdfb497577ebcc3b 100644 (file)
@@ -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 */
index f801582be9124e85dffc067ef4214b7ab6ecdb3f..7484c9eb66c47e240c78505274fad0148eb461db 100644 (file)
@@ -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 */
index be726b9435309773b4558d6555ed6fe91137d0ea..d6186e6bea7ec4f02be4e862a8b641216c78ac63 100644 (file)
@@ -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 */
index eea80ed34e6d66786759ff66e4291d260899bba2..9e8c101de902c709c46c177fb3572826c7f85b7b 100644 (file)
@@ -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 */
index 6161a9596196f67101cfd8ca89acc605265954cd..d97c66d9ae340e6f7223bd33c55ea916e31a0d88 100644 (file)
@@ -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 */
index a7b8f0d0df7f4ef4906f8213eda18989be552281..f904df586c0373d74a49f02cb4c009107677f5e7 100644 (file)
@@ -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)
 {
index 6f26f35d4a7171a1dd4c32ba65f4e81fbec74e1a..dec1c4ce628c8906719720336e8fbb18935c5965 100644 (file)
  */
 #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 */
index 17d23ae98c77a4c0620532ead1c84027bf389a71..c8bee3f985a2939360a020074e7ee9b51ca3dd0f 100644 (file)
@@ -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 */
index 462e7c794a095b6b6107ece77d40c0cc158005d5..08043f35b110e44de10ece9e35e8e606c016bc77 100644 (file)
 #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;
 
index 26b96c02ef61ee2455ac39870afe5ea94da4793f..1211855aff34151e4b1a9375b6a8c3d426363f43 100644 (file)
@@ -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)
 {
index 8e95aa4b0d172362263c178de77c7b324de39263..8ae6e0e11b8bcb443e7034ef32ee621a5ae730ae 100644 (file)
@@ -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 */
index bb099a373b5add5c7f5fa9fb3d5544f3d3da6c9c..172644539032afc5fd66e36093be1df93e3bc52c 100644 (file)
 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
index 700982464c5385586aeed5a0d1ebb636bf0f9d1a..020b3d1e1ac0de3df00eeee8a195d4bb7c67df32 100644 (file)
@@ -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>
 
index cfaf40a540a82771f3e6ab69a2e9784dfec0667f..60c55d2cb2cc64bc8599617dbcda6494679f90be 100644 (file)
@@ -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);
index 41aeaa23513224a3836910a39ea12abac291ccbc..6fc64509eee791a01232686146da8423fe0898c4 100644 (file)
@@ -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>
@@ -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,
@@ -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
@@ -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
diff --git a/include/linux/isa-dma.h b/include/linux/isa-dma.h
new file mode 100644 (file)
index 0000000..61504a8
--- /dev/null
@@ -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 */
index 1f45ede023b44a4a54af81437a14ff5e2ceeb9cd..18a86212e3a82d01994ff728544316c9db08e446 100644 (file)
@@ -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