mirror of https://gitee.com/openkylin/linux.git
MIPS: loongson: untangle dma implementations
Only loongson-3 is DMA coherent and uses swiotlb. So move the dma address translations stubs directly to the loongson-3 code, and remove a few Kconfig indirections. Signed-off-by: Christoph Hellwig <hch@lst.de> Patchwork: https://patchwork.linux-mips.org/patch/19539/ Signed-off-by: Paul Burton <paul.burton@mips.com> Cc: Florian Fainelli <f.fainelli@gmail.com> Cc: David Daney <david.daney@cavium.com> Cc: Kevin Cernekee <cernekee@gmail.com> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> Cc: Tom Bogendoerfer <tsbogend@alpha.franken.de> Cc: Huacai Chen <chenhc@lemote.com> Cc: iommu@lists.linux-foundation.org Cc: linux-mips@linux-mips.org
This commit is contained in:
parent
a330a9c59b
commit
d3bc81befc
|
@ -454,7 +454,6 @@ config MACH_LOONGSON32
|
|||
|
||||
config MACH_LOONGSON64
|
||||
bool "Loongson-2/3 family of machines"
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select SYS_SUPPORTS_ZBOOT
|
||||
help
|
||||
This enables the support of Loongson-2/3 family of machines.
|
||||
|
@ -1389,6 +1388,7 @@ choice
|
|||
config CPU_LOONGSON3
|
||||
bool "Loongson 3 CPU"
|
||||
depends on SYS_HAS_CPU_LOONGSON3
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
select CPU_SUPPORTS_HIGHMEM
|
||||
select CPU_SUPPORTS_HUGEPAGES
|
||||
|
|
|
@ -93,7 +93,6 @@ config LOONGSON_MACH3X
|
|||
select LOONGSON_MC146818
|
||||
select ZONE_DMA32
|
||||
select LEFI_FIRMWARE_INTERFACE
|
||||
select PHYS48_TO_HT40
|
||||
help
|
||||
Generic Loongson 3 family machines utilize the 3A/3B revision
|
||||
of Loongson processor and RS780/SBX00 chipset.
|
||||
|
@ -132,10 +131,6 @@ config LOONGSON_UART_BASE
|
|||
default y
|
||||
depends on EARLY_PRINTK || SERIAL_8250
|
||||
|
||||
config PHYS48_TO_HT40
|
||||
bool
|
||||
default y if CPU_LOONGSON3
|
||||
|
||||
config LOONGSON_MC146818
|
||||
bool
|
||||
default n
|
||||
|
|
|
@ -25,8 +25,3 @@ obj-$(CONFIG_CS5536) += cs5536/
|
|||
#
|
||||
|
||||
obj-$(CONFIG_SUSPEND) += pm.o
|
||||
|
||||
#
|
||||
# Big Memory (SWIOTLB) Support
|
||||
#
|
||||
obj-$(CONFIG_SWIOTLB) += dma-swiotlb.o
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Makefile for Loongson-3 family machines
|
||||
#
|
||||
obj-y += irq.o cop2-ex.o platform.o acpi_init.o
|
||||
obj-y += irq.o cop2-ex.o platform.o acpi_init.o dma.o
|
||||
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
|
||||
|
|
|
@ -5,26 +5,18 @@
|
|||
|
||||
dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr)
|
||||
{
|
||||
long nid;
|
||||
#ifdef CONFIG_PHYS48_TO_HT40
|
||||
/* We extract 2bit node id (bit 44~47, only bit 44~45 used now) from
|
||||
* Loongson-3's 48bit address space and embed it into 40bit */
|
||||
nid = (paddr >> 44) & 0x3;
|
||||
paddr = ((nid << 44) ^ paddr) | (nid << 37);
|
||||
#endif
|
||||
return paddr;
|
||||
long nid = (paddr >> 44) & 0x3;
|
||||
return ((nid << 44) ^ paddr) | (nid << 37);
|
||||
}
|
||||
|
||||
phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t daddr)
|
||||
{
|
||||
long nid;
|
||||
#ifdef CONFIG_PHYS48_TO_HT40
|
||||
/* We extract 2bit node id (bit 44~47, only bit 44~45 used now) from
|
||||
* Loongson-3's 48bit address space and embed it into 40bit */
|
||||
nid = (daddr >> 37) & 0x3;
|
||||
daddr = ((nid << 37) ^ daddr) | (nid << 44);
|
||||
#endif
|
||||
return daddr;
|
||||
long nid = (daddr >> 37) & 0x3;
|
||||
return ((nid << 37) ^ daddr) | (nid << 44);
|
||||
}
|
||||
|
||||
void __init plat_swiotlb_setup(void)
|
Loading…
Reference in New Issue