1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright 2015 Stephen Warren
4 */
5
6#ifndef _BUS_ADDR_H
7#define _BUS_ADDR_H
8
9#ifdef CONFIG_PHYS_TO_BUS
10unsigned long phys_to_bus(unsigned long phys);
11unsigned long bus_to_phys(unsigned long bus);
12#else
13static inline unsigned long phys_to_bus(unsigned long phys)
14{
15	return phys;
16}
17
18static inline unsigned long bus_to_phys(unsigned long bus)
19{
20	return bus;
21}
22#endif
23
24#if CONFIG_IS_ENABLED(DM)
25#include <dm/device.h>
26
27static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys)
28{
29	return phys - dev_get_dma_offset(dev);
30}
31
32static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus)
33{
34	return bus + dev_get_dma_offset(dev);
35}
36#else
37#define dev_phys_to_bus(_, _addr)	_addr
38#define dev_bus_to_phys(_, _addr)	_addr
39#endif
40
41#endif
42