Create API to map between CPU physical and bus addresses

On some SoCs, DMA-capable peripherals see a different address space to
the CPU's physical address space. Create an API to allow platform-agnostic
drivers to convert between the two address spaces when programming DMA
operations.

This API will exist on all platforms, but will have a dummy implementation
when this feature is not required. Other platforms will enable
CONFIG_PHYS_TO_BUS and provide the required implementation.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
This commit is contained in:
Stephen Warren 2015-03-24 20:07:33 -06:00 committed by Marek Vasut
parent fc909c0563
commit 927c1fa266
2 changed files with 33 additions and 0 deletions

View file

@ -53,3 +53,11 @@ source "drivers/crypto/Kconfig"
source "drivers/thermal/Kconfig"
endmenu
config PHYS_TO_BUS
bool
help
Some SoCs use a different address map for CPU physical addresses and
peripheral DMA master accesses. If yours does, select this option in
your platform's Kconfig, and implement the appropriate mapping
functions in your platform's support code.

25
include/phys2bus.h Normal file
View file

@ -0,0 +1,25 @@
/*
* Copyright 2015 Stephen Warren
*
* SPDX-License-Identifier: GPL-2.0+
*/
#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
#endif