cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ipu3-css-pool.h (1455B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Copyright (C) 2018 Intel Corporation */
      3
      4#ifndef __IPU3_UTIL_H
      5#define __IPU3_UTIL_H
      6
      7struct device;
      8struct imgu_device;
      9
     10#define IPU3_CSS_POOL_SIZE		4
     11
     12/**
     13 * struct imgu_css_map - store DMA mapping info for buffer
     14 *
     15 * @size:		size of the buffer in bytes.
     16 * @vaddr:		kernel virtual address.
     17 * @daddr:		iova dma address to access IPU3.
     18 * @pages:		pages mapped to this buffer
     19 */
     20struct imgu_css_map {
     21	size_t size;
     22	void *vaddr;
     23	dma_addr_t daddr;
     24	struct page **pages;
     25};
     26
     27/**
     28 * struct imgu_css_pool - circular buffer pool definition
     29 *
     30 * @entry:		array with IPU3_CSS_POOL_SIZE elements.
     31 * @entry.param:	a &struct imgu_css_map for storing the mem mapping.
     32 * @entry.valid:	used to mark if the entry has valid data.
     33 * @last:		write pointer, initialized to IPU3_CSS_POOL_SIZE.
     34 */
     35struct imgu_css_pool {
     36	struct {
     37		struct imgu_css_map param;
     38		bool valid;
     39	} entry[IPU3_CSS_POOL_SIZE];
     40	u32 last;
     41};
     42
     43int imgu_css_dma_buffer_resize(struct imgu_device *imgu,
     44			       struct imgu_css_map *map, size_t size);
     45void imgu_css_pool_cleanup(struct imgu_device *imgu,
     46			   struct imgu_css_pool *pool);
     47int imgu_css_pool_init(struct imgu_device *imgu, struct imgu_css_pool *pool,
     48		       size_t size);
     49void imgu_css_pool_get(struct imgu_css_pool *pool);
     50void imgu_css_pool_put(struct imgu_css_pool *pool);
     51const struct imgu_css_map *imgu_css_pool_last(struct imgu_css_pool *pool,
     52					      u32 last);
     53
     54#endif