phys2bus.h 808 B

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