diff options
author | Lee Leahy <leroy.p.leahy@intel.com> | 2017-05-08 16:56:03 -0700 |
---|---|---|
committer | Lee Leahy <leroy.p.leahy@intel.com> | 2017-05-12 18:20:33 +0200 |
commit | 48dbc663d75e6b7e45e50cd099acb88b35e65a0a (patch) | |
tree | f60c19148b8be447c5350f939ac9d832e379579c /src/drivers/storage/bouncebuf.h | |
parent | f542aca0908ead68314a6d9603dde8849abcff19 (diff) |
commonlib: Move drivers/storage into commonlib/storage
Move drivers/storage into commonlib/storage to enable access by
libpayload and indirectly by payloads.
* Remove SD/MMC specific include files from include/device
* Remove files from drivers/storage
* Add SD/MMC specific include files to commonlib/include
* Add files to commonlib/storage
* Fix header file references
* Add subdir entry in commonlib/Makefile.inc to build the SD/MMC driver
* Add Kconfig source for commonlib/storage
* Rename *DEVICE* to *COMMONLIB*
* Rename *DRIVERS_STORAGE* to *COMMONLIB_STORAGE*
TEST=Build and run on Galileo Gen2
Change-Id: I4339e4378491db9a0da1f2dc34e1906a5ba31ad6
Signed-off-by: Lee Leahy <Leroy.P.Leahy@intel.com>
Reviewed-on: https://review.coreboot.org/19672
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/drivers/storage/bouncebuf.h')
-rw-r--r-- | src/drivers/storage/bouncebuf.h | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/src/drivers/storage/bouncebuf.h b/src/drivers/storage/bouncebuf.h deleted file mode 100644 index deea4f8636..0000000000 --- a/src/drivers/storage/bouncebuf.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Generic bounce buffer implementation - * - * Copyright (C) 2012 Marek Vasut <marex@denx.de> - * Copyright 2013 Google Inc. All rights reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef __DRIVERS_STORAGE_BOUNCEBUF_H__ -#define __DRIVERS_STORAGE_BOUNCEBUF_H__ - -#include <stddef.h> -#include <stdint.h> -#include <stdlib.h> - -/* - * GEN_BB_READ -- Data are read from the buffer eg. by DMA hardware. - * The source buffer is copied into the bounce buffer (if unaligned, otherwise - * the source buffer is used directly) upon start() call, then the operation - * requiring the aligned transfer happens, then the bounce buffer is lost upon - * stop() call. - */ -#define GEN_BB_READ (1 << 0) -/* - * GEN_BB_WRITE -- Data are written into the buffer eg. by DMA hardware. - * The source buffer starts in an undefined state upon start() call, then the - * operation requiring the aligned transfer happens, then the bounce buffer is - * copied into the destination buffer (if unaligned, otherwise destination - * buffer is used directly) upon stop() call. - */ -#define GEN_BB_WRITE (1 << 1) -/* - * GEN_BB_RW -- Data are read and written into the buffer eg. by DMA hardware. - * The source buffer is copied into the bounce buffer (if unaligned, otherwise - * the source buffer is used directly) upon start() call, then the operation - * requiring the aligned transfer happens, then the bounce buffer is copied - * into the destination buffer (if unaligned, otherwise destination buffer is - * used directly) upon stop() call. - */ -#define GEN_BB_RW (GEN_BB_READ | GEN_BB_WRITE) - -struct bounce_buffer { - /* Copy of data parameter passed to start() */ - void *user_buffer; - /* - * DMA-aligned buffer. This field is always set to the value that - * should be used for DMA; either equal to .user_buffer, or to a - * freshly allocated aligned buffer. - */ - void *bounce_buffer; - /* Copy of len parameter passed to start() */ - size_t len; - /* DMA-aligned buffer length */ - size_t len_aligned; - /* Copy of flags parameter passed to start() */ - unsigned int flags; -}; - -/** - * bounce_buffer_start() -- Start the bounce buffer session - * state: stores state passed between bounce_buffer_{start,stop} - * data: pointer to buffer to be aligned - * len: length of the buffer - * flags: flags describing the transaction, see above. - */ -int bounce_buffer_start(struct bounce_buffer *state, void *data, - size_t len, unsigned int flags); -/** - * bounce_buffer_stop() -- Finish the bounce buffer session - * state: stores state passed between bounce_buffer_{start,stop} - */ -int bounce_buffer_stop(struct bounce_buffer *state); - -// TODO(hungte) Eliminate the alignment stuff below and replace them with a -// better and centralized way to handler non-cache/aligned memory. -// Helper macros for alignment. -#define DMA_MINALIGN (64) -#define ROUND(a, b) (((a) + (b) - 1) & ~((b) - 1)) -#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size) \ - char __##name[ROUND(size * sizeof(type), DMA_MINALIGN) + \ - DMA_MINALIGN - 1]; \ - type *name = (type *) ALIGN((uintptr_t)__##name, DMA_MINALIGN) -#ifndef ARCH_DMA_MINALIGN -#define ARCH_DMA_MINALIGN (DMA_MINALIGN) -#endif - -#endif // __DRIVERS_STORAGE_BOUNCEBUF_H__ |