Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.8 83 lines 2.7 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Keystone Navigator Queue Management Sub-System header 4 * 5 * Copyright (C) 2014 Texas Instruments Incorporated - https://www.ti.com 6 * Author: Sandeep Nair <sandeep_n@ti.com> 7 * Cyril Chemparathy <cyril@ti.com> 8 * Santosh Shilimkar <santosh.shilimkar@ti.com> 9 */ 10 11#ifndef __SOC_TI_KNAV_QMSS_H__ 12#define __SOC_TI_KNAV_QMSS_H__ 13 14#include <linux/err.h> 15#include <linux/time.h> 16#include <linux/atomic.h> 17#include <linux/device.h> 18#include <linux/fcntl.h> 19#include <linux/dma-mapping.h> 20 21/* queue types */ 22#define KNAV_QUEUE_QPEND ((unsigned)-2) /* interruptible qpend queue */ 23#define KNAV_QUEUE_ACC ((unsigned)-3) /* Accumulated queue */ 24#define KNAV_QUEUE_GP ((unsigned)-4) /* General purpose queue */ 25 26/* queue flags */ 27#define KNAV_QUEUE_SHARED 0x0001 /* Queue can be shared */ 28 29/** 30 * enum knav_queue_ctrl_cmd - queue operations. 31 * @KNAV_QUEUE_GET_ID: Get the ID number for an open queue 32 * @KNAV_QUEUE_FLUSH: forcibly empty a queue if possible 33 * @KNAV_QUEUE_SET_NOTIFIER: Set a notifier callback to a queue handle. 34 * @KNAV_QUEUE_ENABLE_NOTIFY: Enable notifier callback for a queue handle. 35 * @KNAV_QUEUE_DISABLE_NOTIFY: Disable notifier callback for a queue handle. 36 * @KNAV_QUEUE_GET_COUNT: Get number of queues. 37 */ 38enum knav_queue_ctrl_cmd { 39 KNAV_QUEUE_GET_ID, 40 KNAV_QUEUE_FLUSH, 41 KNAV_QUEUE_SET_NOTIFIER, 42 KNAV_QUEUE_ENABLE_NOTIFY, 43 KNAV_QUEUE_DISABLE_NOTIFY, 44 KNAV_QUEUE_GET_COUNT 45}; 46 47/* Queue notifier callback prototype */ 48typedef void (*knav_queue_notify_fn)(void *arg); 49 50/** 51 * struct knav_queue_notify_config: Notifier configuration 52 * @fn: Notifier function 53 * @fn_arg: Notifier function arguments 54 */ 55struct knav_queue_notify_config { 56 knav_queue_notify_fn fn; 57 void *fn_arg; 58}; 59 60void *knav_queue_open(const char *name, unsigned id, 61 unsigned flags); 62void knav_queue_close(void *qhandle); 63int knav_queue_device_control(void *qhandle, 64 enum knav_queue_ctrl_cmd cmd, 65 unsigned long arg); 66dma_addr_t knav_queue_pop(void *qhandle, unsigned *size); 67int knav_queue_push(void *qhandle, dma_addr_t dma, 68 unsigned size, unsigned flags); 69 70void *knav_pool_create(const char *name, 71 int num_desc, int region_id); 72void knav_pool_destroy(void *ph); 73int knav_pool_count(void *ph); 74void *knav_pool_desc_get(void *ph); 75void knav_pool_desc_put(void *ph, void *desc); 76int knav_pool_desc_map(void *ph, void *desc, unsigned size, 77 dma_addr_t *dma, unsigned *dma_sz); 78void *knav_pool_desc_unmap(void *ph, dma_addr_t dma, unsigned dma_sz); 79dma_addr_t knav_pool_desc_virt_to_dma(void *ph, void *virt); 80void *knav_pool_desc_dma_to_virt(void *ph, dma_addr_t dma); 81bool knav_qmss_device_ready(void); 82 83#endif /* __SOC_TI_KNAV_QMSS_H__ */