mirror of
https://github.com/torvalds/linux
synced 2024-07-23 03:29:48 +00:00
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
|
config MACH_LOONGSON64
|
||||||
bool "Loongson-2/3 family of machines"
|
bool "Loongson-2/3 family of machines"
|
||||||
select ARCH_HAS_PHYS_TO_DMA
|
|
||||||
select SYS_SUPPORTS_ZBOOT
|
select SYS_SUPPORTS_ZBOOT
|
||||||
help
|
help
|
||||||
This enables the support of Loongson-2/3 family of machines.
|
This enables the support of Loongson-2/3 family of machines.
|
||||||
|
@ -1389,6 +1388,7 @@ choice
|
||||||
config CPU_LOONGSON3
|
config CPU_LOONGSON3
|
||||||
bool "Loongson 3 CPU"
|
bool "Loongson 3 CPU"
|
||||||
depends on SYS_HAS_CPU_LOONGSON3
|
depends on SYS_HAS_CPU_LOONGSON3
|
||||||
|
select ARCH_HAS_PHYS_TO_DMA
|
||||||
select CPU_SUPPORTS_64BIT_KERNEL
|
select CPU_SUPPORTS_64BIT_KERNEL
|
||||||
select CPU_SUPPORTS_HIGHMEM
|
select CPU_SUPPORTS_HIGHMEM
|
||||||
select CPU_SUPPORTS_HUGEPAGES
|
select CPU_SUPPORTS_HUGEPAGES
|
||||||
|
|
|
@ -93,7 +93,6 @@ config LOONGSON_MACH3X
|
||||||
select LOONGSON_MC146818
|
select LOONGSON_MC146818
|
||||||
select ZONE_DMA32
|
select ZONE_DMA32
|
||||||
select LEFI_FIRMWARE_INTERFACE
|
select LEFI_FIRMWARE_INTERFACE
|
||||||
select PHYS48_TO_HT40
|
|
||||||
help
|
help
|
||||||
Generic Loongson 3 family machines utilize the 3A/3B revision
|
Generic Loongson 3 family machines utilize the 3A/3B revision
|
||||||
of Loongson processor and RS780/SBX00 chipset.
|
of Loongson processor and RS780/SBX00 chipset.
|
||||||
|
@ -132,10 +131,6 @@ config LOONGSON_UART_BASE
|
||||||
default y
|
default y
|
||||||
depends on EARLY_PRINTK || SERIAL_8250
|
depends on EARLY_PRINTK || SERIAL_8250
|
||||||
|
|
||||||
config PHYS48_TO_HT40
|
|
||||||
bool
|
|
||||||
default y if CPU_LOONGSON3
|
|
||||||
|
|
||||||
config LOONGSON_MC146818
|
config LOONGSON_MC146818
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -25,8 +25,3 @@ obj-$(CONFIG_CS5536) += cs5536/
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-$(CONFIG_SUSPEND) += pm.o
|
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
|
# 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
|
obj-$(CONFIG_SMP) += smp.o
|
||||||
|
|
||||||
|
|
|
@ -5,26 +5,18 @@
|
||||||
|
|
||||||
dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr)
|
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
|
/* 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 */
|
* Loongson-3's 48bit address space and embed it into 40bit */
|
||||||
nid = (paddr >> 44) & 0x3;
|
long nid = (paddr >> 44) & 0x3;
|
||||||
paddr = ((nid << 44) ^ paddr) | (nid << 37);
|
return ((nid << 44) ^ paddr) | (nid << 37);
|
||||||
#endif
|
|
||||||
return paddr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t daddr)
|
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
|
/* 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 */
|
* Loongson-3's 48bit address space and embed it into 40bit */
|
||||||
nid = (daddr >> 37) & 0x3;
|
long nid = (daddr >> 37) & 0x3;
|
||||||
daddr = ((nid << 37) ^ daddr) | (nid << 44);
|
return ((nid << 37) ^ daddr) | (nid << 44);
|
||||||
#endif
|
|
||||||
return daddr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init plat_swiotlb_setup(void)
|
void __init plat_swiotlb_setup(void)
|
Loading…
Reference in a new issue