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

knav_qmss.h (3114B)


      1/*
      2 * Keystone Navigator Queue Management Sub-System header
      3 *
      4 * Copyright (C) 2014 Texas Instruments Incorporated - https://www.ti.com
      5 * Author:	Sandeep Nair <sandeep_n@ti.com>
      6 *		Cyril Chemparathy <cyril@ti.com>
      7 *		Santosh Shilimkar <santosh.shilimkar@ti.com>
      8 *
      9 * This program is free software; you can redistribute it and/or
     10 * modify it under the terms of the GNU General Public License as
     11 * published by the Free Software Foundation version 2.
     12 *
     13 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
     14 * kind, whether express or implied; without even the implied warranty
     15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16 * GNU General Public License for more details.
     17 */
     18
     19#ifndef __SOC_TI_KNAV_QMSS_H__
     20#define __SOC_TI_KNAV_QMSS_H__
     21
     22#include <linux/err.h>
     23#include <linux/time.h>
     24#include <linux/atomic.h>
     25#include <linux/device.h>
     26#include <linux/fcntl.h>
     27#include <linux/dma-mapping.h>
     28
     29/* queue types */
     30#define KNAV_QUEUE_QPEND	((unsigned)-2) /* interruptible qpend queue */
     31#define KNAV_QUEUE_ACC		((unsigned)-3) /* Accumulated queue */
     32#define KNAV_QUEUE_GP		((unsigned)-4) /* General purpose queue */
     33
     34/* queue flags */
     35#define KNAV_QUEUE_SHARED	0x0001		/* Queue can be shared */
     36
     37/**
     38 * enum knav_queue_ctrl_cmd -	queue operations.
     39 * @KNAV_QUEUE_GET_ID:		Get the ID number for an open queue
     40 * @KNAV_QUEUE_FLUSH:		forcibly empty a queue if possible
     41 * @KNAV_QUEUE_SET_NOTIFIER:	Set a notifier callback to a queue handle.
     42 * @KNAV_QUEUE_ENABLE_NOTIFY:	Enable notifier callback for a queue handle.
     43 * @KNAV_QUEUE_DISABLE_NOTIFY:	Disable notifier callback for a queue handle.
     44 * @KNAV_QUEUE_GET_COUNT:	Get number of queues.
     45 */
     46enum knav_queue_ctrl_cmd {
     47	KNAV_QUEUE_GET_ID,
     48	KNAV_QUEUE_FLUSH,
     49	KNAV_QUEUE_SET_NOTIFIER,
     50	KNAV_QUEUE_ENABLE_NOTIFY,
     51	KNAV_QUEUE_DISABLE_NOTIFY,
     52	KNAV_QUEUE_GET_COUNT
     53};
     54
     55/* Queue notifier callback prototype */
     56typedef void (*knav_queue_notify_fn)(void *arg);
     57
     58/**
     59 * struct knav_queue_notify_config:	Notifier configuration
     60 * @fn:					Notifier function
     61 * @fn_arg:				Notifier function arguments
     62 */
     63struct knav_queue_notify_config {
     64	knav_queue_notify_fn fn;
     65	void *fn_arg;
     66};
     67
     68void *knav_queue_open(const char *name, unsigned id,
     69					unsigned flags);
     70void knav_queue_close(void *qhandle);
     71int knav_queue_device_control(void *qhandle,
     72				enum knav_queue_ctrl_cmd cmd,
     73				unsigned long arg);
     74dma_addr_t knav_queue_pop(void *qhandle, unsigned *size);
     75int knav_queue_push(void *qhandle, dma_addr_t dma,
     76				unsigned size, unsigned flags);
     77
     78void *knav_pool_create(const char *name,
     79				int num_desc, int region_id);
     80void knav_pool_destroy(void *ph);
     81int knav_pool_count(void *ph);
     82void *knav_pool_desc_get(void *ph);
     83void knav_pool_desc_put(void *ph, void *desc);
     84int knav_pool_desc_map(void *ph, void *desc, unsigned size,
     85					dma_addr_t *dma, unsigned *dma_sz);
     86void *knav_pool_desc_unmap(void *ph, dma_addr_t dma, unsigned dma_sz);
     87dma_addr_t knav_pool_desc_virt_to_dma(void *ph, void *virt);
     88void *knav_pool_desc_dma_to_virt(void *ph, dma_addr_t dma);
     89bool knav_qmss_device_ready(void);
     90
     91#endif /* __SOC_TI_KNAV_QMSS_H__ */