Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit d3bc81be authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Paul Burton
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Patchwork: https://patchwork.linux-mips.org/patch/19539/


Signed-off-by: default avatarPaul 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
parent a330a9c5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+0 −5
Original line number Diff line number Diff line
@@ -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
+0 −5
Original line number Diff line number Diff line
@@ -25,8 +25,3 @@ obj-$(CONFIG_CS5536) += cs5536/
#

obj-$(CONFIG_SUSPEND) += pm.o

#
# Big Memory (SWIOTLB) Support
#
obj-$(CONFIG_SWIOTLB) += dma-swiotlb.o
+1 −1
Original line number Diff line number Diff line
#
# 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

+4 −12
Original line number Diff line number Diff line
@@ -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)