]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/bouncebuf.h
karo: fdt: fix panel-dpi support
[karo-tx-uboot.git] / include / bouncebuf.h
index aa2278c8f94ad05355b1d29bbee1104459e9e064..5ffa99bc131f8b69be7fabf6e8377d992e3265d0 100644 (file)
@@ -3,28 +3,14 @@
  *
  * Copyright (C) 2012 Marek Vasut <marex@denx.de>
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #ifndef __INCLUDE_BOUNCEBUF_H__
 #define __INCLUDE_BOUNCEBUF_H__
 
+#include <linux/types.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
  */
 #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
- * backup:     pointer to backup buffer (the original value is stored here if
- *              needed
  * flags:      flags describing the transaction, see above.
  */
-int bounce_buffer_start(void **data, size_t len, void **backup, uint8_t flags);
+int bounce_buffer_start(struct bounce_buffer *state, void *data,
+                       size_t len, unsigned int flags);
 /**
  * bounce_buffer_stop() -- Finish the bounce buffer session
- * data:       pointer to buffer that was aligned
- * len:                length of the buffer
- * backup:     pointer to backup buffer (the original value is stored here if
- *              needed
- * flags:      flags describing the transaction, see above.
+ * state:      stores state passed between bounce_buffer_{start,stop}
  */
-int bounce_buffer_stop(void **data, size_t len, void **backup, uint8_t flags);
+int bounce_buffer_stop(struct bounce_buffer *state);
 
 #endif