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

ocmem.h (1582B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * The On Chip Memory (OCMEM) allocator allows various clients to allocate
      4 * memory from OCMEM based on performance, latency and power requirements.
      5 * This is typically used by the GPU, camera/video, and audio components on
      6 * some Snapdragon SoCs.
      7 *
      8 * Copyright (C) 2019 Brian Masney <masneyb@onstation.org>
      9 * Copyright (C) 2015 Red Hat. Author: Rob Clark <robdclark@gmail.com>
     10 */
     11
     12#include <linux/device.h>
     13#include <linux/err.h>
     14
     15#ifndef __OCMEM_H__
     16#define __OCMEM_H__
     17
     18enum ocmem_client {
     19	/* GMEM clients */
     20	OCMEM_GRAPHICS = 0x0,
     21	/*
     22	 * TODO add more once ocmem_allocate() is clever enough to
     23	 * deal with multiple clients.
     24	 */
     25	OCMEM_CLIENT_MAX,
     26};
     27
     28struct ocmem;
     29
     30struct ocmem_buf {
     31	unsigned long offset;
     32	unsigned long addr;
     33	unsigned long len;
     34};
     35
     36#if IS_ENABLED(CONFIG_QCOM_OCMEM)
     37
     38struct ocmem *of_get_ocmem(struct device *dev);
     39struct ocmem_buf *ocmem_allocate(struct ocmem *ocmem, enum ocmem_client client,
     40				 unsigned long size);
     41void ocmem_free(struct ocmem *ocmem, enum ocmem_client client,
     42		struct ocmem_buf *buf);
     43
     44#else /* IS_ENABLED(CONFIG_QCOM_OCMEM) */
     45
     46static inline struct ocmem *of_get_ocmem(struct device *dev)
     47{
     48	return ERR_PTR(-ENODEV);
     49}
     50
     51static inline struct ocmem_buf *ocmem_allocate(struct ocmem *ocmem,
     52					       enum ocmem_client client,
     53					       unsigned long size)
     54{
     55	return ERR_PTR(-ENODEV);
     56}
     57
     58static inline void ocmem_free(struct ocmem *ocmem, enum ocmem_client client,
     59			      struct ocmem_buf *buf)
     60{
     61}
     62
     63#endif /* IS_ENABLED(CONFIG_QCOM_OCMEM) */
     64
     65#endif /* __OCMEM_H__ */