coreboot/payloads/libpayload/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
..
armv7/arch armv7: Make coreboot and libpayload cache files the same 2013-08-16 19:02:52 -07:00
arpa Refactor the endianness conversion functions and header files. 2012-11-08 19:49:51 +01:00
pci libpayload: Fix renaming of REG_CLASS_DEV to REG_SUBCLASS 2012-12-10 16:45:00 +01:00
storage libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
sys libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
usb libpayload: usb mass storage card hot plug 2013-06-09 15:03:16 -07:00
x86/arch libpayload: Have similar cache api on ARM and x86 2013-06-20 18:52:16 -07:00
assert.h libpayload: Fix the format string of the assert macro. 2012-11-07 18:36:05 +01:00
cbfs.h libpayload: New CBFS to support multiple firmware media sources. 2013-02-12 11:34:20 +01:00
cbfs_core.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
cbfs_ram.h libpayload: expose cbfs ram functions 2013-05-24 16:27:51 -07:00
coreboot_tables.h arm: libpayload: Add cache coherent DMA memory definition and management 2013-08-29 22:48:49 +00:00
ctype.h Attached patch moves functions out of the huge libpayload.h into headers 2010-06-24 11:16:10 +00:00
endian.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
errno.h Attached patch moves functions out of the huge libpayload.h into headers 2010-06-24 11:16:10 +00:00
getopt.h Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
inttypes.h libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
ipchksum.h Move the definition of ipchksum into its own header file. 2012-11-07 18:30:21 +01:00
kconfig.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
keycodes.h libpayload: Make keycode constants available outside of curses.h. 2013-03-18 20:45:48 +01:00
lar.h libpayload: Add LAR walking support 2008-05-07 20:34:02 +00:00
libpayload.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
limits.h libpayload: Improve compatibility 2011-07-16 11:09:28 +02:00
lzma.h LZMA: Add a version of ulzma which takes the input and output buffer sizes. 2013-08-14 17:05:34 -07:00
malloc.h libpayload: Provide atol(), malloc.h 2011-07-07 22:29:53 +02:00
multiboot_tables.h [PATCH] libpayload: Add multiboot support 2008-10-20 16:51:43 +00:00
panel.h libpayload: Add PDCurses and ncurses' libform/libmenu 2011-08-04 08:10:41 +02:00
pci.h libpayload: Add definitions for more config space registers. 2012-11-07 18:36:27 +01:00
stdarg.h libpayload: Don't sneak in compiler includes 2013-04-09 13:45:42 -07:00
stddef.h Make ssize_t an actual ssize_t 2013-05-03 14:09:32 -07:00
stdint.h libpayload: Fix type issues 2013-03-26 19:36:39 +01:00
stdio.h libpayload: Add the format attribute to functions in stdio.h. 2012-11-07 18:36:14 +01:00
stdlib.h arm: libpayload: Add cache coherent DMA memory definition and management 2013-08-29 22:48:49 +00:00
string.h libpayload: Implement strlcpy 2011-07-07 22:29:35 +02:00
strings.h libpayload: Implement ffs() 2011-03-01 07:23:49 +00:00
sysinfo.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
term.h libpayload: remove trailing whitespace and run dos2unix 2011-11-01 19:08:23 +01:00
unistd.h libpayload: Don't sneak in compiler includes 2013-04-09 13:45:42 -07:00
video_console.h Add coreboot framebuffer support to libpayload 2010-03-25 18:56:26 +00:00