x86: allow CONFIG_ISA_DMA_API to be disabled
Not all 64-bit systems require ISA-style DMA, so allow it to be configurable. x86 utilizes the generic ISA DMA allocator from kernel/dma.c, so require it only when CONFIG_ISA_DMA_API is enabled. Disabling CONFIG_ISA_DMA_API is dependent on x86_64 since those machines do not have ISA slots and benefit the most from disabling the option (and on CONFIG_EXPERT as required by H. Peter Anvin). When disabled, this also avoids declaring claim_dma_lock(), release_dma_lock(), request_dma(), and free_dma() since those interfaces will no longer be provided. Signed-off-by: David Rientjes <rientjes@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Bjorn Helgaas <bjorn.helgaas@hp.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: "Luck, Tony" <tony.luck@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
8df3bd9e18
commit
1c00f0161f
|
@ -123,7 +123,7 @@ config NEED_SG_DMA_LENGTH
|
|||
def_bool y
|
||||
|
||||
config GENERIC_ISA_DMA
|
||||
def_bool y
|
||||
def_bool ISA_DMA_API
|
||||
|
||||
config GENERIC_IOMAP
|
||||
def_bool y
|
||||
|
@ -2002,9 +2002,13 @@ source "drivers/pci/pcie/Kconfig"
|
|||
|
||||
source "drivers/pci/Kconfig"
|
||||
|
||||
# x86_64 have no ISA slots, but do have ISA-style DMA.
|
||||
# x86_64 have no ISA slots, but can have ISA-style DMA.
|
||||
config ISA_DMA_API
|
||||
def_bool y
|
||||
bool "ISA-style DMA support" if (X86_64 && EXPERT)
|
||||
default y
|
||||
help
|
||||
Enables ISA-style DMA support for devices requiring such controllers.
|
||||
If unsure, say Y.
|
||||
|
||||
if X86_32
|
||||
|
||||
|
|
|
@ -151,6 +151,7 @@
|
|||
#define DMA_AUTOINIT 0x10
|
||||
|
||||
|
||||
#ifdef CONFIG_ISA_DMA_API
|
||||
extern spinlock_t dma_spin_lock;
|
||||
|
||||
static inline unsigned long claim_dma_lock(void)
|
||||
|
@ -164,6 +165,7 @@ static inline void release_dma_lock(unsigned long flags)
|
|||
{
|
||||
spin_unlock_irqrestore(&dma_spin_lock, flags);
|
||||
}
|
||||
#endif /* CONFIG_ISA_DMA_API */
|
||||
|
||||
/* enable/disable a specific DMA channel */
|
||||
static inline void enable_dma(unsigned int dmanr)
|
||||
|
@ -303,9 +305,11 @@ static inline int get_dma_residue(unsigned int dmanr)
|
|||
}
|
||||
|
||||
|
||||
/* These are in kernel/dma.c: */
|
||||
/* These are in kernel/dma.c because x86 uses CONFIG_GENERIC_ISA_DMA */
|
||||
#ifdef CONFIG_ISA_DMA_API
|
||||
extern int request_dma(unsigned int dmanr, const char *device_id);
|
||||
extern void free_dma(unsigned int dmanr);
|
||||
#endif
|
||||
|
||||
/* From PCI */
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user