coreboot/src/include
Julius Werner d142ccdcd9 arm: libpayload: Add cache coherent DMA memory definition and management
This patch adds a mechanism to set aside a region of cache-coherent
(i.e. usually uncached) virtual memory, which can be used to communicate
with DMA devices without automatic cache snooping (common on ARM)
without the need of explicit flush/invalidation instructions in the
driver code.

This works by setting aside said region in the (board-specific) page
table setup, as exemplary done in this patch for the Snow, Pit and Kirby
boards. It uses a new mechanism for adding board-specific Coreboot table
entries to describe this region in an entry with the LB_DMA tag.

Libpayload's memory allocator is enhanced to be able to operate on
distinct types/regions of memory. It provides dma_malloc() and
dma_memalign() functions for use in drivers, which by default just
operate on the same heap as their traditional counterparts. However, if
the Coreboot table parsing code finds a CB_DMA section, further requests
through the dma_xxx() functions will return memory from the region
described therein instead.

BUG=chrome-os-partner:21969
TEST=Manual

Change-Id: Ia9c249249e936bbc3eb76e7b4822af2230ffb186
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/167155
2013-08-29 22:48:49 +00:00
..
boot arm: libpayload: Add cache coherent DMA memory definition and management 2013-08-29 22:48:49 +00:00
console Add a specific post code for S3 resume failures 2013-08-09 11:18:59 -07:00
cpu lynxpoint: Route all USB ports to XHCI in finalize step 2013-07-31 13:15:55 -07:00
device i2c: Change the type of the data parameter to uint8_t. 2013-07-03 18:23:06 -07:00
pc80 Log device path into CMOS during probe stages 2013-06-10 18:08:24 -07:00
smp Clean up #ifs 2012-05-08 00:34:34 +02:00
assert.h We call this cache as ram everywhere, so let's call it the same in Kconfig 2010-08-30 17:53:13 +00:00
bootstate.h Rename hardwaremain() to main() 2013-05-10 11:55:20 -07:00
cbfs.h BACKPORT: boot state: rebalance payload load vs actual boot 2013-05-01 14:30:44 -07:00
cbfs_core.h Extend CBFS to support arbitrary ROM source media. 2013-01-30 17:58:32 +01:00
cbmem.h BACKPORT: x86: add cache-as-ram migration option 2013-05-16 15:06:24 -07:00
delay.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
edid.h Added structure members x_mm and y_mm to edid decoding. 2013-07-23 19:02:23 -07:00
ehci.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
elog.h Extend CMOS POST code logging to store extra data 2013-06-10 18:08:23 -07:00
endian.h Extend CBFS to support arbitrary ROM source media. 2013-01-30 17:58:32 +01:00
fallback.h Make set_boot_successful depend on PC80_SYSTEM 2012-11-30 21:33:35 +01:00
inttypes.h x86: provide more C standard environment 2013-03-20 04:20:25 +01:00
ip_checksum.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
kconfig.h Add config_enabled() from Linux 2012-05-08 00:36:09 +02:00
lib.h Add simple hexdump function 2013-07-30 15:25:06 -07:00
memrange.h memrange: add 2 new range_entry routines 2013-03-29 20:11:28 +01:00
reset.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
rmodule.h rmodule: add vboot rmodule type 2013-03-22 00:14:50 +01:00
romstage_handoff.h coreboot: dynamic cbmem requirement 2013-03-22 00:13:42 +01:00
sdram_mode.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
smbios.h smbios: Add generic type41 write function 2013-05-24 14:02:57 -07:00
spd.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
spd_ddr2.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
spi-generic.h spi-generic.h: Adapt include guard 2013-02-11 22:34:17 +01:00
spi_flash.h Whitespace: Replace tab character in license text with two spaces 2013-02-20 23:30:45 +01:00
stddef.h Make ssize_t an actual ssize_t 2013-05-03 14:09:32 -07:00
stdlib.h exynos5420: Fix mmc clock source. 2013-08-22 16:03:17 -07:00
string.h BACKPORT: string: Add STRINGIFY macro 2013-05-01 14:29:58 -07:00
swab.h Add macros for 64bit byte order swapping 2011-10-21 14:13:19 +02:00
thread.h Possible thread stack implementation. 2013-08-23 10:38:10 -07:00
timer.h timer: Add functions to initialize absolute timer structures. 2013-08-09 11:18:51 -07:00
timestamp.h Timestamp implementation for ARMv7 2013-08-02 12:16:42 -07:00
trace.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
types.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
uart.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
uart8250.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
usb_ch9.h USB Debug Port related license header fixes (trivial). 2010-09-23 18:16:46 +00:00
usbdebug.h Drop prototype guarding for romcc 2013-05-10 11:55:20 -07:00
vbe.h Provide support for setting up the framebuffer from EDID 2013-04-24 18:33:20 -07:00
version.h Rename almost all occurences of LinuxBIOS to coreboot. 2008-01-18 15:08:58 +00:00
watchdog.h watchdog.h: Fix compile time error on disabling watchdog handling 2013-03-12 12:06:43 +01:00