103df8229SChristoph Hellwig // SPDX-License-Identifier: GPL-2.0 203df8229SChristoph Hellwig /* 303df8229SChristoph Hellwig * Copyright (C) 2006 Ralf Baechle <ralf@linux-mips.org> 403df8229SChristoph Hellwig */ 503df8229SChristoph Hellwig #include <linux/dma-direct.h> 603df8229SChristoph Hellwig #include <asm/ip32/crime.h> 703df8229SChristoph Hellwig 803df8229SChristoph Hellwig /* 903df8229SChristoph Hellwig * Few notes. 1003df8229SChristoph Hellwig * 1. CPU sees memory as two chunks: 0-256M@0x0, and the rest @0x40000000+256M 1103df8229SChristoph Hellwig * 2. PCI sees memory as one big chunk @0x0 (or we could use 0x40000000 for 1203df8229SChristoph Hellwig * native-endian) 1303df8229SChristoph Hellwig * 3. All other devices see memory as one big chunk at 0x40000000 1403df8229SChristoph Hellwig * 4. Non-PCI devices will pass NULL as struct device* 1503df8229SChristoph Hellwig * 1603df8229SChristoph Hellwig * Thus we translate differently, depending on device. 1703df8229SChristoph Hellwig */ 1803df8229SChristoph Hellwig 1903df8229SChristoph Hellwig #define RAM_OFFSET_MASK 0x3fffffffUL 2003df8229SChristoph Hellwig phys_to_dma(struct device * dev,phys_addr_t paddr)215ceda740SChristoph Hellwigdma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) 2203df8229SChristoph Hellwig { 2303df8229SChristoph Hellwig dma_addr_t dma_addr = paddr & RAM_OFFSET_MASK; 2403df8229SChristoph Hellwig 2503df8229SChristoph Hellwig if (!dev) 2603df8229SChristoph Hellwig dma_addr += CRIME_HI_MEM_BASE; 2703df8229SChristoph Hellwig return dma_addr; 2803df8229SChristoph Hellwig } 2903df8229SChristoph Hellwig dma_to_phys(struct device * dev,dma_addr_t dma_addr)307bc5c428SChristoph Hellwigphys_addr_t dma_to_phys(struct device *dev, dma_addr_t dma_addr) 3103df8229SChristoph Hellwig { 3203df8229SChristoph Hellwig phys_addr_t paddr = dma_addr & RAM_OFFSET_MASK; 3303df8229SChristoph Hellwig 3403df8229SChristoph Hellwig if (dma_addr >= 256*1024*1024) 3503df8229SChristoph Hellwig paddr += CRIME_HI_MEM_BASE; 3603df8229SChristoph Hellwig return paddr; 3703df8229SChristoph Hellwig } 38