| /* SPDX-License-Identifier: GPL-2.0+ */ | |
| /* | |
| * Copyright 2015 Stephen Warren | |
| */ | |
| #ifndef _BUS_ADDR_H | |
| #define _BUS_ADDR_H | |
| #ifdef CONFIG_PHYS_TO_BUS | |
| unsigned long phys_to_bus(unsigned long phys); | |
| unsigned long bus_to_phys(unsigned long bus); | |
| #else | |
| static inline unsigned long phys_to_bus(unsigned long phys) | |
| { | |
| return phys; | |
| } | |
| static inline unsigned long bus_to_phys(unsigned long bus) | |
| { | |
| return bus; | |
| } | |
| #endif | |
| #if CONFIG_IS_ENABLED(DM_DMA) | |
| #include <dm/device.h> | |
| static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys) | |
| { | |
| /* If the PA is in the remap range, apply remap. */ | |
| if (phys >= dev->dma_cpu && phys < dev->dma_cpu + dev->dma_size) | |
| phys -= dev->dma_cpu - dev->dma_bus; | |
| return phys; | |
| } | |
| static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus) | |
| { | |
| /* If the DA is in the remap range, apply remap. */ | |
| if (bus >= dev->dma_bus && bus < dev->dma_bus + dev->dma_size) | |
| bus += dev->dma_cpu - dev->dma_bus; | |
| return bus; | |
| } | |
| #else | |
| #define dev_phys_to_bus(_, _addr) _addr | |
| #define dev_bus_to_phys(_, _addr) _addr | |
| #endif | |
| #endif |